Ver Mensaje Individual
  #14  
Antiguo 10-02-2006
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Reputación: 20
Héctor Randolph Va por buen camino
Espero no haberte confundido demasiado, la manera que a mi se me ocurrió para representar el tablero fue por medio de una matriz de NxN, en cada entrada puedes colocar un número digamos 0,1,2, etc. Estos números corresponden a un índice en la lista de imagenes que previamente tienes cargadas.

La matriz tiene esta apariencia.

0 1 0 0
0 0 0 0
0 0 2 0
0 0 0 0

De tal manera que en donde aparezca un número 0 se dibujara el fondo del mar y con los demás números se dibujarán otros objetos.

El código que te muestro a continuación transforma los valores de la matriz en coordenadas dentro del Canvas (lienzo) del control PaintBox.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const
  ANCHO=32;  ALTO=32;
  MAR=0;  AVION=1;  EXPLOSION=2;
var
  i,j: Integer;
 Matriz: array [0..9, 0..9] of Integer;
begin
 for j:=0 to 9 do
   for i:=0 to 9 do
      Matriz[j,i]:=MAR; // Rellenar la matriz completa de ceros
 // Colocamos dos objetos en la matriz tan solo como ejemplo
 Matriz[8,8]:=AVION; // Colocar un objeto en la posición (8,8)
 Matriz[4,4]:=EXPLOSION; // Colocar otro objeto en la posición (4,4)

 // Dibujamos la matriz en el PaintBox
 for j:=0 to 9 do
   for i:=0 to 9 do
   ImageList1.Draw(PaintBox1.Canvas,i*ANCHO,j*ALTO,Matriz[j,i]);
end;

El doble for recorre todas las entradas de la matriz y uso el método Draw(Canvas,X,Y,Indice) del ImageList para dibujar la imagen sobre el canvas del PaintBox, observa que el indice se obtiene de las entradas de la matriz.

Bueno, esta podría ser una forma de representarlo pero no es la única.

Saludos
Responder Con Cita