¿ Libreria SDL ?
#1 Guest_Jose Fco_*
Escrito 15 diciembre 2008 - 06:59
Aqui el enlace:
http://delphiallimit...earch?q=aviones
Me gustaria poder entender esto.Creo que es algo que nos ayudaria a crear mejores juegos.
Un Saludo.
#2
Escrito 15 diciembre 2008 - 07:15
Saludos.
#3 Guest_Jose Fco_*
Escrito 15 diciembre 2008 - 07:47
Las librerías SDL son archivos DLL donde lo agregas en las units y utilizas las funciones hechas para ese tipo de programación, como si se tratase de un componente externo , mi explicaión es un poco burdo que alguien más le explique al colega José "El niño" Francisco .
Saludos.
jajajajajaja te quedo buena esa.Creo que despues de cierta edad regresamos a la niñes.(¿Sera esto lo que nos esta pasando Carlos?)
Un Saludo.
#4 Guest_Jose Fco_*
Escrito 15 diciembre 2008 - 03:39
Un Saludo.
#5 Guest_Jose Fco_*
Escrito 20 diciembre 2008 - 05:41
Tengo este programa de un juego y el ejecutable trabaja bien, pero no puedo copilar el codigo fuente que esta en este enlace:
http://rapidshare.co...de_SDL.zip.html
No entiendo que pasa. A ver los maestros si me pueden hechar una mano en esto.
Un Saludo.
#6
Escrito 21 diciembre 2008 - 07:28
Saludos.
#7 Guest_Jose Fco_*
Escrito 21 diciembre 2008 - 08:08
Hola José, lo acabo de descargar, pues sí tienes razón no se compila, las razones son las siguientes, o le falta el archivo SDL.DCU y/o o te falta instalar los componentes de SDL. 8-)
Saludos.
Hola Fernando, gracias por contestar. Instale unos componentes SDL, pero parece que no son esos.Estoy tratando de encontrar los correctos, porque a partir de estos programas de juegos se pueden hacer algunas cosas mas.
Un Saludo.
#8
Escrito 21 diciembre 2008 - 08:24
Y nos bajamos de Internet las librerías dinámicas para descomprimirlas al lado del ejecutable:
http://www.libsdl.or...1.2.8-win32.zip
También necesitamos bajarnos de Internet la librería dinámica SDL_Image.dll para descomprimirla al lado de nuestro ejecutable. Aquí tenéis el acceso directo para su descarga:
http://www.libsdl.or...1.2.6-win32.zip
También necesitamos bajarnos de Internet la DLL donde está esta librería y guardarla en el directorio de nuestra aplicación:
http://www.libsdl.or...2.0.9-win32.zip
Salud OS
#9 Guest_Jose Fco_*
Escrito 21 diciembre 2008 - 11:29
Es cuestion de seguirle buscando, se tiene que dejar el condenado.
Un Saludo.
#10 Guest_Jose Fco_*
Escrito 21 diciembre 2008 - 02:40
program juego; uses ExceptionLog, Windows, Dialogs, SysUtils, UJuego in 'UJuego.pas', UArcade in 'UArcade.pas';
Aqui se detiene de copilar y me da el siguiente error:
File not found:'ExceptionLog.dcu'
Un Saludo.
#11
Escrito 21 diciembre 2008 - 02:55
#12 Guest_Jose Fco_*
Escrito 21 diciembre 2008 - 03:10
Ahora me dice que no encuentra 'sdl.dcu'.
uses Windows, Dialogs, SysUtils, UJuego in 'UJuego.pas', UArcade in 'UArcade.pas';
y apunta aqui, a esta ultima linea del uses:
UArcade in 'UArcade.pas'
Ese file lo tengo en el mismo file del juego, no entiendo que pasa.
Un Saludo.
#13 Guest_Jose Fco_*
Escrito 21 diciembre 2008 - 03:12
unit UArcade; interface uses SysUtils, UJuego, SDL, sdl_ttf; type TDisparo = record x, y: Integer; bActivo: Boolean; end; TEnemigo = record x, y: Integer; bActivo, bExplotando: Boolean; iTmpExplosion: UInt32; end; var Avion, Fondo, Disparo, Enemigo, Explosion: TSprite; Disparos: array[1..10] of TDisparo; iTmpDisparo: UInt32; Enemigos: array[1..10] of TEnemigo; iTmpEnemigos: UInt32; iScroll: Integer; Verdana: PTTF_Font; Blanco: TSDL_Color = ( r: $FF; g: $FF; b: $FF; unused: 0 ); rPuntuacion: Real; procedure CargarSprites; procedure DestruirSprites; procedure DibujarSprites; procedure ControlarEventos; procedure Disparar; procedure ControlarDisparos; procedure ControlarEnemigos; implementation procedure CargarSprites; begin Avion := TSprite.Create; Avion.x := 273; Avion.y := 204; Avion.CargarSuperficie( ExtractFilePath( ParamStr( 0 ) ) + 'avion.bmp' ); Fondo := TSprite.Create; Fondo.CargarSuperficie( ExtractFilePath( ParamStr( 0 ) ) + 'fondo.bmp' ); Disparo := TSprite.Create; Disparo.CargarSuperficie( ExtractFilePath( ParamStr( 0 ) ) + 'disparo.bmp' ); Enemigo := TSprite.Create; Enemigo.CargarSuperficie( ExtractFilePath( ParamStr( 0 ) ) + 'enemigo.bmp' ); Explosion := TSprite.Create; Explosion.CargarSuperficie( ExtractFilePath( ParamStr( 0 ) ) + 'explosion.bmp' ); Explosion.bSubsprites := True; Explosion.iAnchoSub := 95; Explosion.iAltoSub := 73; Explosion.iSubX := 0; Explosion.iSubY := 0; Verdana := CrearFuente( 'verdana.ttf', 20 ); end; procedure DestruirSprites; begin EliminarFuente( Verdana ); Avion.Free; Fondo.Free; Disparo.Free; Enemigo.Free; Explosion.Free; end; procedure DibujarSprites; begin // Parte inferior del scroll CopiarImagen( Fondo.Superficie, Pantalla, 0, 0, 0, iScroll, 640, 480 - iScroll ); // Parte superior del scroll CopiarImagen( Fondo.Superficie, Pantalla, 0, 480 - iScroll, 0, 0, 640, iScroll ); // Movemos el fondo hacia abajo Inc( iScroll ); if iScroll > 480 then iScroll := 0; Avion.Dibujar; ControlarDisparos; ControlarEnemigos; EscribirTexto( Pantalla, 450, 0, 'Puntuación: ' + FormatFloat( '0000', rPuntuacion ), Verdana, Blanco ); end; procedure ControlarEventos; begin if ( Teclado.bDerecha or Joystick.bDerecha ) and ( Avion.x < 545 ) then Inc( Avion.x, 5 ); if ( Teclado.bIzquierda or Joystick.bIzquierda ) and ( Avion.x > 0 ) then Dec( Avion.x, 5 ); if ( Teclado.bArriba or Joystick.bArriba ) and ( Avion.y > 0 ) then Dec( Avion.y, 5 ); if ( Teclado.bAbajo or Joystick.bAbajo ) and ( Avion.y < 407 ) then Inc( Avion.y, 5 ); // Movemos el avión por el ratón sólo si lo ha movido el usuario if ( Raton.ux <> Raton.x ) or ( Raton.uy <> Raton.y ) then begin Avion.x := Raton.x; Avion.y := Raton.y; if Avion.x > 545 then Avion.x := 545; if Avion.y > 407 then Avion.y := 407; Raton.ux := Raton.x; Raton.uy := Raton.y; end; if Teclado.bEspacio or Raton.bIzquierdo or Joystick.Boton[0] then Disparar; end; procedure Disparar; var i: UInt32; begin if SDL_GetTicks - iTmpDisparo < 150 then Exit; iTmpDisparo := SDL_GetTicks; // Buscamos un disparo que no esté activo i := 1; while Disparos[i].bActivo and ( i < 10 ) do Inc( i ); // ¿ha encontrado un disparo no activo? if not Disparos[i].bActivo then begin // Lo activamos Disparos[i].bActivo := True; Disparos[i].x := Avion.x + 29; Disparos[i].y := Avion.y - 20; end; end; procedure ControlarDisparos; var i, j: Integer; begin for i := 1 to 10 do if Disparos[i].bActivo then begin Disparo.x := Disparos[i].x; Disparo.y := Disparos[i].y; Disparo.Dibujar; Dec( Disparos[i].y, 20 ); if Disparos[i].y < -20 then Disparos[i].bActivo := False; for j := 1 to 10 do if Enemigos[j].bActivo then if ( Disparos[i].x + 16 >= Enemigos[j].x ) and ( Disparos[i].x + 16 <= Enemigos[j].x + 95 ) and ( Disparos[i].y + 9 >= Enemigos[j].y ) and ( Disparos[i].y + 9 <= Enemigos[j].y + 73 ) then begin Enemigos[j].bActivo := False; Enemigos[j].bExplotando := True; Enemigos[j].iTmpExplosion := SDL_GetTicks; Disparos[i].bActivo := False; rPuntuacion := rPuntuacion + 1; end; end; end; procedure ControlarEnemigos; var i: Integer; iTmpTranscurrido: UInt32; begin // Cada 3 segundos saco un nuevo enemigo if SDL_GetTicks - iTmpEnemigos > 1000 then begin Randomize; iTmpEnemigos := SDL_GetTicks; for i := 1 to 10 do if not Enemigos[i].bActivo and not Enemigos[i].bExplotando then begin Enemigos[i].bActivo := True; Enemigos[i].x := Random( 550 ) + 10; Enemigos[i].y := -73; break; end; end; for i := 1 to 10 do begin if Enemigos[i].bActivo then begin Inc( Enemigos[i].y, 3 ); if Enemigos[i].y > 480 then Enemigos[i].bActivo := False; // Dibujamos el sprite del enemigo en pantalla Enemigo.x := Enemigos[i].x; Enemigo.y := Enemigos[i].y; Enemigo.Dibujar; end; if Enemigos[i].bExplotando then begin iTmpTranscurrido := SDL_GetTicks - Enemigos[i].iTmpExplosion; if iTmpTranscurrido < 100 then Explosion.iSubX := 0 else if ( iTmpTranscurrido >= 100 ) and ( iTmpTranscurrido < 200 ) then Explosion.iSubX := 1 else if ( iTmpTranscurrido >= 200 ) and ( iTmpTranscurrido < 300 ) then Explosion.iSubX := 2 else Explosion.iSubX := 3; Explosion.x := Enemigos[i].x; Explosion.y := Enemigos[i].y; Explosion.Dibujar; if iTmpTranscurrido > 400 then Enemigos[i].bExplotando := False; end; end; end; end.
Un Saludo.
#14
Escrito 22 diciembre 2008 - 07:54
#15 Guest_Jose Fco_*
Escrito 22 diciembre 2008 - 01:39
en el "library path" esta agregada la ruta donde tienes los archivos del SDL????
Sabes que he tratado de mirar a ver donde este alguna direccion y pues no encuentro nada.
Un Saludo.
#16
Escrito 22 diciembre 2008 - 03:37
Tools
--> Enviroment options
--> Pestaña "Library"
--> "Library Path"
#17 Guest_Jose Fco_*
Escrito 22 diciembre 2008 - 04:20
Un Saludo.
#18
Escrito 08 enero 2009 - 04:31
* Bajarte las DLL del SDL: fijate bien que el proyecto utiliza varias, la SDL básica + Graficos + Sonido + Texto
* Bajarte las cabeceras traducidas a Delphi
* Definir el vínculo del proyecto a la biblioteca SDL: Project->Options->Directories/Conditional->Search PAth
Yo lo construi siguiendo los tutoriales y me funciona, te paso el link: http://delphiallimit...ch/label/juegos
Leelos porque estan muy completos, hay un juego de plataformas tambien.
Saludos,
#19 Guest_Jose Fco_*
Escrito 08 enero 2009 - 03:22
Bienvenido!
Un Saludo.