#include #include #define TRUE 1 #define FALSE 0 #define MAX_LINHAS 3 #define MAX_COLUNAS 3 int jogadaVencedora(char tabuleiro[MAX_LINHAS][MAX_COLUNAS], char c) { int vencedor = FALSE; if ( // horizontais (tabuleiro[0][0] == c && tabuleiro[0][1] == c && tabuleiro[0][2] == c) || (tabuleiro[1][0] == c && tabuleiro[1][1] == c && tabuleiro[1][2] == c) || (tabuleiro[2][0] == c && tabuleiro[2][1] == c && tabuleiro[2][2] == c) || // verticais (tabuleiro[0][0] == c && tabuleiro[1][0] == c && tabuleiro[2][0] == c) || (tabuleiro[0][1] == c && tabuleiro[1][1] == c && tabuleiro[2][1] == c) || (tabuleiro[0][2] == c && tabuleiro[1][2] == c && tabuleiro[2][2] == c) || // diagonais (tabuleiro[0][0] == c && tabuleiro[1][1] == c && tabuleiro[2][2] == c) || (tabuleiro[0][2] == c && tabuleiro[1][1] == c && tabuleiro[2][0] == c)) { vencedor = TRUE; } return vencedor; } void inicializaTabuleiro(char tabuleiro[MAX_LINHAS][MAX_COLUNAS]) { int linha, coluna; for (linha = 0; linha < MAX_LINHAS; linha++) { for (coluna = 0; coluna < MAX_COLUNAS; coluna++) { tabuleiro[linha][coluna] = '_'; } } } void imprimeTabuleiro(char tabuleiro[MAX_LINHAS][MAX_COLUNAS]) { int i, j; system("clear"); printf("\n"); for (i = 0; i < MAX_LINHAS; i++) { for (j = 0; j < MAX_COLUNAS; j++) { printf(" %c ", tabuleiro[i][j]); } printf("\n"); } } void salvar_bin(char tabuleiro[MAX_LINHAS][MAX_COLUNAS]){ FILE *fout = fopen("galo.dat", "wb"); if(fout){ fwrite(tabuleiro, sizeof(char)*MAX_LINHAS*MAX_COLUNAS, 1, fout); fclose(fout); } } void abrir_bin(char tabuleiro[MAX_LINHAS][MAX_COLUNAS]){ FILE *fin = fopen("galo.dat", "rb"); if(fin){ fread(tabuleiro, sizeof(char)*MAX_LINHAS*MAX_COLUNAS, 1, fin); fclose(fin); } } int main() { char tabuleiro[MAX_LINHAS][MAX_COLUNAS], jogo, salvar; int jogada, sair = 1, linha, coluna; printf("Retomar Jogo Anterior? (s - sim / n - nao)\n"); jogo = getchar(); if(jogo=='s'){ // le do ficheiro abrir_bin(tabuleiro); } else { // inicializa tabuleiro -- cada celula com o caracter '_' inicializaTabuleiro(tabuleiro); } while (sair != 0) { imprimeTabuleiro(tabuleiro); /*************** JOGADOR 1 ********************/ printf("\nJogador 1, introduza a sua jogada:\n"); printf("Linha: "); scanf("%d", &linha); printf("Coluna: "); scanf("%d", &coluna); tabuleiro[linha][coluna] = 'x'; imprimeTabuleiro(tabuleiro); if (jogadaVencedora(tabuleiro, 'x')) { printf("O Jogador 1 venceu!\n"); sair = 0; } else { /*************** JOGADOR 2 ********************/ printf("\nJogador 2, introduza a sua jogada:\n"); printf("Linha: "); scanf("%d", &linha); printf("Coluna: "); scanf("%d", &coluna); tabuleiro[linha][coluna] = 'o'; imprimeTabuleiro(tabuleiro); if (jogadaVencedora(tabuleiro, 'o')) { printf("O Jogador 2 venceu!\n"); sair = 0; } } getchar(); printf("Salvar jogo? (s - sim / n - nao)\n"); salvar = getchar(); if(salvar=='s'){ salvar_bin(tabuleiro); } } return 0; }