Jogo da Velha
Publicado por Hunz 01/09/2004
[ Hits: 14.847 ]
Homepage: http://tnegri.com/
Famoso Jogo da Velha, bem simples.
/* *****************************************
AUTOR: Thiago ( hunz )
EMAIL / MSN: tn_negri@hotmail.com
ESPAÇO VOL: www.vivaolinux.com.br/~hunz
***************************************** */
#include <stdio.h>
#include <stdlib.h>
char set;
int linha=0,coluna=0,win,casa[3][3];
void draw(int x, int y) {
if (casa[x][y] == '{FONTE}') printf(" ");
if (casa[x][y] == 1) printf("X");
if (casa[x][y] == 2) printf("O");
}
void limpa() {
printf("\e[H\e[2J");
}
void jogo() {
printf(" 1 2 3\n");
printf("1 ");
draw(0,0);
printf(" | ");
draw(0,1);
printf(" | ");
draw(0,2);
printf("\n ---+---+---\n2 ");
draw(1,0);
printf(" | ");
draw(1,1);
printf(" | ");
draw(1,2);
printf("\n ---+---+---\n3 ");
draw(2,0);
printf(" | ");
draw(2,1);
printf(" | ");
draw(2,2);
}
void check() {
int i;
for (i=0;i<3;i++) { /* Horizontal */
if (casa[i][0] == casa[i][1] && casa[i][0] == casa[i][2]) {
if (casa[i][0] == 1) win=1;
if (casa[i][0] == 2) win=2;
}
}
for (i=0;i<3;i++) { /* Vertical */
if (casa[0][i] == casa[1][i] && casa[0][i] == casa[2][i]) {
if (casa[0][i] == 1) win=1;
if (casa[0][i] == 2) win=2;
}
}
if (casa[0][0] == casa[1][1] && casa[0][0] == casa[2][2]) { /* Diagonal Cima->Baixo*/
if (casa[0][0] == 1) win=1;
if (casa[0][0] == 2) win=2;
}
if (casa[0][2] == casa[1][1] && casa[0][2] == casa[2][0]) { /* Diagonal Baixo->Cima */
if (casa[0][2] == 1) win=1;
if (casa[0][2] == 2) win=2;
}
}
void play(int player) {
if (player==1) set=1;
if (player==2) set=2;
play:
linha=0;
coluna=0;
while (linha<1 || linha>3) {
printf("\nJogador %d. Escolha a Linha (1,2,3): ",set);
scanf("%d",&linha);
getchar();
}
while (coluna<1 || coluna>3) {
printf("\nJogador %d. Escolha a Coluna (1,2,3): ",set);
scanf("%d",&coluna);
getchar();
}
linha--;
coluna--;
if (casa[linha][coluna] != 1 && casa[linha][coluna] != 2) casa[linha][coluna]=set;
else {
printf("A casa está em uso! Jogue Novamente..\n");
sleep(2);
limpa();
jogo();
goto play;
}
}
void main() {
limpa();
jogo();
play(1);
check();
if (win == 1 || win == 2) goto end;
limpa();
jogo();
play(2);
check();
if (win == 1 || win == 2) goto end;
limpa();
jogo();
play(1);
check();
if (win == 1 || win == 2) goto end;
limpa();
jogo();
play(2);
check();
if (win == 1 || win == 2) goto end;
limpa();
jogo();
play(1);
check();
if (win == 1 || win == 2) goto end;
limpa();
jogo();
play(2);
check();
if (win == 1 || win == 2) goto end;
limpa();
jogo();
play(1);
check();
if (win == 1 || win == 2) goto end;
limpa();
jogo();
play(2);
check();
if (win == 1 || win == 2) goto end;
limpa();
jogo();
play(1);
check();
if (win == 1 || win == 2) goto end;
end:
limpa();
jogo();
if (win == 1 || win == 2) printf("\nJogador %d venceu o jogo!\n",win);
else printf("\nEmpate!\n");
}
Calcular pagamento com a menor quantidade de cédulas possível
LazyDocker – Interface de Usuário em Tempo Real para o Docker
Instalando COSMIC no Linux Mint
Turbinando o Linux Mint: o poder das Nemo Actions
Inteligência Artificial no desenvolvimento de software: quando começar a usar?
[Resolvido] Algo deu errado ao abrir seu perfil
Usando o VNSTAT para medir o seu consumo de internet
Habilitando clipboard manager no ambiente COSMIC
Quando vocês pararam de testar distros? (8)
Quais licenças open source têm valor jurídico? (7)
Não estou conseguindo fazer funcionar meu Postfix na versão 2.4 no Deb... (1)









