jogo do galo em C

Boa noite estou a fazer um jogo do galo em c e gostava de centrar a minha matriz de jogo com a minha "matriz" de posicoes validas alguem podia me explicar como se faz o meu codigo é o seguinte: ja agr desculpem pela organizaçao mas quando meto aqui desformata

Código:
#include <stdio.h>
#include <stdlib.h>
#define LINHAS  3
#define COLUNAS 3

int matrix[COLUNAS][LINHAS];

void InitMatrix(void){
   int i,j;
   for(i=0;i<LINHAS;++i){
      for(j=0;j<COLUNAS;++j){
         matrix[I][j]=0;
      }
   }
}

void printMatrix(void){
   int i,j;
   printf("\t------------ \n");
   printf("\t| posicoes | \n");
   printf("\t------------ \n \n");
   printf("\t00 |10| 20 \n");
   printf("\t----------- \n");
   printf("\t01 |11| 21 \n");
   printf("\t----------- \n");
   printf("\t02 |12| 22  \n\n");
   printf("--------------------------\n \n");
   for(i=0;i<LINHAS;++i){
      for(j=0;j<COLUNAS;++j){
         if(matrix[j][I]==0) printf("   ");
         else if(matrix[j][I]==1) printf(" X ");
         else printf(" 0 ");
         //printf(" %d ",matrix[j][I]);
         if(j<(COLUNAS-1)) printf("|");
      }
      printf("\n");
      if(i<(LINHAS-1)){
         for(j=0;j<COLUNAS;++j){
            if(j<COLUNAS-1) printf("----");
            else printf("---");
         }
      }
      printf("\n");
   }
}

char makemove(int posicao, int jogador){
   int i,j;
   i=posicao/10;
   j=posicao%10;
   if ((i>2||j>2||i<0||j<0)||(matrix[I][j]!=0)) return 0;
   matrix[I][j]=jogador;
   return 1;

   // Valida a jogada
   // se jogada for valida afecta a matriz na posicao correspondente , retorna 1
   // se jogada for nao valida, retorna 0
}

char checkVictory(char jogador){

   //linhas
   if((matrix[0][0]==jogador&&matrix[0][1]==jogador&&matrix[0][2]==jogador)||
      (matrix[1][0]==jogador&&matrix[1][1]==jogador&&matrix[1][2]==jogador)||
      (matrix[2][0]==jogador&&matrix[2][1]==jogador&&matrix[2][2]==jogador))return 1;

   //colunas
   else if((matrix[0][0]==jogador&&matrix[1][0]==jogador&&matrix[2][0]==jogador)||
           (matrix[0][1]==jogador&&matrix[1][1]==jogador&&matrix[2][1]==jogador)||
           (matrix[0][2]==jogador&&matrix[1][2]==jogador&&matrix[2][2]==jogador))return 1;

   //diagonal
   else if((matrix[0][0]==jogador&&matrix[1][1]==jogador&&matrix[2][2]==jogador)||
           (matrix[2][0]==jogador&&matrix[1][1]==jogador&&matrix[0][2]==jogador))return 1;
   else return 0;

   // verifica se jogador venceu
   // retorna 0 se não houve vitoria, retorna 1 se houve vitoria
}

int potencia(int base, int expoente){
   int resultado=1;
   while(expoente){
      resultado=resultado*base;
      --expoente;
   }
   return resultado;
}

void main(void){
   char array[5];
   int i=0;
   int nok=0;
   int ndigitos=0;
   int resultado=0;
   int jogadas=9;
   int empate=0;
   int jogada=0;
   int jogador=1;
   int posicao;
   int jogadavalida=0;
   int vitoria=0;
   InitMatrix();
   printMatrix();
   while(empate==0&&vitoria==0){
      while(jogadavalida==0){
         printf("\n Jogador %d, faca a sua jogada = ",jogador);
         scanf("%s",&array);
         for(i=0;array[I]!='\0';++i){
            if(array[I]>57 || array[I]<48){
               nok=1;
               break;
            }

         }
         if(nok==0){
            for(ndigitos=0;array[ndigitos]!='\0';++ndigitos);
            for(i=0;i<ndigitos;++i){
               resultado=resultado+(array[I]-48)*potencia(10,ndigitos-1-i);
            }
            posicao=resultado;
            printf("\n");
            jogadavalida=makemove(posicao,jogador);
            resultado=0;
            posicao=0;
            }
         else{
            nok=0;
            jogadavalida=0;
         }
      }
      printMatrix();
      vitoria=checkVictory(jogador);
      if(vitoria==1)printf("\n\n   VITORIA  JOGADOR %d   \n\n",jogador);
      if(jogadas==0&&vitoria==0)printf("\n\n   EMPATE   \n\n");
      jogadas=jogadas-1;
      jogador=jogador+1;
      if(jogador==3&&jogadas!=0&&vitoria==0)jogador=jogador=1;
      jogadavalida=0;
   }
}
 
Última edição pelo moderador:
Topo