Jogo da Velha
Publicado por Hunz 01/09/2004
[ Hits: 14.958 ]
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");
}
Cálculo da circunferência de um círculo
Utilizando ESTRUTURA DE DADOS (REGISTRO) - abordagem simples e rápida
Utilizando arrays, funções e arquivos de texto
File Browser: Crie sua Nuvem Pessoal Privada
A produção de áudio e vídeo no Linux e as distribuições dedicadas a esse fim
Criptografando sua Home com Gocryptfs para tristeza do meliante
A Involução do Linux e as Lambanças Desnecessárias desde o seu Lançamento
O Journal no Linux para a guarda e consulta de logs do sistema
Otimizando o uso de Memória RAM no Ubuntu com zRAM
Usando alias no Terminal para comandos longos
Simplificando o manual do terminal no Ubuntu 26.04
Bloqueio da instalação e reinstalação do Snap (snapd) no Ubuntu
Continuando meus tópicos anteriores (12)
VoidBR - Void Linux adaptado ao Brasil. (0)









