Jueves 14 de Noviembre de 2024, 16:53
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Damas Inglesas
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Damas Inglesas (Leído 1202 veces)
fvcfvcfvc11
Nuevo Miembro
Mensajes: 2
Damas Inglesas
«
en:
Miércoles 30 de Mayo de 2007, 07:03 »
0
Hola a todos, gracias por darse el tiempo de leer esta discusion...
Bueno mi problema es el siguiente, tengo generada una matriz i,j de 8*8 que representa el tablero de juego. A continuación tengo el void que compara los valores obtenidos al dar clic en una posición cualquiera del tablero(matriz), y lo mando llamar dentro del void que genera los movimientos de las fichas de arriba turno1().
Pero el problema surge cuando corro el juego y realizo los movimientos, em di cuenta que la matriz no cambia de valor porque puedo volver a mover la misma ficha a la misma posicion de nuevo , ya he intentado utilizar variables auxiliares x,y para la transferencia de valores en la matriz, pero ni aun asi se guardan los movimiento realizados....
alguien tiene alguna idea d ecomo resolverlo??? les agradeceria mucho si me ayudan
codigo:
void genera()
{
for(i=0;i<8;i++)
for(j=0;j<8;j++) {
M
[j]=0;
}
for(i=0;i<8;i=i+2) M
[0]=1;
for(i=1;i<8;i=i+2) M
[1]=1;
for(i=0;i<8;i=i+2) M
[2]=1; //fichas inicio arriba
for(i=1;i<8;i=i+2) M
[3]=3;//
for(i=0;i<8;i=i+2) M
[4]=3; //posibles movimientos;
for(i=1;i<8;i=i+2) M
[5]=2;
for(i=0;i<8;i=i+2) M
[6]=2;
for(i=1;i<8;i=i+2) M
[7]=2;//fichas inicio abajo
M
[j];
}
void posicion()
{
if( c>120 && c<170 ) i=0;
if( c>170 && c<220 ) i=1;
if( c>220 && c<270 ) i=2;
if( c>270 && c<320 ) i=3;
if( c>320 && c<370 ) i=4;
if( c>370 && c<420 ) i=5;
if( c>420 && c<470 ) i=6;
if( c>470 && c<520 ) i=7;
if( d>40 && d<90 ) j=0;
if( d>90 && d<140 ) j=1;
if( d>140 && d<190 ) j=2;
if( d>190 && d<240 ) j=3;
if( d>240 && d<290 ) j=4;
if( d>290 && d<340 ) j=5;
if( d>340 && d<390 ) j=6;
if( d>390 && d<440 ) j=7;
}
void turno1()
{
do{
bandera=0;
int salir=0;
genera();
do{
mouse(a,b,c,d);
a=3;
switch(
{
case 1: quita();
settextstyle(1,0,0);
box(550,70,600,150,1,RED);
outtextxy(565,90,"T");
posicion();
if(c>20 &&c<100 &&d<300 &&d>260) salir=1;//por boton salir
if(salir!=1&&M
[j]==1&&M[i+1][j+1]==3||M[i-1][j+1]==3||M[i+1][j+1]==2&&M[i+2][j+2]==3||M[i-1][j+1]==2&&M[i-2][j+2]==3)
{
box(i*50+120,j*50+40,i*50+170,j*50+90,1,CYAN);
x=i;
y=j;
M
[j]=M
[y];//guardar en matriz
M
[j]=0;
salir=1;
do{ mouse(a,b,c,d);
a=3;
delay(100);
switch(
{
case 1: quita();
posicion();
if( c<520 && c>120 && d>190 && d<240 && M
[j]==3 )
{
R.M
[j]=1;
setcolor(RED);
for(x=20;x>10;x=x-3)
{
circle(i*50+145,j*50+65,x);
}
bandera=1;
}
if(M[i+1][j+1]==2 && M[i+2][j+2]==3 && bandera!=1 )
{
R.M[i+2][j+2]=1;
setcolor(WHITE);
circle(245+i*50,165+j*50,22);
circle(245+i*50,165+j*50,20);
bandera=1;
}
if(M[i-1][j+1]==2 && M[i-2][j+2]==3 && bandera!=1)
{
R.M[i-2][j+2]=1;
setcolor(WHITE);
circle(45+i*50,165+j*50,22);
circle(45+i*50,165+j*50,20);
bandera=1;
}
break;
}pon();
}while(bandera!=1);
}break;
}pon();
}while(salir!=1);
Tweet
fvcfvcfvc11
Nuevo Miembro
Mensajes: 2
Re: Damas Inglesas
«
Respuesta #1 en:
Viernes 1 de Junio de 2007, 06:27 »
0
O algún metodo mas simple de validar e intercambiar valores en en la matriz al mover las fichas?
.... he intentado casi toda la tarde... gracias
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Damas Inglesas