Ruben_Barbosa Posted May 24, 2009 at 02:43 PM Report #266917 Posted May 24, 2009 at 02:43 PM #include <stdio.h> #include <stdlib.h> #include <string.h> #include <locale.h> #define PEAO 0 #define CAVALO 1 #define BISPO 2 #define TORRE 3 #define RAINHA 4 #define REI 5 #define VAZIO 6 #define BRANCO 0 #define PRETO 1 int peca[64] = { TORRE, CAVALO, BISPO, RAINHA, REI, BISPO, CAVALO, TORRE, PEAO, PEAO, PEAO, PEAO, PEAO, PEAO, PEAO, PEAO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, PEAO, PEAO, PEAO, PEAO, PEAO, PEAO, PEAO, PEAO, TORRE, CAVALO, BISPO, RAINHA, REI, BISPO, CAVALO, TORRE }; int cor[64] = { PRETO, PRETO, PRETO, PRETO, PRETO, PRETO, PRETO, PRETO, PRETO, PRETO, PRETO, PRETO, PRETO, PRETO, PRETO, PRETO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, VAZIO, BRANCO, BRANCO, BRANCO, BRANCO, BRANCO, BRANCO, BRANCO, BRANCO, BRANCO, BRANCO, BRANCO, BRANCO, BRANCO, BRANCO, BRANCO, BRANCO }; void move(); int main() { setlocale(LC_ALL,""); tabuleiro(); } /* tabuleiro */ tabuleiro() { char nomePecas[] = "PCBTDRpcbtdr";//defnir as peças int i,s=1; for (i = 0; i < 64; i++) { if ((i & 7) == 0) { printf(" +---+---+---+---+---+---+---+---+\n"); if (i <= 64) { printf(" %d |",s++); //imprimir coluna de 1 a 8 } } if (peca[i] == VAZIO) printf(" |"); else { printf(" %c |", nomePecas[peca[i] + (cor[i] == BRANCO ? 0 : 6)]); // Diferenças entre peças brancas e Pretas } if ((i & 7) == 7) printf("\n"); } printf(" +---+---+---+---+---+---+---+---+\n a b c d e f g h\n"); } //Movimentos void move() { int i; for (i = 0; i < 64; i++) /* corre todo o vector tabuleiro*/ /// if (cor[i] == lado) switch (peca[i]) { case PEAO: /**movimento do peao branco*/ // Movimento para a frente if (peca[i+8]==VAZIO){ peca[i+8]==PEAO;} return 0; // 2 Movimento para a frente if(peca[i+8]==VAZIO) // Movimento para a frente peca[i+8]==PEAO; else if(peca[i+16]==VAZIO) // 2 Movimento para a frente peca[i+16]==PEAO; else if(peca[i]==BRANCO && peca[i+7]==PRETO)// Movimento para capturar a peça esquerda peca[i+7]==PEAO; else if(peca[i]==BRANCO && peca[i+9]==PRETO) // Movimento para capturar a peça direita peca[i+9]==PEAO; else printf("Movimento inválido!!!\a\n\n"); return 0; /**movimento do peao preto*/ if(peca[i-8]==VAZIO) // Movimento para a frente peca[i-8]==PEAO; else if(peca[i-16]==VAZIO) // 2 Movimento para a frente peca[i-16]==PEAO; else if((peca[i]==BRANCO) && (peca[i-7]==PRETO))// Movimento para capturar a peça esquerda peca[i-7]==PEAO; else if((peca[i]==BRANCO) && (peca[i-9]==PRETO)) // Movimento para capturar a peça direita peca[i-9]==PEAO; else printf("Movimento inválido!!!\n\n"); return 0; /**movimento do bispo*/ case BISPO: for(i=i+9; i<64 && i+9==VAZIO; i+=9)// diagonal esquerda superior peca[i+9]==BISPO; break; for(i=i-9; i>=0 && i-9==VAZIO; i-=9)// diagonal direita inferior peca[i-9]==BISPO; break; for(i=i+7; i<64 && i+7==VAZIO; i+=7)// diagonal direita superior peca[i+7]==BISPO; break; for(i=i-7; i>=0 && i-7==VAZIO; i-=7)// diagonal esquerda inferior peca[i-7]==BISPO; break; /**movimento da torre*/ case TORRE: for(i=i+8; i<64 && i+8==VAZIO; i+=8)// frente superior peca[i+8]==TORRE; break; for(i=i-8; i>=0 && i-8==VAZIO; i-=8)// diagonal direita inferior peca[i-8]==TORRE; break; for(i=i+1; i<64 && i+1==VAZIO; i+=1)// diagonal direita superior peca[i+1]==TORRE; break; for(i=i-1; i>=0 && i-1==VAZIO; i-=1)// diagonal esquerda inferior peca[i-1]==TORRE; break; /**movimento da rainha*/ case RAINHA: for(i=i+9; i<64 && i+9==VAZIO; i+=9)// diagonal esquerda superior peca[i+9]==RAINHA; break; for(i=i-9; i>=0 && i-9==VAZIO; i-=9)// diagonal direita inferior peca[i-9]==RAINHA; break; for(i=i+7; i<64 && i+7==VAZIO; i+=7)// diagonal direita superior peca[i+7]==RAINHA; break; for(i=i-7; i>=0 && i-7==VAZIO; i-=7)// diagonal esquerda inferior peca[i-7]==RAINHA; break; for(i=i+8; i<64 && i+8==VAZIO; i+=8)// frente superior peca[i+8]==RAINHA; break; for(i=i-8; i>=0 && i-8==VAZIO; i-=8)// diagonal direita inferior peca[i-8]==RAINHA; break; for(i=i+1; i<64 && i+1==VAZIO; i+=1)// diagonal direita superior peca[i+1]==RAINHA; break; for(i=i-1; i>=0 && i-1==VAZIO; i-=1)// diagonal esquerda inferior peca[i-1]==RAINHA; break; //fazer movimentos para comer peças case REI: if((i+9=VAZIO) && (i<64))// diagonal esquerda superior peca[i+9]==REI; else if((i>=0) && (i-9==VAZIO))// diagonal direita inferior peca[i-9]==REI; else if((i<64) && (i+7==VAZIO))// diagonal direita superior peca[i+7]==REI; else if((i>=0) && (i-7==VAZIO))// diagonal esquerda inferior peca[i-7]==REI; else if((i<64) && (i+8==VAZIO))// frente superior peca[i+8]==REI; else if((i>=0) && (i-8==VAZIO))// diagonal direita inferior peca[i-8]==REI; else if((i<64) && (i+1==VAZIO))// diagonal direita superior peca[i+1]==REI; else if((i>=0) && (i-1==VAZIO))// diagonal esquerda inferior peca[i-1]==REI; return 0; } } /**avaliação*/ Precisava que isso compila-se :S puxa alguem pdoe dar uma maozinha :S
TheDark Posted May 24, 2009 at 02:54 PM Report #266918 Posted May 24, 2009 at 02:54 PM Devias ser mais explícito sobre qual é o problema. Desaparecido.
Ruben_Barbosa Posted May 24, 2009 at 02:57 PM Author Report #266922 Posted May 24, 2009 at 02:57 PM ou seja , o tabuleiro já ta impecavel mas o que eu queria era so simplesmente que fizessem-me uma moviemnto de uma peça mover. Ou seja imprimir o tabuleiro e mexer uma peca B)
Ferreira Posted May 24, 2009 at 08:00 PM Report #266954 Posted May 24, 2009 at 08:00 PM Tens de ver qual é a peça que estás a tentar mover e se o movimento para a posição de destino é válido. http://twitter.com/ferreira
Ruben_Barbosa Posted May 24, 2009 at 08:28 PM Author Report #266961 Posted May 24, 2009 at 08:28 PM pois eu precisava de saber como fazer isso :S
TheDark Posted May 24, 2009 at 08:48 PM Report #266964 Posted May 24, 2009 at 08:48 PM Não acredito que tenhas chegado a esse código todo e não tenhas sequer tentado fazer o movimento das peças. Desaparecido.
Ruben_Barbosa Posted May 24, 2009 at 08:58 PM Author Report #266967 Posted May 24, 2009 at 08:58 PM nao porque eu pesquisei no google e alterei a unica coisa que consigo e imprimir so o tabuleiro meu agora fazer com que uma peca mexa nao :S. Mas prontos :S , esse codigo do movimentos vi no google XD
Baderous Posted May 24, 2009 at 09:09 PM Report #266969 Posted May 24, 2009 at 09:09 PM Já reparaste que na função move estás a fazer comparações com o sinal '==' quando devias estar a fazer atribuições com o sinal '=' ?
Ruben_Barbosa Posted May 24, 2009 at 09:46 PM Author Report #266982 Posted May 24, 2009 at 09:46 PM o que me falta mesmo e tipo eu meter as coordenadas 1a e dps 3a para a peca mover :S se alguem me orientar agradecia B)
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now