Ir ao conteúdo
  • Cadastre-se
s4lezardv1A

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

Recommended Posts

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

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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 .

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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   .

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
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

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

finalizei com os 16 Se mesmo. nao consegui pensar em nada. E para fazer a condição de dar velha? De nenhum dos dois ganharem, o que pode ser colocado?

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×