Jogo da Velha (corrigido)
Publicado por Hunz 02/09/2004
[ Hits: 20.187 ]
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: 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=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"); }
Mostrando as palavras digitadas ao contrário!
Algoritmo de ordenação: Inserction Sort
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Erro ao baixar video com ytdlp no linux[AJUDA] (1)
Pendrive não formata de jeito nenhum (4)
Problemas ao instalar o PHP (10)
Descompactar arquivos winrar no linux (9)
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (12)