/**Função que executa o comando dado o valor retornado na função que identifica que comando foi introduzido pelo utilizador. *@param jogo Referencia-se a onde se encontra guardado as dimensões do tabuleiro. *@param arg1 Variável onde está guardada o primeiro argumento dado pelo utilizador aquando a introdução do comando. *@param arg2 Variável onde está guardada o segundo argumento dado pelo utilizador aquando a introdução do comando. *@param comando Refere-se à opção que vai ser executada pelo utilizador. *@param argumentos Número de argumentos introduzidos pelo utilizador. *@return 1 a 7. Execução de comandos bem sucedida. *@return 0. Execução de comandos mal sucedida. */ int executa_comando(Tabuleiro jogo, int comando, int argumentos, char * arg1, char * arg2) { switch(comando) { case 2: /*Se for 2 usa o carrega*/ if(argumentos == 2) /*Recebe 2 args pois recebe o cr e o tabuleiro tipo ex1(Exemplificar: cr ex1)*/ { carrega_tab(jogo, arg1); /*Um argumento pois só precisa do ex1, por exemplo*/ return 0; } else { return mensagem_de_erro(E_ARGS); } break; case 3: /*Se for 3 usa o comando grava*/ if(argumentos == 2) /*Recebe o gr e o tabuleiro que o utilizador quer*/ { grava_tab(jogo, arg1); return 0; } else { return mensagem_de_erro(E_ARGS); } break; case 4: if(argumentos == 3) { if(testa_inteiro(arg1) && testa_inteiro(arg2)) { joga(jogo, atoi(arg1), atoi(arg2)); jogo->n_comando++; } else { mensagem_de_erro(E_INVARGS); } } else { mensagem_de_erro(E_ARGS); } break; case 5: if(argumentos == 1) { estrategia1(jogo); jogo->n_comando++; impressao_ecra(jogo); } else { mensagem_de_erro(E_ARGS); } break; case 6: if(argumentos == 1) { estrategia2(jogo); jogo->n_comando++; impressao_ecra(jogo); } else { mensagem_de_erro(E_ARGS); } break; case 7: if(argumentos == 3) { if(testa_inteiro(arg1) && testa_inteiro(arg2)) { marca(jogo, atoi(arg1), atoi(arg2)); /*atoi significa converter uma string em inteiros*/ jogo->n_comando++; } else { mensagem_de_erro(E_INVARGS); } } else { mensagem_de_erro(E_ARGS); } break; case 8: if(argumentos == 1) { estrategia3(jogo); jogo->n_comando++; impressao_ecra(jogo); } else { mensagem_de_erro(E_ARGS); } break; case 9: if(argumentos == 1) { anula(jogo); } else { mensagem_de_erro(E_ARGS); } break; case 10: if(argumentos == 1) { estrategia4(jogo); jogo->n_comando++; impressao_ecra(jogo); } else { mensagem_de_erro(E_ARGS); } break; case 11: if(argumentos == 1) { estrategia5(jogo); jogo->n_comando++; impressao_ecra(jogo); } else { mensagem_de_erro(E_ARGS); } break; case 12: if(argumentos == 1) { resolve(jogo); jogo->n_comando++; impressao_ecra(jogo); } else { mensagem_de_erro(E_ARGS); } break; } return 0; }
int main (void) { int pulo1=0,fim,jogada, c, l, x, contjogadas, jogador; int matriz [3][3], mjogador1[8][3], mjogador2[8][3], mjogada[3][3]; void iniciamatriz(int [8][3]); void printmatriz(int [][3]); void matrizprincipal(int [][3]); void marca (int mjogador[][3], int jogada,int jogador,int* ppulo1); int* ppulo1; int repete (int); fim=10; ppulo1=&pulo1; while (fim) { //zerando a matriz jogada for(l=0;l<3;l++) { for(c=0;c<3;c++) { mjogada[l][c]=0; } } //iniciando as matrizes mjogador 1 e 2 iniciamatriz(mjogador1); iniciamatriz(mjogador2); //preenchendo a matriz jogo da velha com valores de 1 a 9 matrizprincipal(matriz); for(pulo1=0,jogador=1,contjogadas=0;contjogadas<9;contjogadas++,jogador++) { if(jogador==3) { jogador=1; } printf("\n\njogador %d\t",jogador); scanf("%d",&jogada); while(jogada<1||jogada>9) { printf("\njogada invalida, insira um numero entre 1 e 9\n"); scanf("%d",&jogada); } jogada=jogada-1; l=jogada/3; c=jogada%3; while(mjogada[l][c]!=0) { printf("\njogada invalida, insira um numero entre 1 e 9 que ainda nao foi usado\n"); scanf("%d",&jogada); jogada=jogada-1; l=jogada/3; c=jogada%3; } mjogada[l][c]=jogador; printf("\n"); printf("\n | | "); printf("\n %d | %d | %d ",mjogada[0][0],mjogada[0][1],mjogada[0][2]); printf("\n_____|_____|_____"); printf("\n | | "); printf("\n %d | %d | %d ",mjogada[1][0],mjogada[1][1],mjogada[1][2]); printf("\n_____|_____|_____"); printf("\n | | "); printf("\n %d | %d | %d ",mjogada[2][0],mjogada[2][1],mjogada[2][2]); printf("\n | | "); printf("\n"); if(jogador==1) {marca (mjogador1,jogada,jogador,ppulo1);} if(jogador==2) {marca (mjogador2,jogada,jogador,ppulo1);} if(pulo1==1) { break; } } if(contjogadas==9) {printf("\nnao houve vencedor\n");} fim=repete(fim); } return 0; }