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: