Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   como Hacer que un TImage siga a un Timage? (https://www.clubdelphi.com/foros/showthread.php?t=54619)

j_flores3000 25-03-2008 18:04:57

como Hacer que un TImage siga a un Timage?
 
Bueno la pregunta es esa: como Hacer que un TImage siga a un Timage?, osea que yo controle uno de esos dos Timage y el otro lo persiga. Gracias

ElDioni 26-03-2008 08:41:00

¿Qué?, quiero decir, explica un poco más lo que quieres hacer, porque a lo mejor has sido demasiado escueto.

Neftali [Germán.Estévez] 26-03-2008 10:26:08

Cita:

Empezado por j_flores3000 (Mensaje 275138)
Bueno la pregunta es esa: como Hacer que un TImage siga a un Timage?

En mi página web, en la sección de ejemplos, hay uno titulado "Crear/destruir componentes (imagenes) en Runtime y moverlas con el ratón". Está con código, así que ahí puedes ver cómo mover un TImage utilizando el ratón. Hacer que el otro TImage lo siga no debería ser muy difícil modificándole las propiedades Left y Top.

Ñuño Martínez 26-03-2008 10:32:22

Cinco a uno a que quieres hacer un juego. :cool:

Si es así, olvidate del VCL y utilizar una librería de juegos tal como Allegro.pas. Te facilitará mucho la vida.

j_flores3000 26-03-2008 18:50:42

La cuestion es que es un juego de primer año que nos piden con labels y timage. si en cuestion es que por ejemplo tengo un personaje1(p1) y un personaje2(p2). Bueno yo controlaria el 1 pero el 2 siempre me persiguie a donde yo estoy se entiende??

Delphius 26-03-2008 19:02:16

Hola j_flores3000,
Lo que deseas hacer es algo relativamente simple, el truco está en emplear los eventos OnMouseXXX.

Para ubicar un TImage, cerca del otro debes valerte de la posición que este ocupa (Left y Top) como así también su tamaño (Width y Higth).

Para darte una idea, he aquí un esquema:

Código:


+--------+   
|(l, t)  |
|        |
|        |
+--------+
          (l + w, t + h)

Dependiendo de la capacidad de movimiento tendrás que ubicar al "acechador" más o menos cerca de las coordenadas que esté tu personaje.

No se si se entiende la idea. ¿Porqué no intentas hacerlo tu mismo y nos cuentas como vas a medida que avanzas o te surjen dudas?

Saludos,

j_flores3000 26-03-2008 22:13:26

Cita:

Empezado por Delphius (Mensaje 275425)
Hola j_flores3000,
Lo que deseas hacer es algo relativamente simple, el truco está en emplear los eventos OnMouseXXX.

Para ubicar un TImage, cerca del otro debes valerte de la posición que este ocupa (Left y Top) como así también su tamaño (Width y Higth).

Para darte una idea, he aquí un esquema:

Código:

+--------+   
|(l, t)  |
|        |
|        |
+--------+
        (l + w, t + h)

Dependiendo de la capacidad de movimiento tendrás que ubicar al "acechador" más o menos cerca de las coordenadas que esté tu personaje.

No se si se entiende la idea. ¿Porqué no intentas hacerlo tu mismo y nos cuentas como vas a medida que avanzas o te surjen dudas?

Saludos,

Osea eso si lo se hacer tambien se mover a los elementos con el teclado respondiendo a eventos, etc. Lo que no se hacer es como hacer que el acechador persiga (seguro con un Timer) persiga al otro aunque el personaje que yo controlo se mueve.

Delphius 27-03-2008 04:13:06

Cita:

Empezado por j_flores3000 (Mensaje 275496)
Osea eso si lo se hacer tambien se mover a los elementos con el teclado respondiendo a eventos, etc. Lo que no se hacer es como hacer que el acechador persiga (seguro con un Timer) persiga al otro aunque el personaje que yo controlo se mueve.

Bueno, tranquilo.
Eso ya nos dijiste... lo que tu no nos indicaste es como debe moverse, ¿Existe algún condición de movimiento? ¿Vaga libremente? Obedece una trayectoria "curva" sobre el objeto?O por el contario debe ser lineal? ¿Que tan cerca puede estar el "enemigo"?

Hay dos modos básicos de persecución:
1. Seguir la misma trayectoria.
2. Interceptar su trayectoria.

Suponiendo que X eres tu, e Y el enemigo, tenemos:
Para el primer caso algo como esto:
Código:

x
 x
  xx            xxx 
y    xxx    xxxxx 
 y      xxxxx      y
  yy            yy
    yyy    yyyyy
        yyyyy 

Este efecto es el que tienen algunos juegos de "atrapame si puedes", y es el efecto de estela o cola de algunos cursores. Básicamente lo que hace es imitar el movimiento.

Y para el segundo caso algo como esto:
Código:

x
 x
  x    xxx
  xxxx 
      y
  yyyy
  y
 y
y

Este es más elaborado y lo que busca es la menor ruta hacia el oponente, trata de ir prediciendo hacia donde se mueve el enemigo.

¿Cuál deseas?

Me llama la atención que digas que sabes moverlo, pero a su vez nos estás indicando que no sabes hacer que lo persiga....
No se a lo que quieres llegar... Tu mismo te haz dado la respuesta. Debes emplear un TTimer y dentro del evento OnTimer debes ir decrementando y/o incrementando la posición del enemigo según tu personaje se desplaze.

¿Porqué no nos muestra como vas haciendo? Esto será últil para ti, ya que en vez de estar regalandote algo e imponiendote un diseño te iremos guiando para que tu mismo encuentres la solución.

Si estás esperando un código de obsequio, de mi parte, vete olvidandote. No lo voy a hacer, si en cambio ofrezco mi ayuda a guiarte y aconsejarte sobre tu propio código.

Espero que no tomes a mal mis comentarios, pero si es que dices que sabes moverlo... entonces... ¿donde está el problema?:confused:

Como pista te digo que hay por los foros un ejemplo sencillo de un juego que hecho con TImages y TTimers, puedes estudiarlo y darte una ideas; a pesar de que no se ajusta a tus necesidades (perseguir) es útil para refrescar unos conceptos.

El problema al que muy seguramente te haz encontrado es del tipo lógico/matemático y no de programación. Es normal, yo diría más de lo normal. Ya lo he dicho muchas veces: Los juegos son mucha más lógica y matemática de lo que uno piensa...

Olvida los TImages, las propiedades y los eventos... piensa, ¿que haría tu, o como harías tu para perseguir a un ladrón? Piensa en un mapa, en coordenadas. ¿Que sucede cuando uno se desplaza de una posición a otra?

Te invito a tu expongas tus razonamientos y en base a ello ir ajustando las tuercas.

Saludos,

j_flores3000 27-03-2008 18:47:50

1 Archivos Adjunto(s)
ok gracias ya resolvi el problema. Era un problema mio aca dejo el codigo para esto por si alguien lo quiere y dejo un ejemplo con 2 labels en un rar
Código Delphi [-]
procedure TForm1.Timer1Timer(Sender: TObject);
begin
pertop:=image2.Top;
perleft:=image2.Left;
if image2.Top>image1.top then image1.Top:=image1.top+3 else
image1.Top:=image1.top-10;
if image2.left>image1.left then image1.left:=image1.left+3 else
image1.left:=image1.left-10;
end;
Gracias


La franja horaria es GMT +2. Ahora son las 23:11:07.

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