Iaew galera do GH, hoje vim mostrar um projeto que andei fazendo, e achei entereçante mostrar para vcs, um jogo da velha melhorado ... acho q o material vai servir para quem ta iniciando com c/c++, que manja da logica... chega de papo... e mãos na massa.
O programa a seguir foi testado apenas no linux, mas a unica coisa que muda é o modo de limpar a tela 'system("clear"); para linux / 'system("cls"); no windows':
Os comentarios no programa ja explicam tudo... mas qualquer duvida ou erro, por favor perguntem ai nos comentarios... i se liga porque ainda vem post bem legal por ai.
O programa a seguir foi testado apenas no linux, mas a unica coisa que muda é o modo de limpar a tela 'system("clear"); para linux / 'system("cls"); no windows':
Código PHP:
/* @autor felipe B.P <-- Flipp
* @version 1.0.0
*/
#include <stdio.h>
#include <stdlib.h>
static char tab[] = {' ',' ',' ', //faz o vetor q ira
' ',' ',' ', //armazenar as posicoes
' ',' ',' '};
// declara as funcoes criadas
void Vencedor();
void update();
int jogada();
int jogada2();
int x;
int main(void){
int ok = 1;
while(ok == 1){ // loop que ira chamar as jogadas
jogador();
jogador2();
}
return 0;
}
int jogador(){
update(); // chama a funcao update para imprimir a face
printf("\t\t Jogador 1: ");
scanf("%i",&x); // vai receber a posicao da jogada
if(tab[x-1] == ' '){ //verifica se a posicao esta ocupada ou nao
switch(x){
case 1: tab[0]='X'; break; // se nao ela e modificada
case 2: tab[1]='X'; break;
case 3: tab[2]='X'; break;
case 4: tab[3]='X'; break;
case 5: tab[4]='X'; break;
case 6: tab[5]='X'; break;
case 7: tab[6]='X'; break;
case 8: tab[7]='X'; break;
case 9: tab[8]='X'; break;
}
}else{
jogador(); // se tiver ocupada, a funcao chama a si msm
}
update(); // atualiza a face
Vencedor(); // chama a funcao q verifica se venceu ou nao
return 0;
}
int jogador2(){
update(); // ''
printf("\t\t Jogador 2: ");
scanf("%i",&x); // ''
if(tab[x-1] == ' '){
switch(x){
case 1: tab[0]='O'; break;
case 2: tab[1]='O'; break;
case 3: tab[2]='O'; break; // ''
case 4: tab[3]='O'; break;
case 5: tab[4]='O'; break;
case 6: tab[5]='O'; break;
case 7: tab[6]='O'; break;
case 8: tab[7]='O'; break;
case 9: tab[8]='O'; break;
}
}else{
jogador2(); // ''
}
update(); // ''
Vencedor(); // ''
return 0;
}
void update(){ // esta funcao gera a face do jogo
system("clear"); //limpa a tela, OBS: no windows se usa system("cls");
printf("\t\t __________________________________________\n");
printf("\t\t | Jogo da Velha | \n");
printf("\t\t | | \n");
printf("\t\t | | \n");
printf("\t\t | %c | %c | %c |\n",tab[0],tab[1],tab[2]);
printf("\t\t | ______|______|______ | \n");
printf("\t\t | %c | %c | %c |\n",tab[3],tab[4],tab[5]);
printf("\t\t | ______|______|______ | \n");
printf("\t\t | %c | %c | %c |\n",tab[6],tab[7],tab[8]);
printf("\t\t | | | | \n");
printf("\t\t |____ ____| \n");
}
void novoJogo(){
int i;
for(i = 0;i<9;i++){
tab[i] = ' '; // zera o tabuleiro
}
main(); // chama a funcao main
}
void Vencedor(){ // verifica todas as posibilidades de vitoria
// Horizontais
if(tab[0] == 'X' && tab[1]=='X' && tab[2] =='X' ||
tab[3] == 'X' && tab[4]=='X' && tab[5] =='X' ||
tab[6] == 'X' && tab[7]=='X' && tab[8] =='X' ||
// Verticais
tab[0] == 'X' && tab[3]=='X' && tab[6] =='X' ||
tab[1] == 'X' && tab[4]=='X' && tab[7] =='X' ||
tab[2] == 'X' && tab[5]=='X' && tab[8] =='X' ||
// Diagonais
tab[0] == 'X' && tab[4]=='X' && tab[8] =='X' ||
tab[6] == 'X' && tab[4]=='X' && tab[2] =='X')
{
// se algo for aceito...
printf("\n\t\t Jogador 1 ganhou :D [Enter]Novo Jogo");
getchar();getchar();novoJogo(); // espera um caracter e chama
// a funcao novoJogo
}
if(tab[0] == 'O' && tab[1]=='O' && tab[2] =='O' ||
tab[3] == 'O' && tab[4]=='O' && tab[5] =='O' ||
tab[6] == 'O' && tab[7]=='O' && tab[8] =='O' ||
tab[0] == 'O' && tab[3]=='O' && tab[6] =='O' ||
tab[1] == 'O' && tab[4]=='O' && tab[7] =='O' ||
tab[2] == 'O' && tab[5]=='O' && tab[8] =='O' ||
tab[0] == 'O' && tab[4]=='O' && tab[8] =='O' ||
tab[6] == 'O' && tab[4]=='O' && tab[2] =='O'){
printf("\n\t\t Jogador 2 ganhou :D [Enter]Novo Jogo");
getchar();getchar();novoJogo();
}
}
Comment