pnrf Posted December 5, 2009 at 04:52 PM Report Share #298816 Posted December 5, 2009 at 04:52 PM Boas pessoal. É o meu primeiro tópico neste fórum. Sou estudante de Tecnologias e Sistemas de Informação (TSI) e estou a desenvolver um jogo denominado MATE para a cadeira Inteligência Artificial. A ideia do jogo é colocar 2 jogadores a jogarem entre si. Regras básicas: cada jogador recebe 10 cartas, vector (20), existem 4 cores e 5 peças. Rainha, Torre, Peão,Bispo e Cavalo. E as cores são: Black, Red, Yellow e White (já pus tanto as peças como as cores por ordem de mais valiosa). E tou com duvidas na validação da carta.. Quem não percebeu bem as regras do jogo deixo aqui o meu relatório para o programa, onde explica la. http://cid-edce2e43937ef425.skydrive.live.com/self.aspx/.Public/UBI/relatorio.pdf E já agora, uma função para jogar User vs PC que tambem desconheço como se faz. Vou deixar aqui o código para se alguem me souber ajudar. Não liguem muito à estrutura do programa, está mal organizado mas ainda sou um iniciante x) #include <stdio.h> #include <stdlib.h> #include <string.h> enum boolean{ true=1,false=0 }; // mostrar cartas void mostracartas (char vector[][3],int n) { int i; for (i=0;i<n;i++) { printf("%d-%s ",i, vector[i]); } } // mostrar carta char mostracarta (char vector[][3],int n) { printf("%s",vector[n]); } // Ordebação por borbulagem - algoritmo de ordenação void ordenacartas(int vector[], int n) { int k, Num_trocas, aux; do{ Num_trocas = 0; for (k = 0; k < n-1; k++) if (vector[k] >vector[k+1]) { aux = vector[k]; vector[k] = vector[k+1]; vector[k+1] = aux; Num_trocas++; } } while (Num_trocas != 0); return; } // Eliminar cartas jogadas void eliminarcartas(char k, int n, int vector[]) { int i,aux; for (i = k+1; i <= n; ++i) vector[i-1]=vector[i]; aux = vector[i+1]; vector[i]=aux; return ; } // concatenar cartas void concatena(char v[][3], char y[][3], int w[],int n) { int i; for(i=0;i<n;i++) { int a; a=w[i]; strcpy(y[i],v[a]); } } // --- MAIN --- main(){ int i,j,n20=20,n10=10,pc,pp; // pc = pesquisa cor, pp = pesquisa peça //char j1[1][3]={"bQ"}; char temp; char cartas [20][3]={"bQ","bR","bB","bN","bP","rQ","rR","rB","rN","rP","yQ","yR","yB","yN","yP","wQ","wR","wB","wN","wP"}; char jog1 [10][3]; char jog2 [10][3]; char jogada1; char jogada2; char valorjoga1;//variavel com as letras da carta jogada pelo jogador1 char valorjoga2;//variavel com as letras da carta jogada pelo jogador2 const int VALOR=20; ///quantos numeros vamos ter para misturar const int MAX=20; ///valor maximo tem de ser igual ao que vamos misturar int val [10]; int val1 [10]; // baralhar cartas typedef enum boolean bool; bool check = true; if (check){ check=false; } srand(time(NULL)); for (i=0;i<10;i++) { int n; do { n=rand()%MAX; check=true; for (j=0;j<i;j++) if (n == val[j]) { check=false; break; } } while (!check); val[i]=n; } ordenacartas(val,10); for(i=0;i<10;i++) { int j=0;int k=0; for(i=0;i<20;i++) { if(i!=val[k]) { val1[j]=i; j++; } else { k++; } } } ordenacartas(val1,10); concatena(cartas,jog1,val,10); concatena(cartas,jog2,val1,10); for(i=1;i<=10;i++) { int aux; aux=val[i]; val[i]=val1[i]; val1[i]=aux; } // inicio Jogo[ printf("***** Cartas de Jogo *****\n"); printf("\n"); mostracartas(cartas,n20); printf("\n"); printf("\n----- Cartas do Jogador 1 -----\n"); mostracartas(jog1,n10); printf("\n"); printf("\n----- Cartas do Jogador 2 -----\n"); mostracartas(jog2,n10); printf("\n"); /// JOGAR printf("\nVamos JOGAR \n"); int nj=10,njogada=1; do{ do{ printf("\n---> Ronda %d\n",njogada); printf("\n"); printf("Jogador 1 a Jogar\n"); concatena(cartas,jog1,val,nj); mostracartas(jog1,nj); printf ("\n:> "); scanf("%s",&jogada1); ///jogada do jogador 1 printf("\nJogador 2 a Jogar \n"); concatena(cartas,jog2,val1,nj); mostracartas(jog2,nj); printf ("\n:> "); scanf("\n%s",&jogada2); ///jogada do jogador 2 nj--; eliminarcartas(jogada1,nj,val); eliminarcartas(jogada2,nj,val1); njogada++; }while((val[jogada1]>val1[jogada2])&&(njogada>10)); }while(njogada<=10); getch(); } Link to comment Share on other sites More sharing options...
_deXter Posted December 5, 2009 at 05:15 PM Report Share #298817 Posted December 5, 2009 at 05:15 PM Disseste que estavas com uma dúvida, mas não disseste qual era a dúvida... Link to comment Share on other sites More sharing options...
pnrf Posted December 5, 2009 at 05:20 PM Author Report Share #298818 Posted December 5, 2009 at 05:20 PM Validar as cartas jogadas. Tipo tenho um vector de 20 cartas, cada jogador fica com 10 Depois tens tipo as cartas de 0 a 9, mas para o jogador seguinte jogar, nem todas as cartas sao validas para jogar de acordo com as regras. se leres o relatorio ja percebes as regras x) Link to comment Share on other sites More sharing options...
drexinhu Posted December 6, 2009 at 04:28 PM Report Share #298923 Posted December 6, 2009 at 04:28 PM Quando o jogador escolhe uma carta para jogar: 1º - percorres o vector das cartas desse jogador, e verificas que essa carta encontra-se lá. 2º - Caso seja o segundo a jogar, verificas a cor da carta do primeiro jogador, e ves se tem a mesma cor. 3º - Caso seja o segundo a jogar, verificas a peça da carta do primeiro jogador, e ves se a carta jogada é a mesma peça mas de diferente cor. se já estás encravado nesta parte, tenho sérias duvidas se serás capaz de concluir o trabalho 😞 a parte do pc VS pc com inteligência artificial vai-te comer bem a cabeça. E não te esqueças que o prof nao aceita brute force 😉 Link to comment Share on other sites More sharing options...
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