SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: alucard0000 en Miércoles 30 de Mayo de 2007, 17:40

Título: ¿como Utilizar El Reloj En Builder?
Publicado por: alucard0000 en Miércoles 30 de Mayo de 2007, 17:40
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;

 }
 }
}
Título: Re: ¿como Utilizar El Reloj En Builder?
Publicado por: Eternal Idol en Miércoles 30 de Mayo de 2007, 17:55
¿Probaste con Sleep? Es una funcion de la API de Windows.
Título: Re: ¿como Utilizar El Reloj En Builder?
Publicado por: alucard0000 en Miércoles 30 de Mayo de 2007, 18:11
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 ;)
Título: Re: ¿como Utilizar El Reloj En Builder?
Publicado por: Eternal Idol en Miércoles 30 de Mayo de 2007, 20:07
Solo tiene un parametro que indica los milisegundos a esperar:

Sleep (http://msdn2.microsoft.com/en-us/library/ms686298.aspx)
Título: Re: ¿como Utilizar El Reloj En Builder?
Publicado por: weps84 en Miércoles 30 de Mayo de 2007, 23:20
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.
Título: Re: ¿como Utilizar El Reloj En Builder?
Publicado por: alucard0000 en Jueves 31 de Mayo de 2007, 16:17
Muchisimas gracias a los dos, voy a probar y les informo que pasa.ok? muchas gracias :alien:
Título: Re: ¿como Utilizar El Reloj En Builder?
Publicado por: Eternal Idol en Jueves 31 de Mayo de 2007, 16:25
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.
Título: Re: ¿como Utilizar El Reloj En Builder?
Publicado por: alucard0000 en Viernes 1 de Junio de 2007, 00:43
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!!! :)  :)
Título: Re: ¿como Utilizar El Reloj En Builder?
Publicado por: weps84 en Martes 5 de Junio de 2007, 18:38
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.