• Sábado 20 de Abril de 2024, 00:11

Autor Tema:  ¿como Utilizar El Reloj En Builder?  (Leído 2837 veces)

alucard0000

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
¿como Utilizar El Reloj En Builder?
« en: Miércoles 30 de Mayo de 2007, 17:40 »
0
Saludos!!!! B)

Necesito hacer un juego basico en un programa visual, lo estoy haciendo en builder, ya hice q se moviera una imagen con las teclas 4(izquierda),8(arriba),6(derecha),2(abajo),7(diagonal arriba izquierda),9(diagonal arriba derecha),1(diagonal abajo izquierda),3(diagonal abajo derecha), intento hacer que otra imagen este corriendo continuamente en la ventana pero no se como hacerle,
/////////////////////////////////////////////////////////////////////////////////////////
int x,aux;

Image3->Left=592;

for(aux=592;aux<=0;aux--)
 {
  Image3->Left=(Image3->Left)-1;
 }
/////////////////////////////////////////////////////////////////////////////////////////

Este es el codigo que utilizo para tratar de hacer q la imagen sea de derecha a izquierda pero no c si lo hace,pero es muy rapido y no se ve o no lo hace.

Intente meter un reloj para retrazar la ejecucion pero no supe como me prodrian ayudar????????

Tambien quisiera saber, si me pueden auxiliar, para que la imagen no sepase del margen de la ventana por q al presionar los botones sigue corriendo, pero ya fuera de la ventana, despues de llegar al margen.

de antemano,muchas gracias. :rolleyes:  :rolleyes:

Este es el codigo:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

int flag=0;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "PERFGRAP"
#pragma resource "*.dfm"
TForm1 *Form1;
int aux_izquierda=0,aux_arriba=0,aux_derecha=0,aux_abajo=0;
int aux_izq_arriba=0,aux_izq_abajo=0,aux_derecha_arriba=0,aux_derecha_abajo=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{

//mover el objeto a la izquierda
if(Key=='4')
  {

      if(Key =='4' && (((aux_izquierda%2)==0)))
       { Image2->Visible=false ;
        Image1->Visible=true ;
        Image1->Left=(Image2->Left)-5 ;
        aux_izquierda=aux_izquierda+1;
       }
      else
       {
        if(Key =='4'&& (((aux_izquierda%2)!=0)))
        Image1->Visible=false ;
        Image2->Visible=true ;
        Image2->Left=(Image1->Left)-10 ;
        aux_izquierda=aux_izquierda+1;
        }


  }

  //mover el objeto a la derecha
if(Key=='6')
{
  if(Key =='6' && (((aux_derecha%2)==0)))
       { Image2->Visible=false ;
        Image1->Visible=true ;
        Image1->Left=(Image2->Left)+5 ;
        aux_derecha=aux_derecha+1;
       }
  else
        {
         if(Key =='6'&& (((aux_derecha%2)!=0)))
        Image1->Visible=false ;
        Image2->Visible=true ;
        Image2->Left=(Image1->Left)+5 ;
        aux_derecha=aux_derecha+1;
        }
}
  //mover el objeto arriba
if(Key=='8')
{
  if(Key =='8' && (((aux_arriba%2)==0)))
       { Image2->Visible=false ;
        Image1->Visible=true ;
        Image1->Top=(Image2->Top)-5 ;
        aux_arriba=aux_arriba+1;
       }
   else
        {
         if(Key =='8'&& (((aux_arriba%2)!=0)))
        Image1->Visible=false ;
        Image2->Visible=true ;
        Image2->Top=(Image1->Top)-5 ;
        aux_arriba=aux_arriba+1;
        }
}
  //mover el objeto abajo

if(Key=='2')
{
  if(Key =='2' && (((aux_arriba%2)==0)))
       { Image2->Visible=false ;
        Image1->Visible=true ;
        Image1->Top=(Image2->Top)+5 ;
        aux_arriba=aux_arriba+1;
       }
   else
        {
         if(Key =='2'&& (((aux_arriba%2)!=0)))
        Image1->Visible=false ;
        Image2->Visible=true ;
        Image2->Top=(Image1->Top)+5 ;
        aux_arriba=aux_arriba+1;
        }
}
//mover el objeto izquierda arriba

if(Key=='7')
{
  if(Key =='7' && (((aux_izq_arriba%2)==0)))
       { Image2->Visible=false ;
        Image1->Visible=true ;
        Image1->Top=(Image2->Top)-5;
        Image1->Left=(Image2->Left)-5;
        aux_izq_arriba=aux_izq_arriba+1;
       }
   else
        {
         if(Key =='7'&& (((aux_izq_arriba%2)!=0)))
        Image1->Visible=false ;
        Image2->Visible=true ;
        Image2->Top=(Image1->Top)-5 ;
        Image2->Left=(Image1->Left)-5 ;
        aux_izq_arriba=aux_izq_arriba+1;
        }
}
//mover el objeto izquierda abajo
if(Key=='1')
{
  if(Key =='1' && (((aux_izq_abajo%2)==0)))
       { Image2->Visible=false ;
        Image1->Visible=true ;
        Image1->Top=(Image2->Top)+5;
        Image1->Left=(Image2->Left)-5;
        aux_izq_abajo=aux_izq_abajo+1;
       }
   else
        {
         if(Key =='1'&& (((aux_izq_abajo%2)!=0)))
        Image1->Visible=false ;
        Image2->Visible=true ;
        Image2->Top=(Image1->Top)+5 ;
        Image2->Left=(Image1->Left)-5 ;
        aux_izq_abajo=aux_izq_abajo+1;
        }
}
//mover el objeto derecha arriba
if(Key=='9')
{
  if(Key =='9' && (((aux_derecha_arriba%2)==0)))
       { Image2->Visible=false ;
        Image1->Visible=true ;
        Image1->Top=(Image2->Top)-5;
        Image1->Left=(Image2->Left)+5;
        aux_derecha_arriba=aux_derecha_arriba+1;
       }
   else
        {
         if(Key =='9'&& (((aux_derecha_arriba%2)!=0)))
        Image1->Visible=false ;
        Image2->Visible=true ;
        Image2->Top=(Image1->Top)-5 ;
        Image2->Left=(Image1->Left)+5 ;
        aux_derecha_arriba=aux_derecha_arriba+1;
        }
}

//mover el objeto derecha abajo
if(Key=='3')
{
  if(Key =='3' && (((aux_derecha_abajo%2)==0)))
       { Image2->Visible=false ;
        Image1->Visible=true ;
        Image1->Top=(Image2->Top)+5;
        Image1->Left=(Image2->Left)+5;
        aux_derecha_abajo=aux_derecha_abajo+1;
       }
   else
        {
         if(Key =='3'&& (((aux_derecha_abajo%2)!=0)))
        Image1->Visible=false ;
        Image2->Visible=true ;
        Image2->Top=(Image1->Top)+5 ;
        Image2->Left=(Image1->Left)+5 ;
        aux_derecha_abajo=aux_derecha_abajo+1;
        }
}
}
//---------------------------------------------------------------------------






void __fastcall TForm1::FormActivate(TObject *Sender)
{
int x,aux;
if (flag==1)
{
Image3->Left=592;

/*randomize();
x= random (100);*/
for(aux=592;aux<=0;aux--)
 {
  Image3->Left=(Image3->Left)-1;

 }
 }
}

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: ¿como Utilizar El Reloj En Builder?
« Respuesta #1 en: Miércoles 30 de Mayo de 2007, 17:55 »
0
¿Probaste con Sleep? Es una funcion de la API de Windows.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

alucard0000

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: ¿como Utilizar El Reloj En Builder?
« Respuesta #2 en: Miércoles 30 de Mayo de 2007, 18:11 »
0
Gracias por responder.

No la he probado,me podrias decir como la utilizo o como es su estructura???, por q no la habia escuchado.

muchisimas gracais ;)

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: ¿como Utilizar El Reloj En Builder?
« Respuesta #3 en: Miércoles 30 de Mayo de 2007, 20:07 »
0
Solo tiene un parametro que indica los milisegundos a esperar:

Sleep

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

weps84

  • Miembro MUY activo
  • ***
  • Mensajes: 138
    • Ver Perfil
Re: ¿como Utilizar El Reloj En Builder?
« Respuesta #4 en: Miércoles 30 de Mayo de 2007, 23:20 »
0
pana me imagino que te refieres al timer, puedes hacer lo siguiente, coloca una variable booleana que se llame por ejemplo teclado, que cuando sea verdadero haga todo el codigo que hiciste. ok entonces cuando se ejecute esas opciones por ejemplo a la izquierda, el timer tiene una propiedad llamada enabled, inicializala en true y que la variable teclado cambie a falso para que cuando muevas una tecla no haga nada, y cuando se ejecute el evento onTimer has que la propiedad enabled pase a falso y teclado a verdadero intentalo asi,  ahhhhh por defecto el timer en la propiedad enabled debe llevar falso.

alucard0000

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: ¿como Utilizar El Reloj En Builder?
« Respuesta #5 en: Jueves 31 de Mayo de 2007, 16:17 »
0
Muchisimas gracias a los dos, voy a probar y les informo que pasa.ok? muchas gracias :alien:

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: ¿como Utilizar El Reloj En Builder?
« Respuesta #6 en: Jueves 31 de Mayo de 2007, 16:25 »
0
De nada, si lo que queres es repetir una cierta accion cada X tiempo es mejor usar un timer pero si lo que queres es pausar la ejecucion durante X tiempo es mejor usar Sleep.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

alucard0000

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
Re: ¿como Utilizar El Reloj En Builder?
« Respuesta #7 en: Viernes 1 de Junio de 2007, 00:43 »
0
Buenas Tardes!!! B)

Ya probé el sleep, pero no me hace nada.

Mi idea del juego es:

Mover un objeto(muñeco o nave), que se mueva por el usuario y q al ir pasando el tiempo, que vayan pasando objetos, y si se llega a encontrarse una imagen con otra, que pierda,  :huh:  :lightsabre:

Ya logre hacer que se mueva la imagen de un lado a otro, de izquierda a derecha y esquinado, pero lo que no logro hacer es que se mueva el otro objeto(imagen) con la que puede chocar y perder.

Podrian ser tan amables de explicarme como le hago????? Por favor.

Muchas gracias!!! :)  :)

weps84

  • Miembro MUY activo
  • ***
  • Mensajes: 138
    • Ver Perfil
Re: ¿como Utilizar El Reloj En Builder?
« Respuesta #8 en: Martes 5 de Junio de 2007, 18:38 »
0
Viejo lo mas indicado es trabajar con un timmer, la llamada del teclado la haces con el evento onKeyDown, que tiene como parametro una variable Key, los valores los consigues en VirtualKeyCodes en la parte de ayuda y has lo que te habia dicho anterior mente

para validar el choque hay 2 maneras a mi punto de vista

por un matriz o por posiciones vas preguntando si la posicion de tu muñeco con el del enemigo, y con una matriz las rellenas con ceros para vacio, 1 para tu nave, 2 para los enemigos y vas validando la matriz

EI: Uno lo que eran dos mensajes.