Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-11-2007
j_flores3000 j_flores3000 is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
j_flores3000 Va por buen camino
Exclamation Novato solicita ayuda..Juego en Delphi

Hola a todos. como ya aclare soy un novato en delphi. tengo que crear un juego para la escuela (1º año). la cuestion es que ya tengo todo armado. el juego se trata de un aviion que se va moviendo y cada vez que apreto espacio sale el misil para destruir a otros aviones. lo que no puedo hacer es que cuando apreto espacio ( esto lo se hacer vk_space) salga el misil del lugar donde este el avion que puede ser en cualquier lado....por favor ayudenme.
Responder Con Cita
  #2  
Antiguo 14-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Para hacer dicho avión hiciste alguna clase llamada TAvion o algo asi?

Si es asi, pues me imagino que debes tener algunas propiedades que indiquen la poscición en la que esta el avión y solo seria cuestión de crear un metodo dentro de la clase que dispare dicho cohete dependiendo de dichas propiedades.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 14-11-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Hola j_flores3000,
Bienvenido a Clubdelphi.

Como eres nuevo te recomiendo una leída a la guia de estilo.

Con respecto a tu problema. ¿Podrías por favor profundizar tu explicación y darnos mayores detalles?
Tu problema debe ser analizado desde dos puntos de vistas: lógico y de interfaz ¿en que área tienes problemas (aunque lo más seguro es que sea ambas)?

¿Cómo mueves el avión?¿Se trata de TImage con la figura del avión?¿Cómo estás representando el misíl?
¿El misil debe obedecer el principio de la físíca (caída libre)? ¿O se trata de los fantasiosos misiles laser que van derechito?
Debido a que no aportas detalles no puedo indicarte nada, te pido que tengas la amabilidad de explicar mejor tu problema. Y por favor, muestra parte del código para poder entenderte.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #4  
Antiguo 14-11-2007
j_flores3000 j_flores3000 is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
j_flores3000 Va por buen camino
Re::

Al avion lo hice con TImage y el misil con un TLabel.
me ayudarias un poco???
gracias...
si el misil es uno magic que sale derecho... te muestro mi codigo

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Avion: TImage;
RDisparo: TTimer;
Misil: TLabel;
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
procedure MisilClick(Sender: TObject);
procedure RDisparoTimer(Sender: TObject);


private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1 : TForm1;
//A_Arriba : boolean;
//A_Abajo : boolean;
//A_Izq : boolean;
//A_Der : boolean;
X_Avion : integer;
Y_Avion : integer;
Disparo : boolean;

implementation

{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin

ShowCursor(True);
VertScrollBar.Visible := False;
HorzScrollBar.Visible := False;
Color := clAqua;
//BorderStyle := bsNone;


//Ubicar Avion

Y_Avion := (ClientWidth div 2) - (Avion.Width div 2);
Avion.Top := Y_Avion;
avion.Left := 0;

end;



procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin

case Key of

vk_up : Avion.Top := Avion.Top -5;
vk_down : Avion.Top := Avion.Top +5;
vk_left : Avion.left := Avion.left -5;
vk_right : Avion.left := Avion.left +5;
vk_escape : Close;
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;

end.
Responder Con Cita
  #5  
Antiguo 14-11-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
flores3000,
Por lo que veo, puede que haya estos problemas:
1. Sólo se verá un sólo disparo
2. La velocidad del misil
3. Considerar el impacto contra el objetivo
4. Evitar que se pase de los bordes

Ahora no puedo analizar con profundidad el código, debo ausentarme por unas horas. Como te dije antes, si puedes profundizar más sobre el tema hazlo. Hay cosas que considerar que no están en la explicación inicial, sería muy útil que cuanto más detalles des a conocer sobre el juego y de tus problemas va a ser más fácil ayudarte.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #6  
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.000
Poder: 25
Ñ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.
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #7  
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: 24
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
  #8  
Antiguo 16-11-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
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, 71 visitas)
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #9  
Antiguo 21-11-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
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
  #10  
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.000
Poder: 25
Ñ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).
__________________
Proyectos actuales --> Allegro 5 Pascal ¡y Delphi!|MinGRo Game Engine
Responder Con Cita
  #11  
Antiguo 21-11-2007
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
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
  #12  
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
  #13  
Antiguo 21-11-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por j_flores3000 Ver Mensaje
Hola amigos...agradezco sus respuestas muy buenas!!! ya termine el juego y lo aprobe con diez. gracias por todo...
Bueno Jenny, sería chevere que nos mostraras el jueguito, seguramente nos divertiriamos un rato jugando .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #14  
Antiguo 21-11-2007
j_flores3000 j_flores3000 is offline
Miembro
 
Registrado: nov 2007
Posts: 40
Poder: 0
j_flores3000 Va por buen camino
Cita:
Empezado por jhonny Ver Mensaje
Bueno Jenny, sería chevere que nos mostraras el jueguito, seguramente nos divertiriamos un rato jugando .
CHe jhonny me llamo Juan...Y mi apellido es flores!!!...ya les paso el game!
Responder Con Cita
  #15  
Antiguo 01-12-2007
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
y el juego}???????????
Responder Con Cita
  #16  
Antiguo 26-12-2007
alexxx alexxx is offline
Registrado
 
Registrado: dic 2007
Posts: 5
Poder: 0
alexxx Va por buen camino
por favor Ayuda urgente!!!

q tal eh leido aki q manejan algo similar al problema q yo tengo no domino el programa este el delphi por eso necesito q me ayuden porq sino reprovare mi curso... el problema q tengo es q me han dejado un jueguito de trabajo q ya lo tengo hecho pero me han pedido q le aumente algunas cosillas mas q son:
poner una opcion q aumente o disminuya la velocidad del avion a eleccion de cada uno y otra q el puntaje cuando llegue a una cantidad determinada por ejemplo 100 aparesca un aviso q diga ganaste! y salga un boton para aceptar y se cierre el programa o el juego. solo me falta eso si fueran tan amables de ayudarme les estare eternamente agradecido mi ultimo dia para presentar este trabajo es mañana miercoles 26/12/07 todo el dia, por favor ruego me ayuden porq es de vida o muerte............................
aki dejo el juego para q lo miren y entiendan mi explicacion pesa un poco asi q lo subi a otro sitio ahi tienen la url para bajarlo espero puedan construirlo esas dos cosas q me faltan...........................

http://www.fileden.com/files/2007/3/...JO%20FINAL.zip
Responder Con Cita
  #17  
Antiguo 26-12-2007
alexxx alexxx is offline
Registrado
 
Registrado: dic 2007
Posts: 5
Poder: 0
alexxx Va por buen camino
por favor Ayuda urgente respondan!!!!

por favor Ayuda urgente!!!
q tal eh leido aki q manejan algo similar al problema q yo tengo no domino el programa este el delphi por eso necesito q me ayuden porq sino reprovare mi curso... el problema q tengo es q me han dejado un jueguito de trabajo q ya lo tengo hecho pero me han pedido q le aumente algunas cosillas mas q son:
poner una opcion q aumente o disminuya la velocidad del avion a eleccion de cada uno y otra q el puntaje cuando llegue a una cantidad determinada por ejemplo 100 aparesca un aviso q diga ganaste! y salga un boton para aceptar y se cierre el programa o el juego. solo me falta eso si fueran tan amables de ayudarme les estare eternamente agradecido mi ultimo dia para presentar este trabajo es mañana miercoles 26/12/07 todo el dia, por favor ruego me ayuden porq es de vida o muerte............................
aki dejo el juego para q lo miren y entiendan mi explicacion pesa un poco asi q lo subi a otro sitio ahi tienen la url para bajarlo espero puedan construirlo esas dos cosas q me faltan...........................


http://www.fileden.com/files/2007/3/...JO%20FINAL.zip
Responder Con Cita
  #18  
Antiguo 26-12-2007
alexxx alexxx is offline
Registrado
 
Registrado: dic 2007
Posts: 5
Poder: 0
alexxx Va por buen camino
q tal eh leido aki q manejan algo similar al problema q yo tengo no domino el programa este el delphi por eso necesito q me ayuden porq sino reprovare mi curso... el problema q tengo es q me han dejado un jueguito de trabajo q ya lo tengo hecho pero me han pedido q le aumente algunas cosillas mas q son:
poner una opcion q aumente o disminuya la velocidad del avion a eleccion de cada uno y otra q el puntaje cuando llegue a una cantidad determinada por ejemplo 100 aparesca un aviso q diga ganaste! y salga un boton para aceptar y se cierre el programa o el juego. solo me falta eso si fueran tan amables de ayudarme les estare eternamente agradecido mi ultimo dia para presentar este trabajo es mañana miercoles 26/12/07 todo el dia, por favor ruego me ayuden porq es de vida o muerte............................
aki dejo el juego para q lo miren y entiendan mi explicacion pesa un poco asi q lo subi a otro sitio ahi tienen la url para bajarlo espero puedan construirlo esas dos cosas q me faltan...........................

http://www.fileden.com/files/2007/3/...37;20FINAL.zip
Responder Con Cita
  #19  
Antiguo 26-12-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Hola alexxxx,
tanto como que es de vida o muerte ....

Lo más que ocurrirá será que suspenderás la asignatura .

Imagino que estarás comiendote el código de lo que tienes porque sino, lo llevas chungo.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #20  
Antiguo 26-12-2007
alexxx alexxx is offline
Registrado
 
Registrado: dic 2007
Posts: 5
Poder: 0
alexxx Va por buen camino
alexxx

q tal segun lo q tengo entendido lo q me falta es algo simple pero q yo no puedo deducir o entender aun.... podran ayudarme???
Responder Con Cita
Respuesta



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 17:57:22.


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