Skip to content

Commit

Permalink
add verificaVencedor
Browse files Browse the repository at this point in the history
  • Loading branch information
kaiorosa1 committed Feb 11, 2019
1 parent ac744db commit d786ebe
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 7 deletions.
7 changes: 6 additions & 1 deletion main.c
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ int main(int argc, char* argv[]){
printf("Digitado(%d %d)\n",x,y);

// Pedir Jogada do Usuario
// Analisar jogada
// verificar e realizar jogada
sair = realizarJogada(game, x, y, tableSize, bomba, vazia, &nJogada);

if(sair == -1){
Expand All @@ -97,13 +97,18 @@ int main(int argc, char* argv[]){
// as the user if they want to continue playing before ending the game
sair = askUser();
}
if(sair == -2){
printf("%s Ganhou!\n",nomeJogador);
sair = askUser();
}
if(sair == -3){
break;
}
if(sair== - 4){
// limpar jogo para reiniciar
restartGame(game,tableSize,&nJogada);
}


}
while(1);
Expand Down
Binary file modified minesweeper
Binary file not shown.
26 changes: 20 additions & 6 deletions tGame.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,11 @@ int realizarJogada(tGame** g,int x, int y, int sz, char bomba,char vazia, int *j
// verifica validade
if(!((x >= 0 && x < sz) && (y >= 0 && y < sz))){
printf("Posicao invalida (FORA DO TABULEIRO)\n");
return -2;
return -5;
}
else if(g[x][y].state == 1){
printf("Posicao invalida (JA ABERTA)!\n");
return -2;
return -5;
}
else{
if(g[x][y].content == vazia){
Expand All @@ -148,14 +148,17 @@ int realizarJogada(tGame** g,int x, int y, int sz, char bomba,char vazia, int *j
}else{
g[x][y].state = 1;
}

if(verificaVencedor(g,sz) == 1){
return -2;
}
// aumenta o numero de jogadas pois foi valida
(*jogada)++;
}
return 0;
}

void floodFillVazias(tGame** g, int sz, char bomba, char vazia, int x, int y){
// Need some tweaking to be full-fledged functional
if(x >= sz || y >= sz){
return;
}
Expand All @@ -165,10 +168,10 @@ void floodFillVazias(tGame** g, int sz, char bomba, char vazia, int x, int y){
if(g[x][y].state == 1){
return;
}
if(g[x][y].content != vazia){
return;
if(g[x][y].content == bomba || g[x][y].content != vazia){
return;
}

g[x][y].state = 1;

floodFillVazias(g, sz, bomba, vazia, x + 1, y);
Expand All @@ -189,4 +192,15 @@ void restartGame(tGame** g, int sz, int* nJogada){
}
}

}

int verificaVencedor(tGame** g, int sz){
// verifica se o jogador ganhou a partida;

// contar o numero de bombas e subtrair do numero de posicoes disponiveis
// se o numero de posicoes abertas for igual a esse numero ele ganhou

// nao precisamos nos preocupar com as bombas pois o jogo termina antes desse ponto
// caso tenha uma bomba aberta
return 0;
}
3 changes: 3 additions & 0 deletions tGame.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ void conta_bomba_position(tGame **g,int i,int j,int sz,char bomba);
// reinicia o jogo para o estado inicial
void restartGame(tGame** g, int sz, int* nJogada);

// verifica se o jogador ganhou a partida
int verificaVencedor(tGame** g, int sz);

// desaloca memoria alocada de uma tGame
void freePosition(tGame* g);

Expand Down

0 comments on commit d786ebe

Please sign in to comment.