Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-11-2007
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Poder: 27
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Me ha costado, pero lo he encontrado (para ello he tenido que reproducir lo que creo que has hecho):
Código Delphi [-]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
                              Shift: TShiftState);
begin
   case Key of
  ......
    vk_space  : disparo    := true;
  end;
end;

procedure TForm1.RDisparoTimer(Sender: TObject);
begin
  if disparo then
  begin
    Misil.Visible := True;
    Misil.Left    :=  Misil.Left +5;
  end;
end;

procedure TForm1.MisilClick(Sender: TObject);
begin
  Misil.Top     := Avion.Top +20;
  Misil.Left    := Avion.Left +100;
end;

Veamos: por un lado le estás diciendo que si pulsas la barra espaciadora, "Disparo" es cierto. Luego le dices que si "Disparo" es cierto, entonces mueva la etiqueta misil cada X tiempo. Para terminar le dices que, si pulsas con el ratón sobre la etiqueta entonces mueva dicha etiqueta cerca del avión.

La cuestión es que no le dices dónde ha de ponerse el misil cuando disparas, sino cuando pulsas la etiqueta, que no es visible y, encima, se mueve. Por eso "no lo ves".

Un aviso, por si te interesa: el enfoque que le estás dando no es correcto, ya que los componentes que utilizas están preparados para hacer ventanas con botones, iconos y etiquetas, no para hacer juegos y menos para hacer juegos interactivos. Ya sé que es por cuestiones de estudios, pero si de verdad te interesa hacer juegos, echa un vistazo a este hilo. Te prevengo que el ejemplo es muy diferente a lo que estás haciendo.
Responder Con Cita
  #2  
Antiguo 15-11-2007
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 26
seoane Va por buen camino
Aquí tienes otro ejemplo de juego MUY simple, pero entretenido

http://www.clubdelphi.com/foros/show...5&postcount=76
Responder Con Cita
  #3  
Antiguo 16-11-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
j_flores3000,
Estuve unos minutos libre y bueno hice una demo algo similar a lo que tu necesitarías. Es un poquito más complicada pero creo que con lo que puedas ver del código notarás que lo simple puede ser complejo... considero que trates de entender no el código sino la lógica que es donde está el verdadero problema de tu aplicativo.

Y como te dijo Ñuño, si en alguna oportunidad decides probar dedicarte al mundo de los videos juegos puedes optar por emplear alegro.pas

Si tienes dudas aqui estaremos.

Saludos,
Archivos Adjuntos
Tipo de Archivo: zip Jueguito.zip (2,9 KB, 73 visitas)
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 21-11-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Hola j_flores3000,
Veo en otro hilo que pides ayuda. El tema lo puedes Y DEBES seguir tratando aquí ¿Porqué no pasaste por aqui y preguntaste?
¿Entendiste mi ejemplo? ¿Es demasiado complicado?

¿Porque no te tomas el tiempo suficiente para explicarte? Brindanos la mayor cantidad de información posible. ¿Lograste avanzar el algo? ¿Que estuviste probando?

Si no veo interés de tu parte por querer explicarte no creo que lleguemos a comprenderte.

La colisión se produce cuando dos (o más) elementos se chocan. O dicho de otro modo cuando desean ocupar una misma posición. Independientemente de si al menos uno de los objetos que intervienen en la colisión es inmovil, la colisión se cumple en base una condición:
La posición X e Y de en todo o parte de un objeto A es la misma posición X e Y de en todo o parte de un objeto B.

Por ejemplo un objeto A tiene un tamaño de 30x10, que está en posición [0,30] y un objeto B de tamaño 20x10 está en la posición [10,30] ¿Colisionan?
SI. Porque el objeto A ocupa las coordenadas [0,30], [30,10], [0,40] y [30,40] y el objeto B ocupa las coordenadas [10,30], [30,30], [10,40] y [30,40] Se observa que el objeto B invade casi la totalidad del objeto A, de hecho la única zona libre de A es la parte izquierda.
¿Como se obtienen estas coordenadas?
Sabiendo el largo y Alto de un objeto y la coordenada respecto a la posición de origen.

Las propiedades Left y Top del TImage, o de cualquier control ubican a dicho elemento respecto al origen del form. El eje y está invertido, en vez de subir (como el cartesiano), va bajando. La idea es que sabiendo su posición y su ancho se puede determinar cualquiera punto de sus esquinas:

Coordenada_Largo_x = Left + width
Coordenada_Alto_y = Top + Height

Entonces habrá colisión entre dos objetos (en este caso simple) cuando las coordenadas entre el largo y el ancho de los objetos sean concidentes. esto puede verse en el código que te expongo:

Código Delphi [-]
((ImgMisil.Left + ImgMisil.Width) >= ImgEnemigo.Left) AND
    ((ImgMisil.Top >= ImgEnemigo.Top) AND
    ((ImgMisil.Top + ImgMisil.Height) <=
    (ImgEnemigo.Top + ImgEnemigo.Height)))

La explicación es como sigue:
Código Delphi [-]
((ImgMisil.Left + ImgMisil.Width) >= ImgEnemigo.Left)
Verifico que la posición x del enemigo esté comprendida en la coordenada_largo_x del misil. Es decir si hay colisión sobre el EJE X
Código Delphi [-]
((ImgMisil.Top >= ImgEnemigo.Top)
Verifico que la posición y del enemigo esté comprendida en la posición y del misil. Es decir si hay colisión sobre el EJE Y

Código Delphi [-]
((ImgMisil.Top + ImgMisil.Height) <=
(ImgEnemigo.Top + ImgEnemigo.Height)))
Me aseguro que el alto del misil (coordenada_alto_y) sea coincidente con el alto del enemigo (coordenada_alto_y). La condición anterior es NECESESARIA pero no suficiente. Ya que puede darse el caso de que el misil haya pasado por debajo del enemigo.

Mi código puede mejorarse, seguro que si. No es el más bello... pero la idea y mi intensión no es de llenarte de código y de comentarios. Sino forzarte a ver el problema desde el punto de la lógica (es a propósito la ausencia de comentarios), que tu logres ver al problema no como una necesidad de programación y centrado en el código. Si te ha costado más de lo normal, mis disculpas. No medí la dificultad del problema.

Tu problema no es de codificación sino de lógica. Los juegos tienen más de lógica y matemática que cualquier otra cosa. Y Sabiendo que te estas iniciando, te recomiendo que entrenes y practiques más sobre este aspecto y no tanto en el código. La mayoría de los ejercicios que te darán en clases tienen mucho de lógica, algoritmos matemáticos... la idea no es aprenderse un lenguaje en produndidad, sino entrenar al cerebro a pensar abstractamente, comprender el problema y encontrar la manera de representarlo en la programación.

Considero que si te explicas bien te podremos ser de ayuda. No se de que otro modo explicarte cuando hay colisión. Si no me entiendes... disculpa, a veces no me se explicar.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 21-11-2007
Avatar de Ñuño Martínez
Ñuño Martínez Ñuño Martínez is offline
Moderador
 
Registrado: jul 2006
Ubicación: Ciudad Catedral, Españistán
Posts: 6.025
Poder: 27
Ñuño Martínez Tiene un aura espectacularÑuño Martínez Tiene un aura espectacular
Compañero [Delphius], has olvidado hacer un esquema para ilustrarlo mejor:
Código:
(x,y)
  +----------+
  |          |
  |          |
  |      +---------------------+
  |      |   |                 |
  |      |   |                 |
  +------|---+ (x + w, y + h)  |
         |                     |
         |                     |
         |                     |
         +---------------------+
Donde (x, y) es la posición del objeto y (w, h) es su ancho y su alto respectivamente (width, height).
Responder Con Cita
  #6  
Antiguo 21-11-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 27
Delphius Va camino a la fama
Pues si... queda mejor... no se me ocurrió hacerle un ejemplo visual.

Ahora espero que j_flores3000 no tome mal mis comentarios. Y que considere oportuno explicar mejor su problema.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #7  
Antiguo 21-11-2007
j_flores3000 j_flores3000 is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
j_flores3000 Va por buen camino
Gracias...Solo Gracias

Hola amigos...agradezco sus respuestas muy buenas!!! ya termine el juego y lo aprobe con diez. gracias por todo...
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
programa de juego en delphi sanchez_bc02 OOP 1 08-10-2007 00:15:36
Juego de la Oca en delphi james_dean OOP 3 10-06-2005 10:09:28
¡¡ ayuda a un novato en mysql+zeos+delphi !! miguelogm Conexión con bases de datos 1 14-03-2005 18:04:12
Novato en php? solicita ayuda? danytorres PHP 5 02-12-2003 09:47:11


La franja horaria es GMT +2. Ahora son las 07:53:06.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi