Jogo da Velha
Publicado por Hunz 01/09/2004
[ Hits: 14.806 ]
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");
}
Dado três valores, informar o maior e menor número
Algoritmo de ordenação: Bubble Sort
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Adicionar botão "mostrar área de trabalho" no Zorin OS
Como montar um servidor de backup no linux
Trazendo de volta o Serviços em Segundo Plano no Plasma6
É normal não gostar de KDE? (21)
Servidor para arquivos e banco de dados (4)
780 mil usuários do Janelas baIxaram Linux em um mês (4)
Atualizei meu ubuntu e desliguei e ele não inicia corretamente (12)









