PDA

Ver la Versión Completa : Vaciar matriz en un drawgrid


Xeleron
02-03-2008, 22:50:41
bueno tengo problemas para entender como pasar los valores de una matriz en un drawgrid, es decir, en el programa cuando hago click sobre el drawgrid, me debe leer la matriz espejo para luego devolverlo al drawgrid, el problema es ese no se como hacerlo, lo que llevo es esto:

void __fastcall TForm1::DrawGrid1SelectCell(TObject *Sender, int ACol, int ARow, bool &CanSelect)
{
float O[10][10];
float m,n;

O[4][4]=1;
O[5][4]=2;
O[5][4]=2;
O[5][5]=1;
m=ARow;
n=ACol;
jugada(m,n,O);
//DrawGrid1->......=O[ ][ ]; (no se como se vaciaria la matriz en el drawgrid)

//cambio de jugador
}
//---------------------------------------------------------------------------

void jugada(unsigned char F, unsigned char C, unsigned char O[][10])
{
char k,i,j,l,q,r,s,t,u,v,w,z,b,c,d,e;
if (O[F][C]==1||O[F][C]==2)
show message 'no es posible la jugada';
if (O[F][C]==0)
{for (k=C+1;O[F][k]==0||O[F][k]==P||k<=C;k++) //chequeo y volteo hacia la derecha
if(O[F][k]==P)
for(u=C+1;u<=K;u++)
{O[F][u]=P;
}
k=C;

for (i=F-1;O[i][C]==0||O[i][C]==P||i>=0;i--) //chequeo y volteo hacia arriba
if(O[i][C]==P)
for(w=F-1;w>=i;w--)
{O[w][C]=P;
}
i=0;
for (j=F+1;O[j][C]==0||O[j][C]==P||j<=F;j++) //chequeo y volteo hacia abajo
if(O[j][C]==P)
for(z=F+1;z>=i;z++)
{O[z][C]=P;
}
j=F;
for (l=C-1;O[F][l]==0||O[F][l]==P||l>=0;l--) //chequeo y volteo hacia la izquierda
if(O[F][l]==P)
for(v=C-1;v>=l;v--)
{O[F][v]=P;
}
l=0;
for (q=C+1;O[F-(q-F)][q]==0||O[F-q][q]==P||q<=C;q++) //chequeo y volteo hacia arriba y a la derecha
if(O[F-(q-F)][q]==P)
for(b=C+1;b<=q;b++)
{O[F-(b-F)][b]=P;
}
q=C;
for (r=C+1;O[r][r]==0||O[r][r]==P||r<=C;r++) //chequeo y volteo hacia abajo y a la derecha
if(O[r][r]==P)
for(c=C+1;c<=r;c++)
{O[c][c]=P;
}
r=C;
for (s=C-1;O[s][C-(C-s)]==0||O[s][C-(C-s)]==P||s>=0;s++) //chequeo y volteo hacia abajo y a la izquierda
if(O[s][C-(C-s)]==P)
for(d=C-1;d<=s;d--)
{O[d][b]=P;
}
s=0;
for (t=C-1;O[t][t]==0||O[t][t]==P||t>=0;t--) //chequeo y volteo hacia arriba y a la izquierda
if(O[t][t]==P)
for(e=C-1;e>=t;t--)
{O[e][e]=P;
}
t=0;
}

if(O[F][k]==0&&O[i][C]==0&&O[j][C]==0&&O[F][l]==0&&O[F-(q-F)][q]==0&&O[r][r]==0&&
O[s][C-(C-s)]==0 O[t][t]==0)
show message 'no es posible la jugada';
}


Mi problema esta en los puntos suspensivos del principio, ahi se deberia vaciar la matriz para llevarla al drawgrid pero no se como si alguien sabe como se hace y me puede responder estaria muy agradecido, ojala sepan y me puedan responder, gracias de antemano

PD: el programa es el juego de othello para ver si lo ven mas facil, no logro hacer que me verifique las cosas ya que no se como llamar a la matriz espejo y devolver ese valor al drawgrid