Ir al contenido



¿ Libreria SDL ?


  • Por favor identifícate para responder
18 respuestas en este tema

#1 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 15 diciembre 2008 - 06:59

No termino de entender que cosa es el bendito " SDL" ¿Es un componente que se le tiene que instalar al Delphi?

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 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.408 mensajes
  • LocationRepública Dominicana

Escrito 15 diciembre 2008 - 07:15

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 :D :D :p.

Saludos.
  • 0

#3 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

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 :D :D :p.

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?) :D :D :D

Un Saludo.

#4 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 15 diciembre 2008 - 03:39

Si la verdad hace falta algun maestro que nos explique como trabaja eso. ;) Me gustaria poder hacer ese juego de aviones que esta en ese enlace.


Un Saludo.

#5 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 20 diciembre 2008 - 05:41

Bueno continuando con SDL.

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 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.408 mensajes
  • LocationRepública Dominicana

Escrito 21 diciembre 2008 - 07:28

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.
  • 0

#7 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

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 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 13.999 mensajes
  • LocationMéxico

Escrito 21 diciembre 2008 - 08:24

Por lo que veo hay que bajar varias DLL's

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
  • 0

#9 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 21 diciembre 2008 - 11:29

No se carnal, algo le falta a ese fuente que no copila.Uno de los errores es pues que no encuentra el file y ese file existe entre el paquete de files.
Es cuestion de seguirle buscando, se tiene que dejar el condenado. :@


Un Saludo.

#10 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 21 diciembre 2008 - 02:40

Bueno asi esta la cosa.



delphi
  1. program juego;
  2.  
  3. uses
  4.   ExceptionLog,
  5.   Windows,
  6.   Dialogs,
  7.   SysUtils,
  8.   UJuego in 'UJuego.pas',
  9.   UArcade in 'UArcade.pas';



Aqui se detiene de copilar y me da el siguiente error:

File not found:'ExceptionLog.dcu'



Un Saludo.


#11 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.408 mensajes
  • LocationRepública Dominicana

Escrito 21 diciembre 2008 - 02:55

Quiere decir que no lo tienes, eliminalo del uses a ver qué sucede.
  • 0

#12 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 21 diciembre 2008 - 03:10

Hola Fernando.

Ahora me dice que no encuentra 'sdl.dcu'.



delphi
  1. uses
  2.   Windows,
  3.   Dialogs,
  4.   SysUtils,
  5.   UJuego in 'UJuego.pas',
  6.   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_*

Guest_Jose Fco_*
  • Visitante

Escrito 21 diciembre 2008 - 03:12

Este es el file:


delphi
  1. unit UArcade;
  2.  
  3. interface
  4.  
  5. uses SysUtils, UJuego, SDL, sdl_ttf;
  6.  
  7. type
  8.   TDisparo = record
  9.     x, y: Integer;
  10.     bActivo: Boolean;
  11.   end;
  12.  
  13.   TEnemigo = record
  14.     x, y: Integer;
  15.     bActivo, bExplotando: Boolean;
  16.     iTmpExplosion: UInt32;
  17.   end;
  18.  
  19. var
  20.   Avion, Fondo, Disparo, Enemigo, Explosion: TSprite;
  21.   Disparos: array[1..10] of TDisparo;
  22.   iTmpDisparo: UInt32;
  23.   Enemigos: array[1..10] of TEnemigo;
  24.   iTmpEnemigos: UInt32;
  25.   iScroll: Integer;
  26.   Verdana: PTTF_Font;
  27.   Blanco: TSDL_Color = ( r: $FF; g: $FF; b: $FF; unused: 0 );
  28.   rPuntuacion: Real;
  29.  
  30. procedure CargarSprites;
  31. procedure DestruirSprites;
  32. procedure DibujarSprites;
  33. procedure ControlarEventos;
  34. procedure Disparar;
  35. procedure ControlarDisparos;
  36. procedure ControlarEnemigos;
  37.  
  38. implementation
  39.  
  40. procedure CargarSprites;
  41. begin
  42.   Avion := TSprite.Create;
  43.   Avion.x := 273;
  44.   Avion.y := 204;
  45.   Avion.CargarSuperficie( ExtractFilePath( ParamStr( 0 ) ) + 'avion.bmp' );
  46.  
  47.   Fondo := TSprite.Create;
  48.   Fondo.CargarSuperficie( ExtractFilePath( ParamStr( 0 ) ) + 'fondo.bmp' );
  49.  
  50.   Disparo := TSprite.Create;
  51.   Disparo.CargarSuperficie( ExtractFilePath( ParamStr( 0 ) ) + 'disparo.bmp' );
  52.  
  53.   Enemigo := TSprite.Create;
  54.   Enemigo.CargarSuperficie( ExtractFilePath( ParamStr( 0 ) ) + 'enemigo.bmp' );
  55.  
  56.   Explosion := TSprite.Create;
  57.   Explosion.CargarSuperficie( ExtractFilePath( ParamStr( 0 ) ) + 'explosion.bmp' );
  58.   Explosion.bSubsprites := True;
  59.   Explosion.iAnchoSub := 95;
  60.   Explosion.iAltoSub := 73;
  61.   Explosion.iSubX := 0;
  62.   Explosion.iSubY := 0;
  63.   Verdana := CrearFuente( 'verdana.ttf', 20 );
  64. end;
  65.  
  66. procedure DestruirSprites;
  67. begin
  68.   EliminarFuente( Verdana );
  69.   Avion.Free;
  70.   Fondo.Free;
  71.   Disparo.Free;
  72.   Enemigo.Free;
  73.   Explosion.Free;
  74. end;
  75.  
  76. procedure DibujarSprites;
  77. begin
  78.   // Parte inferior del scroll
  79.   CopiarImagen( Fondo.Superficie, Pantalla, 0, 0, 0, iScroll, 640, 480 - iScroll );
  80.  
  81.   // Parte superior del scroll
  82.   CopiarImagen( Fondo.Superficie, Pantalla, 0, 480 - iScroll, 0, 0, 640, iScroll );
  83.  
  84.   // Movemos el fondo hacia abajo
  85.   Inc( iScroll );
  86.  
  87.   if iScroll > 480 then
  88.     iScroll := 0;
  89.  
  90.   Avion.Dibujar;
  91.   ControlarDisparos;
  92.   ControlarEnemigos;
  93.   EscribirTexto( Pantalla, 450, 0, 'Puntuación: ' +
  94.                 FormatFloat( '0000', rPuntuacion ), Verdana, Blanco );
  95. end;
  96.  
  97. procedure ControlarEventos;
  98. begin
  99.   if ( Teclado.bDerecha or Joystick.bDerecha ) and ( Avion.x < 545 ) then
  100.     Inc( Avion.x, 5 );
  101.  
  102.   if ( Teclado.bIzquierda or Joystick.bIzquierda ) and ( Avion.x > 0 ) then
  103.     Dec( Avion.x, 5 );
  104.  
  105.   if ( Teclado.bArriba or Joystick.bArriba ) and ( Avion.y > 0 ) then
  106.     Dec( Avion.y, 5 );
  107.  
  108.   if ( Teclado.bAbajo or Joystick.bAbajo ) and ( Avion.y < 407 ) then
  109.     Inc( Avion.y, 5 );
  110.  
  111.   // Movemos el avión por el ratón sólo si lo ha movido el usuario
  112.   if ( Raton.ux <> Raton.x ) or ( Raton.uy <> Raton.y ) then
  113.   begin
  114.     Avion.x := Raton.x;
  115.     Avion.y := Raton.y;
  116.  
  117.     if Avion.x > 545 then
  118.       Avion.x := 545;
  119.  
  120.     if Avion.y > 407 then
  121.       Avion.y := 407;
  122.  
  123.     Raton.ux := Raton.x;
  124.     Raton.uy := Raton.y;
  125.   end;
  126.  
  127.   if Teclado.bEspacio or Raton.bIzquierdo or Joystick.Boton[0] then
  128.     Disparar;
  129. end;
  130.  
  131. procedure Disparar;
  132. var
  133.   i: UInt32;
  134. begin
  135.   if SDL_GetTicks - iTmpDisparo < 150 then
  136.     Exit;
  137.  
  138.   iTmpDisparo := SDL_GetTicks;
  139.  
  140.   // Buscamos un disparo que no esté activo
  141.   i := 1;
  142.   while Disparos[i].bActivo and ( i < 10 ) do
  143.     Inc( i );
  144.  
  145.   // ¿ha encontrado un disparo no activo?
  146.   if not Disparos[i].bActivo then
  147.   begin
  148.     // Lo activamos
  149.     Disparos[i].bActivo := True;
  150.     Disparos[i].x := Avion.x + 29;
  151.     Disparos[i].y := Avion.y - 20;
  152.   end;
  153. end;
  154.  
  155. procedure ControlarDisparos;
  156. var
  157.   i, j: Integer;
  158. begin
  159.   for i := 1 to 10 do
  160.     if Disparos[i].bActivo then
  161.     begin
  162.       Disparo.x := Disparos[i].x;
  163.       Disparo.y := Disparos[i].y;
  164.       Disparo.Dibujar;
  165.  
  166.       Dec( Disparos[i].y, 20 );
  167.  
  168.       if Disparos[i].y < -20 then
  169.         Disparos[i].bActivo := False;
  170.  
  171.       for j := 1 to 10 do
  172.         if Enemigos[j].bActivo then
  173.           if ( Disparos[i].x + 16 >= Enemigos[j].x ) and
  174.             ( Disparos[i].x + 16 <= Enemigos[j].x + 95 ) and
  175.             ( Disparos[i].y + 9 >= Enemigos[j].y ) and
  176.             ( Disparos[i].y + 9 <= Enemigos[j].y + 73 ) then
  177.           begin
  178.             Enemigos[j].bActivo := False;
  179.             Enemigos[j].bExplotando := True;
  180.             Enemigos[j].iTmpExplosion := SDL_GetTicks;
  181.             Disparos[i].bActivo := False;
  182.             rPuntuacion := rPuntuacion + 1;
  183.           end;
  184.     end;
  185. end;
  186.  
  187. procedure ControlarEnemigos;
  188. var
  189.   i: Integer;
  190.   iTmpTranscurrido: UInt32;
  191. begin
  192.   // Cada 3 segundos saco un nuevo enemigo
  193.   if SDL_GetTicks - iTmpEnemigos > 1000 then
  194.   begin
  195.     Randomize;
  196.     iTmpEnemigos := SDL_GetTicks;
  197.  
  198.     for i := 1 to 10 do
  199.       if not Enemigos[i].bActivo and not Enemigos[i].bExplotando then
  200.       begin
  201.         Enemigos[i].bActivo := True;
  202.         Enemigos[i].x := Random( 550 ) + 10;
  203.         Enemigos[i].y := -73;
  204.         break;
  205.       end;
  206.   end;
  207.  
  208.   for i := 1 to 10 do
  209.   begin
  210.     if Enemigos[i].bActivo then
  211.     begin
  212.       Inc( Enemigos[i].y, 3 );
  213.  
  214.       if Enemigos[i].y > 480 then
  215.         Enemigos[i].bActivo := False;
  216.  
  217.       // Dibujamos el sprite del enemigo en pantalla
  218.       Enemigo.x := Enemigos[i].x;
  219.       Enemigo.y := Enemigos[i].y;
  220.       Enemigo.Dibujar;
  221.     end;
  222.  
  223.     if Enemigos[i].bExplotando then
  224.     begin
  225.       iTmpTranscurrido := SDL_GetTicks - Enemigos[i].iTmpExplosion;
  226.  
  227.       if iTmpTranscurrido < 100 then
  228.         Explosion.iSubX := 0
  229.       else
  230.         if ( iTmpTranscurrido >= 100 ) and ( iTmpTranscurrido < 200 ) then
  231.           Explosion.iSubX := 1
  232.         else
  233.           if ( iTmpTranscurrido >= 200 ) and ( iTmpTranscurrido < 300 ) then
  234.             Explosion.iSubX := 2
  235.           else
  236.             Explosion.iSubX := 3;
  237.  
  238.       Explosion.x := Enemigos[i].x;
  239.       Explosion.y := Enemigos[i].y;
  240.       Explosion.Dibujar;
  241.  
  242.       if iTmpTranscurrido > 400 then
  243.         Enemigos[i].bExplotando := False;
  244.     end;
  245.   end;
  246. end;
  247.  
  248. end.



Un Saludo.

#14 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 22 diciembre 2008 - 07:54

en el "library path" esta agregada la ruta donde tienes los archivos del SDL????
  • 0

#15 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

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 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 22 diciembre 2008 - 03:37

en el menu:

Tools
  --> Enviroment options
                              --> Pestaña "Library"
                                                    --> "Library Path"




  • 0

#17 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 22 diciembre 2008 - 04:20

Ok gracias compadre, dejame darle una miradita a eso.

Un Saludo.

#18 egbaquela

egbaquela

    Newbie

  • Miembros
  • Pip
  • 1 mensajes
  • LocationArgentina

Escrito 08 enero 2009 - 04:31

Estimado: estuve visitando la web de delphi al límite y por lo que creo te deben estar faltando alguna de las siguientes cosas:

  * 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,
  • 0

#19 Guest_Jose Fco_*

Guest_Jose Fco_*
  • Visitante

Escrito 08 enero 2009 - 03:22

Gracias por la informacion.
Bienvenido!


Un Saludo.