FórumGdH

Página Inicial do Guia do Hardware

Registrar FAQ Calendário Pesquisar Mensagens de Hoje Marcar Fóruns Como Lidos

Voltar   FórumGdH > Profissional > Programação, scripts, web e banco de dados
Bem-vindo ao FórumGdH
Não se esqueça de se registrar, é grátis . Nós temos 759.272 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.

Resposta
 
Opções do Tópico
Antigo 02-06-2004, 21:43   #1 (permalink)
andrealoisio
Novo Membro
 
Registrado em: Apr 2003
Localização: Campinas
Mensagens: 131
Reputação: 19 andrealoisio está indo no caminho certo
Enviar mensagem via ICQ para andrealoisio Enviar mensagem via MSN para andrealoisio
Padrão Ajuda Jogo da velha em C

O seguinte código dá erro quando digito linha 1 coluna 3 e também linha 2 coluna 3,

Alguém poderia me ajudar

é um jogo da velha simples

Código:
#include <stdlib.h> #include <stdio.h> #include <conio.h> char veia[2][2][1]; void zerar_vetor(void){ int a,b; for (a=0;a<=2;a++) for (b=0;b<=2;b++) veia[a][b][0]=' '; } void escrever(void){ int a,b; for (a=0;a<=2;a++) for (b=0;b<=2;b++) printf("%c",veia[a][b][0]); } int cheia(void){ int a,b; char flag='s'; for (a=0;a<=2;a++) for (b=0;b<=2;b++) if (veia[a][b][0]==' ') flag = 'n' ; if (flag=='s') return 1; if (flag=='n') return 0; } void desenhar(void){ printf("\n\n %c | %c | %c",veia[0][0][0],veia[0][1][0],veia[0][2][0]); printf("\n | | "); printf("\n ------------- "); printf("\n | | "); printf("\n %c | %c | %c",veia[1][0][0],veia[1][1][0],veia[1][2][0]); printf("\n ------------- "); printf("\n | | "); printf("\n %c | %c | %c\n\n",veia[2][0][0],veia[2][1][0],veia[2][2][0]); } int checar(char x){ char alguemGanhou[1]; alguemGanhou[0]='n'; if ((veia[0][0][0]==x) && (veia[0][1][0]==x) && (veia[0][2][0]==x)) alguemGanhou[0]='s'; if ((veia[1][0][0]==x) && (veia[1][1][0]==x) && (veia[1][2][0]==x)) alguemGanhou[0]='s'; if ((veia[2][0][0]==x) && (veia[2][1][0]==x) && (veia[1][2][0]==x)) alguemGanhou[0]='s'; if ((veia[0][0][0]==x) && (veia[0][1][0]==x) && (veia[0][2][0]==x)) alguemGanhou[0]='s'; if ((veia[1][0][0]==x) && (veia[1][1][0]==x) && (veia[1][2][0]==x)) alguemGanhou[0]='s'; if ((veia[2][0][0]==x) && (veia[2][1][0]==x) && (veia[2][2][0]==x)) alguemGanhou[0]='s'; if ((veia[0][0][0]==x) && (veia[1][1][0]==x) && (veia[2][2][0]==x)) alguemGanhou[0]='s'; if ((veia[0][2][0]==x) && (veia[1][1][0]==x) && (veia[2][0][0]==x)) alguemGanhou[0]='s'; if (alguemGanhou[0]=='s') return 1; if (alguemGanhou[0]=='n') return 0; } void main(){ char jogarCom[1]; char xo[1]; int linha, coluna; zerar_vetor(); jogarCom[0]=' '; while ((jogarCom[0]!='O') && (jogarCom[0]!='X')) { clrscr(); printf("\n\n\n\nO Primeiro Jogador jogara com X ou com O? -> "); scanf("%s",&jogarCom); if ((jogarCom[0]!='O') && (jogarCom[0]!='X')){ printf("\n\nVocê deve digitar apenas X ou O\n\n"); system("pause"); } } clrscr(); xo[0]='0'; while((checar(xo[0])!=1) && (cheia()!=1)) { escrever(); desenhar(); printf("\n\nJogador %c\n",jogarCom[0]); printf("Digite a linha : "); scanf("%d",&linha); printf("Digite a coluna : "); scanf("\n%d",&coluna); veia[linha-1][coluna-1][0]=jogarCom[0]; clrscr(); desenhar(); if (checar(jogarCom[0])==1) { printf("\n\nJogador %c ganhou\n\n",jogarCom[0]); break; } if (jogarCom[0]=='X') { jogarCom[0]='O'; }else{ jogarCom[0]='X'; }//while if(cheia()){ printf("\n\nDEU VÉIA !!!!\n\n\n"); system("pause"); } clrscr(); } }
andrealoisio está offline   Responder com Quote
Antigo 03-06-2004, 19:07   #2 (permalink)
jqueiroz
Highlander
 
Avatar de jqueiroz
 
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756 jqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputação
Padrão

1. Um vetor de caracteres com tamanho 1 é a mesma coisa que um caracter. Evite usar, então "veia[2][2][1]", use apenas "veia[2][2]".

2. O jogo da velha tem 3 colunas e 3 linhas, não 2 :wink:

3. O que acontece se eu digitar "linha 30, coluna 50" ??? :wink: :wink: :wink:
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns
jqueiroz está offline   Responder com Quote
Antigo 04-06-2004, 8:43   #3 (permalink)
andrealoisio
Novo Membro
 
Registrado em: Apr 2003
Localização: Campinas
Mensagens: 131
Reputação: 19 andrealoisio está indo no caminho certo
Enviar mensagem via ICQ para andrealoisio Enviar mensagem via MSN para andrealoisio
Padrão

Citação:
Postado Originalmente por jqueiroz
1. Um vetor de caracteres com tamanho 1 é a mesma coisa que um caracter. Evite usar, então "veia[2][2][1]", use apena...
Ok, eu já tirei isso que vc falou do ficando assim veia[?][?]

porém mesmo assim não funcionou

Coloquei apenas duas posições pois pensei que o C considerasse o 0 como uma posição

estou errado??

Brigadão
andrealoisio está offline   Responder com Quote
Antigo 04-06-2004, 12:40   #4 (permalink)
Tubiluki
Veterano
 
Registrado em: Jun 2002
Localização: japão
Mensagens: 1.090
Reputação: 22 Tubiluki está indo no caminho certo
Enviar mensagem via ICQ para Tubiluki Enviar mensagem via MSN para Tubiluki
Padrão

Citação:
Postado Originalmente por andrealoisio
Coloquei apenas duas posições pois pensei que o C considerasse o 0 como uma posição

estou errado??
nao vc esta certo..

mas por exemplo.. um vetor[2]... tem as posicoes 0 e 1.. e nao 0 1 e 2.. e assim vai... o q tah dentro do colchetes na hora de declarar eh o numero de posicoes e nao a ultima....
Tubiluki está offline   Responder com Quote
Antigo 04-06-2004, 15:32   #5 (permalink)
jqueiroz
Highlander
 
Avatar de jqueiroz
 
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756 jqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputaçãojqueiroz tem uma fabulosa reputação
Padrão

Citação:
estou errado??
Sim. A declaração correta seria "char veia[3][3];". Seria não, é --- eu testei o programa aqui :mrgreen: .

Citação:
3. O que acontece se eu digitar "linha 30, coluna 50" ???
Vc não faz a crítica dos valores recebidos, cuidado... vc nunca pode confiar no que um simples humano mortal lhe informa, ainda mais quando esse humano mortal é um reles usuário.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns
jqueiroz está offline   Responder com Quote
Antigo 07-06-2004, 8:36   #6 (permalink)
andrealoisio
Novo Membro
 
Registrado em: Apr 2003
Localização: Campinas
Mensagens: 131
Reputação: 19 andrealoisio está indo no caminho certo
Enviar mensagem via ICQ para andrealoisio Enviar mensagem via MSN para andrealoisio
Padrão

Citação:
Postado Originalmente por jqueiroz
Citação:
estou errado??
Sim. A declaração correta seria "char veia[3][3];". Seria não, é --- eu testei ...

Valew mesmo amigo, agora que já verifiquei esse erro posso continuar com o jogo inclusive a validação dos dados digitados... Valew :lol:
andrealoisio está offline   Responder com Quote
Resposta


Opções do Tópico

Regras de Mensagens
Você não pode criar tópicos
Você não pode postar respostas
Você não pode anexar arquivos
Você não pode editar suas mensagens

Código vB está Ligado
Smiles estão Ligado
Código [IMG] está Ligado
Código HTML está Desligado
Ir para...


Horários baseados na GMT -3. Agora são 9:05.