Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Ayudame Con DrawGrid (https://www.clubdelphi.com/foros/showthread.php?t=84745)

danielingo 29-11-2013 18:36:12

Ayudame Con DrawGrid
 
Hola amigos veran estoy aprendiendo a usar esta herramienta DrawGrid para hacer un juego tipo pacman...

Ya conseguí poner todas las imágenes pero necesito que se muevan y se me ocurrio cambiar de celda cada que se presiona una tecla..

El problema es que no se como puedo saber en que celda esta el muñequito lo que me da que siempre se mueve desde la misma posición.
Cómo puedo saber donde esta la Imagen1 o como hago que se desplace normalmente?

Espero sus respuestas.

ecfisa 29-11-2013 19:26:03

Hola danielingo y bienvenido a Club Delphi :)

Como a todos los que se inician te invitamos a que leas nuestra guía de estilo.

Creo que vas a tener que explicar con mas detalles el problema, al menos yo no entiendo claramente la situación.

Saludos :)

danielingo 30-11-2013 00:26:48

Haber si aclaro un poco
 
1) En un DrawGrid puse una imagen en cada casilla (Con canvas y drawcell).

2) Quise que una de las imagenes (Imagen1) se moviera a otra casilla al presionar un boton .... para eso use el evento OnKeypress de el drawgrid.

3) Logre hacer un procedimiento para cambiar de imagen de una casilla a la siguiente para simular que un muñequito se movia.

4) El procedimiento es este:
void mover(TImage *a,TImage *b,TDrawGrid *v, char direc, int f, int c)
{
if (direc=='w') {
dibujar(b,v,f-1,c);
dibujar(a,v,f,c);
f=f-1;
}
if (direc=='a') {
dibujar(b,v,f,c-1);
dibujar(a,v,f,c);
c=c-1;
}
}

Donde la funcion dibujar coloca la imagen en la casilla (con canvas y drawcell)...

El problema es que mi procedimiento utiliza la posicion de la imagen a cambiar.. y el problema es que no se como hacer para saber en que casilla quedo el muñequito lo que me da que siempre se mueve de la posicion que le doy.

Cualquier duda me preguntan. Gracias

ecfisa 30-11-2013 21:02:11

Hola danielingo.

Al no poder ver la totalidad del código sigo sin entenderte claramente, pero te pongo un ejemplo de como haría para almacenar la posición actual de la imagen del muñeco por si te aporta alguna idea:
Código:

TPoint PDoll;  // Almacena coordenadas actuales de la imágen

void __fastcall TForm1::DrawGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
  if (State.Contains(gdSelected)) {
    PDoll = (Point)(ACol,ARow); // Guardar posición del muñeco
    DrawGrid1->Canvas->StretchDraw(Rect, Image1->Picture->Graphic); // Pintarlo
  }
  else {  // Limpiar celda
    DrawGrid1->Canvas->Brush->Color = DrawGrid1->Color;
    DrawGrid1->Canvas->FillRect(Rect);
  }
}

// Mostrar posición actual del muñeco
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  ShowMessage(Format("El muñeco esta en las coordenadas: (%d , %d)",
    ARRAYOFCONST(((int)PDoll.x,(int)PDoll.y))));
}

En el ejemplo, la imagen (muñeco) va cambiando de celda mediante el click del mouse sobre alguna de ellas.

Saludos :)


La franja horaria es GMT +2. Ahora son las 04:44:23.

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