Ir ao conteúdo
  • Cadastre-se

VisualG Fazer a matriz dar um loop até condição


Posts recomendados

Boa noite pessoa, dentro do meu codigo eu tenho uma matriz. Do jogo da velha. do vetor tab eu tenho numeros de 1 ate 9 e do vetor rep tambem de 1 ate 9 , mas somente o tab recebe o X ou O. então eu quero colocar uma condição, que o usuario leia a jogada. Verifique o numero que ele leu na matriz  rep e veja se a matriz tab na mesma posição tem X ou O. Ate ai eu fiz. Mas que quero que a cada novo leia, ele veja a matriz inteira novamente. O que ele esta fazendo: coloquei X e O na primeira e segunda posição da matriz TAB. quando digito novamente 1 ele da como ocupada, quando digito 2 ele tambem da como ocupada. Mas quando digito novamente 1 ele n zera a matriz e continua a contagem normalmente ate o final:

 

 para m de 1 ate 3 faca
      para n de 1 ate 3 faca
// aqui nesse primeiro eu encontro onde é a jogada
         se numpcarac(jogada1) = rep[m,n] então
//aqui faz a comparação das duas matrizes
            se tab[m,n] <> rep[m,n] então
               repita

                  escreval(" posição ja preenchida!")
                  escreva(jogador1," escolha a sua jogada novamente:")
                  leia (jogada1)
               ate (rep[m,n] <> numpcarac(jogada1))
               m<-1
               n<-1
            fimse
         fimse
      fimpara
   fimpara

O que posso fazer para ele zerar a contagem, e verificar desde o começo esse codigo novamente sempre a cada leia?

 
adicionado 32 minutos depois

Conseguiiiiiiiiiiiiiiiiiiiii!! Afff 1:30 tentando. Coloquei um repita logico e a matriz dentro, se FALSO repita, se VERDADEIRO não repita. Alguem sabe se tem outro jeito(deve ter) de resolver? só por curiosidade

  • Amei 1
Link para o comentário
Compartilhar em outros sites

agora, devair1010 disse:

@s4lezardv1A     isso mesmo , essa parte do código precisa ficar dentro de um laço de repetição ,  esse é o melhor jeito .

valeu devair! Não acredito q era tão simples assim, quebrei a cabeça kk. Agora estou na parte da condição para vitorias. Por enquanto estou pensando só em SE(if). Se linha, se diagonal,se coluna igual a X...etc. Tem outro jeito de fazer isso? To pensando em tentar fazer dentro de uma matriz novamente.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@s4lezardv1A     verifique usando o se mesmo , e verifique apenas as oito maneiras de se fazer a linha que vence ou seja uma das três linhas completas com três caracteres do mesmo tipo X ou O , e as três colunas também e depois as duas diagonais .em caso afirmativo a pessoa que controla o caractere venceu .

Link para o comentário
Compartilhar em outros sites

agora, devair1010 disse:

@s4lezardv1A     verifique usando o se mesmo , e verifique apenas as oito maneiras de se fazer a linha que vence ou seja uma das três linhas completas com três caracteres do mesmo tipo X ou O , e as três colunas também e depois as duas diagonais .em caso afirmativo a pessoa que controla o caractere venceu .

consigo verificar somente então com 8 possibilidades para os 2 jogadores? A condição ficaria bem grande né? assim: 

 se (tab[1,1]=jog1rep) e (tab[1,2]=jog1rep) e (tab[1,3]=jog1rep) então

jog1rep representa o que o jogador 1 escolheu, X ou 0. Nessa eu só fiz a primeira linha, teria que ter então mais 7 SE (16 no total) E no seu caso, 8 no total isso? A unica forma que eu penso em deixar só com 8 SE é se eu escrever uma condição longa mesmo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

@s4lezardv1A    você pode fazer só com uma linha usando o ou ,  por exemplo  :

se (condicao) ou (condicao) ou (condicao) ou (condicao) ou (condicao) ou (condicao) ou (condicao) ou (condicao) ENTÃO
  escreval("jogador",Tal," Ganhou ! . . .")
fimse

mas ficaria muito difícil e trabalhoso , creio que seria melhor usar esses oito se mesmo   .

Link para o comentário
Compartilhar em outros sites

agora, devair1010 disse:

@s4lezardv1A    você pode fazer só com uma linha usando o ou ,  por exemplo  :


se (condicao) ou (condicao) ou (condica) ou (condica) ou (condicao) ou (condicao) ou (condicao) ou (condicao) ENTÃO
  escreval("jogador",Tal," Ganhou ! . . .")
fimse

mas ficaria muito difícil e trabalhoso , creio que seria melhor usar esses oito se mesmo   .

usando esses 8 SE então poderia ser assim?

se tab 11 e tab 12 e tab 13 = 0 ou tab11 e tab12 e tab13=X então? isso

 

uma duvida que surgiu agora. Tem como unir essas posições? tipo, eu quero q a primeira linha ganhe se tudo for X. posso escrever se (tab11 e tab 12 e tab 13)= X então. se que tem como fazer algo do tipo?

adicionado 3 minutos depois
2 minutos atrás, s4lezardv1A disse:

usando esses 8 SE então poderia ser assim?

se tab 11 e tab 12 e tab 13 = 0 ou tab11 e tab12 e tab13=X então? isso

 

uma duvida que surgiu agora. Tem como unir essas posições? tipo, eu quero q a primeira linha ganhe se tudo for X. posso escrever se (tab11 e tab 12 e tab 13)= X então. se que tem como fazer algo do tipo?

Deu certo esse ultimo kkkk, vai diminuir um tanto.

  • Amei 1
Link para o comentário
Compartilhar em outros sites

@s4lezardv1A     esqueci que na verdade seria então 16 se pois precisa verificar se o X ganhou e se o O ganhou e cada um precisa de oito se ,  e desse jeito que você disse não funciona , você precisa comparar cada opção com o caractere , assim  :

se ((tab[1,1]="X") e (tab[1,2]="X") e (tab[1,3]="X")) ENTÃO // isso verifica uma linha

 

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois...

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...