Jogo da Velha (corrigido)
Publicado por Hunz 02/09/2004
[ Hits: 19.698 ]
Homepage: http://tnegri.com/
O velha.c corrigido..
* Sem o uso de "goto" agora.. :)
* Com o uso do "for" para economizar várias linhas de código repetitivo :)
* Adicionei uma função que mostra se um número é divisivel por outro (retirada de um script aqui no site do VOL). Função usada para determinar de quem é a vez de jogar.
Abraços,
Fiquem com Deus;
/* ***************************************** AUTOR: Thiago ( hunz ) EMAIL / MSN: [email protected] 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=0; 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) { int i=0; if (player==1) set=1; if (player==2) set=2; play: while (i==0) { 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; i=1; } else { printf("A casa está em uso! Jogue Novamente..\n"); sleep(2); limpa(); jogo(); } } } char divi(int a, int b) { return (!(a%b)); } void main() { int i=0; for (i=0;i<9;i++) { limpa(); jogo(); if(!divi(i,2)) play(2); else play(1); check(); if (win == 1 || win == 2) i=10; } limpa(); jogo(); if (win == 1 || win == 2) printf("\nJogador %d venceu o jogo!\n",win); else printf("\nEmpate!\n"); }
Parte 2 - Sessão de estudo sobre VETORES
Parte 7 (Pesquisa) - Sessão de estudo sobre MATRIZES.
olamundo.c - Primeiro programa
Slackware para Desktop ou Notebook em 2021
Asterisk - Configurando Ramais, Plano de Discagem e URA Simples
Executando Arquivo de Mídia .opus pelo Terminal
Usando AWX no Fedora CoreOS com K3s
Instalando um localizador de aplicações avançado no seu sistema
Função dentro de outra função (2)
Torrent, Empresas começam a ir atrás de quem baixa conteúdo ilegal. (29)
Dual boot do Windows 10 com o Mint 20.1 (Ulyssa) - Não é possível inic... (2)
[Tcl/Tk] Mostrar conexões de rede ativas
[Shell Script] Bashblog v3.0 - cria um microblog em HTML5
[Shell Script] Manutenção e limpeza do Linux
[Shell Script] ebook-cli - gerencia livros digitais entre PC e leitores ebooks
[Shell Script] AptList v1.1 - instalação de pacotes DEB a partir de uma lista