Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
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

Editado por Simon Viegas
Pequenos ajustes no título e na tag CODE
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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   .

Editado por devair1010

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

 

Editado por devair1010

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






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

×