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:  
Johannfer

VisuAlg Jogo a senha no Visualg

Recommended Posts

Preciso fazer o ranking deste jogo, mas não estou conseguindo, se alguém puder dar uma ajuda!

Algoritmo "trab"

Var

   menu, menu1, menu2, menu3, contador1, jogador_atual, contador2, jogada, erro, identificador, identificar, certos, x, contador3: inteiro
   cores: vetor [0..5] de inteiro  //numero que identifica as cores
   senha: vetor [1..4] de inteiro // senha sorteada pela maquina
   jogadas: vetor[1..10, 1..4] de inteiro // matriz que armazena todas as 10 jogadas
   jogadores: vetor [1..10, 1..1] de inteiro // ranking

Inicio
      cores[0] <- 1
      cores[1] <- 2
      cores[2] <- 3
      cores[3] <- 4
      cores[4] <- 5
      cores[5] <- 6
      Escreval("=================================================================")
      Escreval("===========================JOGO SENHA============================")
      Escreval("=================================================================")
      Escreval("    Autores: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.")
      Escreval("=================================================================")
      Escreval("")
      repita
      Escreval("")
      Escreval("O que você deseja fazer no jogo?")
      Escreval("")
      Escreval("1- Definir jogador")
      Escreval("2- Jogar")
      Escreval("3- Ranking")
      Escreval("4- Sair")
      Leia (menu)
      SE (menu = 1) então //DEFINIR QUEM VAI JOGAR
         Escreval("1 - Jogador 1")
         Escreval("2 - Jogador 2")
         Escreval("3 - Jogador 3")
         Escreval("4 - Jogador 4")
         Escreval("5 - Jogador 5")
         Escreval("6 - Jogador 6")
         Escreval("7 - Jogador 7")
         Escreval("8 - Jogador 8")
         Escreval("9 - Jogador 9")
         Escreval("10 - Jogador 10")
         Escreval("Qual jogador você é ou deseja ser no jogo?")
         Leia(jogador_atual)
         SE (jogador_atual > 10) ou (jogador_atual < 1) então
            Escreval("Você digitou um jogador inválido, interrompendo o programa..")
            Interrompa
         FimSE
      FimSE

      SE (menu = 2) então // JOGO
         //PRONTO
         SE (jogador_atual = 0) então
            Escreval("Você não definiu um jogador ainda, defina antes de jogar!")
         FimSE
         SE (jogador_atual <> 0) então
         Para contador1 de 1 ate 4 faca
              senha[contador1] <- cores[randi(5)]
         FimPara
         Escreval("A senha já foi sorteada, portanto comece suas jogadas")
         Escreval("Para jogar, você digita uma cor que é representada por um numero")
         Escreval("Tabela:")
         Escreval("1- AMARELO == 2- AZUL == 3- MARROM")
         Escreval("4- ROSA == 5- VERMELHO == 6- ROSA")
         Para contador1 de 1 ate 10 faca
              Escreval("Digite os 4 valores da sua",contador1, " jogada.")
              Para contador2 de 1 ate 4 faca
                   Leia(jogadas[contador1, contador2])
                   SE (jogadas[contador1, contador2] < 1) então
                      Escreval("")
                      Escreval("O numero deve ser maior que zero..")
                      Escreval("Jogo encerrando...")
                      erro <- 10
                   FimSE
                   SE (jogadas[contador1, contador2] > 6) então
                      Escreval("")
                      Escreval("O numero deve ser menor que seis..")
                      Escreval("Jogo encerrando...")
                      erro <- 10
                   FimSE
                   SE (erro = 10) então
                      Interrompa
                   FimSE
                   SE (jogadas[contador1, contador2] = senha[contador2]) então
                      Escreval("===============================")
                      Escreval("PRETO NA JOGADA", contador2, "!!!")
                      Escreval("A escolha dessa jogada está certa.")
                      Escreval("Não troque essa jogada.")
                      certos <- certos +1
                   FimSE
                   SE (jogadas[contador1, contador2] <> senha[contador2]) então
                           SE ((jogadas[contador1, contador2] = senha[1]) ou (jogadas[contador1, contador2] = senha[2]) ou (jogadas[contador1, contador2] = senha[3]) ou (jogadas[contador1,contador2] = senha[4])) então
                              Escreval("===============================")
                              Escreval("Branco na jogada", contador2,"!!!")
                           FimSE
                   FimSE
              FimPara
              SE (erro = 10) então
                 Interrompa
              FimSE
              jogada <- jogada +1
                   SE (certos = 4) então
                      Escreval("VOCÊ ACERTOU A SENHA!!!")
                      Escreval("Parabéns, jogador!")
                      Escreval("Seu SCORE será aumentado.")
                      jogadores[jogador_atual, 1] <- jogadores[jogador_atual, 1] + 10
                      Interrompa
                   FimSE
                   SE (certos <> 4) e (jogada = 10) então
                      Escreval("Você não conseguiu descobrir a senha..")
                      Escreval("Seu SCORE será diminuido.")
                      jogadores[jogador_atual, 1] <- jogadores[jogador_atual, 1] - 10
                      Interrompa
                   FimSE
                   certos <- 0
         FimPara
         FimSE
      FimSE
      
      SE (menu = 3) então //RANKING
         Escreval("============== RANKING DE PONTOS ==============")
        
Fimalgoritmo

 

Editado por Simon Viegas
Ao postar um código, antes pressione o botão "<>" na barra de ferramentas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola @Johannfer.

 

Como será deveria ser esse hanking?  Então, antes de pensar nele, primeiro deixe as estruturas anteriores funcionando.. Tentei testar o seu código, mas não funcionou. Por exemplo, onde está o ate do repita?

 

Sempre mantenhas as estruturas completas.. ex.: a parte do hanking poderia ficar assim por enquanto:
 

   se (menu = 3) ENTÃO //RANKING
      escreval("============== RANKING DE PONTOS ==============")
      escrevel("")
      escrevel("     --     EM CONSTRUÇÃO     ---     ")
   fimSe

 

 

Por favor, ajuste o seu código, após tentamos verificar essa parte do hanking.

 

No aguardo.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  • Autor do tópico
  • O codigo foi modificado, preciso fazer um ranking onde o jogador selecionado apareça com sua respectiva pontuação!

    Algoritmo "trab"
    
    Var
    
       menu, menu1, menu2, menu3, contador1, jogador_atual, contador2, jogada, i, erro, identificador, identificar, certos, x, contador3, j, aux: inteiro
       cores: vetor [0..5] de inteiro  //numero que identifica as cores
       senha: vetor [1..4] de inteiro // senha sorteada pela maquina
       jogadas: vetor[1..10, 1..4] de inteiro // matriz que armazena todas as 10 jogadas
       
       pontos_jogadores: vetor [1..10] de inteiro // ranking
       houveTroca: logico
    
    Inicio
          cores[0] <- 1
          cores[1] <- 2
          cores[2] <- 3
          cores[3] <- 4
          cores[4] <- 5
          cores[5] <- 6
          Procedimento  Menu1
          inicio
                Escreval("")
                Escreval("O que você deseja fazer no jogo?")
                Escreval("")
                Escreval("1- Definir jogador")
                Escreval("2- Jogar")
                 Escreval("3- Ranking")
                  Escreval("4- Sair")
                   Leia (menu)
          FimProcedimento
          
          Escreval("=================================================================")
          Escreval("===========================JOGO SENHA============================")
          Escreval("=================================================================")
          Escreval("    Autores: Laura Johann, Douglas Madruga e Henrique Dahlem.")
          Escreval("=================================================================")
          Escreval("")
          Menu1
          SE (menu = 1) então //DEFINIR QUEM VAI JOGAR
             Escreval("1 - Jogador 1")
             Escreval("2 - Jogador 2")
             Escreval("3 - Jogador 3")
             Escreval("4 - Jogador 4")
             Escreval("5 - Jogador 5")
             Escreval("6 - Jogador 6")
             Escreval("7 - Jogador 7")
             Escreval("8 - Jogador 8")
             Escreval("9 - Jogador 9")
             Escreval("10 - Jogador 10")
             Escreval("Qual jogador você é ou deseja ser no jogo?")
             Leia(jogador_atual)
             SE (jogador_atual > 10) ou (jogador_atual < 1) então
                Escreval("Você digitou um jogador inválido, interrompendo o programa..")
                Interrompa
             FimSE
          FimSE
          Menu1
    
          SE (menu = 2) então // JOGO
             //PRONTO
             SE (jogador_atual = 0) então
                Escreval("Você não definiu um jogador ainda, defina antes de jogar!")
             FimSE
             SE (jogador_atual <> 0) então
             Para contador1 de 1 ate 4 faca
                  senha[contador1] <- cores[randi(5)]
             FimPara
             Escreval("A senha já foi sorteada, portanto comece suas jogadas")
             Escreval("Para jogar, você digita uma cor que é representada por um numero")
             Escreval("Tabela:")
             Escreval("1- AMARELO == 2- AZUL == 3- MARROM")
             Escreval("4- ROSA == 5- VERMELHO == 6- ROSA")
             Para contador1 de 1 ate 10 faca
                  Escreval("Digite os 4 valores da sua",contador1, " jogada.")
                  Para contador2 de 1 ate 4 faca
                       Leia(jogadas[contador1, contador2])
                       SE (jogadas[contador1, contador2] < 1) então
                          Escreval("")
                          Escreval("O numero deve ser maior que zero..")
                          Escreval("Jogo encerrando...")
                          erro <- 10
                       FimSE
                       SE (jogadas[contador1, contador2] > 6) então
                          Escreval("")
                          Escreval("O numero deve ser menor que seis..")
                          Escreval("Jogo encerrando...")
                          erro <- 10
                       FimSE
                       SE (erro = 10) então
                          Interrompa
                       FimSE
                       SE (jogadas[contador1, contador2] = senha[contador2]) então
                          Escreval("===============================")
                          Escreval("PRETO NA JOGADA", contador2, "!!!")
                          Escreval("A escolha dessa jogada está certa.")
                          Escreval("Não troque essa jogada.")
                          certos <- certos +1
                       FimSE
                       SE (jogadas[contador1, contador2] <> senha[contador2]) então
                               SE ((jogadas[contador1, contador2] = senha[1]) ou (jogadas[contador1, contador2] = senha[2]) ou (jogadas[contador1, contador2] = senha[3]) ou (jogadas[contador1,contador2] = senha[4])) então
                                  Escreval("===============================")
                                  Escreval("Branco na jogada", contador2,"!!!")
                               FimSE
                       FimSE
                  FimPara
                  SE (erro = 10) então
                     Interrompa
                  FimSE
                  jogada <- jogada +1
                       SE (certos = 4) então
                          Escreval("VOCÊ ACERTOU A SENHA!!!")
                          Escreval("Parabéns, jogador!")
                          Escreval("Seu SCORE será aumentado.")
                          pontos_jogadores[jogador_atual] <- pontos_jogadores[jogador_atual] + 10
                          Interrompa
                       FimSE
                       SE (certos <> 4) e (jogada = 10) então
                          Escreval("Você não conseguiu descobrir a senha..")
                          Escreval("Seu SCORE será diminuido.")
                          pontos_jogadores[jogador_atual] <- pontos_jogadores[jogador_atual] - 10
                          Interrompa
                       FimSE
                       certos <- 0
             FimPara
             FimSE
          FimSE
          Menu1
          
          SE (menu = 3) então //RANKING
             Escreval("============== RANKING DE PONTOS ==============")
             houveTroca <- verdadeiro
             ENQUANTO houveTroca FACA
                      houveTroca <- FALSO
                      PARA j de 1 ATE 10-1 FACA
                           SE pontos_jogadores[j] < pontos_jogadores[j+1] então
                                  aux <- pontos_jogadores[j+1]
                                      pontos_jogadores[j+1] <- pontos_jogadores[j]
                                  pontos_jogadores[j] <- aux
                                  houveTroca <- verdadeiro
                             FIMSE
                      FIMPARA
             FimEnquanto
    
    
             Para contador1 de 1 ate 10 faca
                  Escreval("Pontuação do jogador", contador1,":", pontos_jogadores[contador1])
             FimPara
          FimSE
          Menu1
          SE (menu = 4) então
             Interrompa
          FimSE
    Fimalgoritmo

     

    Editado por Simon Viegas
    Antes de colar um códgio, favor usar a tag CODE. Pressionar "BOTÃO <>" na barra de ferramentas.

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá @Johannfer.

     

    Primeiramente creio que precisa ajustar alguns conceitos aplicados no código.

     

    1) INDENTAÇÃO DE CÓDIGO

    Seu código até que está parcialmente indentado, mas alguns espaçamentos estão fora do compasso... a minha sugestão seria usar 3, e somente 3, espaços para cada "dente". Para facilitar tente configurar a tabulação do VisuAlg.

     

    - Vá no Menu "Manutenção/Configurações"
    - Na guia "Editor", desmarque a opção "Usar tabulação inteligente", e deixe a "largura de tabulação" em 3.

     

     

     

    2) DECLARAÇÃO DE PROCEDIMENTO

    Você está declarando o procedimento dentro do corpo do programa principal... o VisuAlg até está aceitando, só não sei se é por bug ou se é um funcionalidade...

     

    Enfim... a mais "normal" seria declarar antes do INICIO do programa principal... algo assim:

     

    Algoritmo "trab"
    Var
       menu, menu1, menu2, menu3, contador1, jogador_atual, contador2, jogada, i, erro, identificador, identificar, certos, x, contador3, j, aux: inteiro
       cores: vetor [0..5] de inteiro  //numero que identifica as cores
       senha: vetor [1..4] de inteiro // senha sorteada pela maquina
       jogadas: vetor[1..10, 1..4] de inteiro // matriz que armazena todas as 10 jogadas
    
       pontos_jogadores: vetor [1..10] de inteiro // ranking
       houveTroca: logico
    
    Procedimento  Menu1
       inicio
       Escreval("")
       Escreval("O que você deseja fazer no jogo?")
       Escreval("")
       Escreval("1- Definir jogador")
       Escreval("2- Jogar")
       Escreval("3- Ranking")
       Escreval("4- Sair")
       Leia (menu)
    FimProcedimento
    
    Inicio
    cores[0] <- 1
    cores[1] <- 2
    ...

     

     

     

    3) ESTRUTURA DE SELEÇÃO

    No seu código, você está lendo a opção do menu antes de cada verificação de condição, mas deveria "entrar no menu" uma vez só... ou seja, verifica qual opção ele escolheu, daí usa os se para "selecionar" a opção ele fez. Mais abaixo complemento quando falar de menus...

     

     

     

    4) USO DE MENUS

    Menu é um conceito...  é uma abstração de como é utilizado na vida real.. basicamente é constituído de um laço de repetição, lista de opções, variável para obter a opção escolhida e uma estrutura de seleção (se ou caso) para selecionar qual parte do código será executada.

     

    Resumidamente, o código poderia ficar algo assim:

    Algoritmo "trab"
    Var
       menu, menu1, menu2, menu3, contador1, jogador_atual, contador2, jogada, i, erro, identificador, identificar, certos, x, contador3, j, aux: inteiro
       cores: vetor [0..5] de inteiro  //numero que identifica as cores
       senha: vetor [1..4] de inteiro // senha sorteada pela maquina
       jogadas: vetor[1..10, 1..4] de inteiro // matriz que armazena todas as 10 jogadas
    
       pontos_jogadores: vetor [1..10] de inteiro // ranking
       houveTroca: logico
    
    Procedimento  Menu1
       inicio
       Escreval("")
       Escreval("O que você deseja fazer no jogo?")
       Escreval("")
       Escreval("1- Definir jogador")
       Escreval("2- Jogar")
       Escreval("3- Ranking")
       Escreval("4- Sair")
       Leia (menu)
    FimProcedimento
    
    Inicio
    cores[0] <- 1
    cores[1] <- 2
    cores[2] <- 3
    cores[3] <- 4
    cores[4] <- 5
    cores[5] <- 6
    repita
       {LimpaTela} //limpa a tela
       Escreval("=================================================================")
       Escreval("===========================JOGO SENHA============================")
       Escreval("=================================================================")
       Escreval("    Autores: Laura Johann, Douglas Madruga e Henrique Dahlem.")
       Escreval("=================================================================")
       Escreval("")
       Menu1
       SE (menu = 1) ENTÃO //DEFINIR QUEM VAI JOGAR
    
       FimSE
       SE (menu = 2) ENTÃO // JOGO
    
       FimSE
    
       SE (menu = 3) ENTÃO //RANKING
    
       FimSE
       SE (menu = 4) ENTÃO
    
       FimSE
    ate menu=4
    FimAlgoritmo

    obs.: pelo que eu vi as variáveis menu1, menu2  e menu3 não estão sendo usadas, logo não devem ser declaradas.

     

     

     

    ***

     

    Tente corrigir esses pontos, daí partimos para questão do ranking. Faça o jogo completar normalmente algumas vezes numa mesma execução... Tente imaginar (sem implementar ainda) que ao fim de cada jogo o programa irá armazenar os dados da partida..  no momento oportuno irá tratar esses dados para exibir como um ranking.

     

    RESUMINDO: faça o programa rodar como se não existisse ranking! o que importa antes é o jogo.

     

    No aguardo.

    Editado por Simon Viegas
    • Curtir 1

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites
  • Autor do tópico
  • Olá @Simon Viegas!

    O ranking está feito, porém não funciona! heheh  

    O que acontece é :

    A pontuação não soma e nem subtrai, caso o jogador acerte ou erre, sempre vai dar o mesmo valor!

    Caso um jogador jogue mais de uma vez, o programa cria mais um jogador com a pontuação que o mesmo fez na jogada referente, ou seja, pode ter duas Marias com pontuações diferentes, sendo uma unica jogadora!!

    trab.docx

    Editado por Johannfer

    Compartilhar este post


    Link para o post
    Compartilhar em outros sites

    Olá @Johannfer

     

    Para tentarmos alinhar os raciocínios, por favor, tente seguir (ou não) cada um dos item abaixo, daí responde cada um dizendo se vai seguir ou não, contra-argumentando ou onde está com dúvidas, ok?

     

     

    1) USO DE MENUS (Urgente!)

    No seu código, você está usando o procedimento Menu1 para chamar o procedimento jogar, e dentro de jogar está chamado novamente Menu1. Você NÃO PODE FAZER ISSO. O correto é deixar o jogar terminar para voltar para o Menu1. Veja, os procedimentos no VisuAlg são como sub-programas... Cada vez que um procedimento ou função é chamada, ele é empilhado na "pilha de processos", algo assim:

     

    *** Ao iniciar, o "processo principal" é aberto no Windows. Ai, ao chamar o Menu1, é aberto um sub-processo que fica em cima do programa anterior... Ao chamar Jogar, ele ficará em cima de Menu1... Daí, o "correto" seria deixar o Jogar terminar para voltar para o Menu1, e aí poder selecionar outro opção de menu para abrir um novo sub-processo ou finalizar (tem que ser "uso, fecho e volto, uso fecho e volto)... do jeito que está sendo feito, o jogar está iniciando um novo Menu1, entende? Ficando algo assim:

     

    Pilha de processos

    MENU1
    JOGAR
    MENU1
    PROGRAMA_PRINCIPAL

    Ao continuar, o Menu1 lá de cima (onde estará rodando no momento) iria chamado um novo Jogar, aumentado a pilha de processos... tá dando para entender?  Isso está conceitualmente errado!!! Não pode!

     

    Para corrigir isso, veja o item 4) da minha postagem anterior.  De lá, você pode adaptar ao seu novo código... ou seja, deixando o repita/ate dentro do menu. Entenda que ao finalizar um sub-programa, a execução do programa volta para a próximo linha após onde ele foi chamado!!!

     

     

     

    2) INDENTAÇÃO

    Seu código lá no docx para mim ainda está bagunçado, por favor, verifique o item 1 da minha postagem anterior. Para melhor entendimento do algoritmo é necessário que o código esteja indentado corretamente. Organize o seu código e poste ele diretamente na postagem (sem anexo)... basta clicar no botão <>, cola o código texto e inserir.

     

    Resumindo: indente seu código e poste ela usando a tag CODE  (botão <>).

     

     

     

    3) GERAÇÃO DE NÚMEROS ALEATÓRIOS

    No seu código você está usando:

    1 hora atrás, Johannfer disse:
    
    senha[contador1] <- cores[randi(5)]

     

     

    Mas veja, o vetor cores vai de 0 a 5, ou seja, são 6 posições!! Dessa forma só está sorteando 5 números: 0 a 4. E o 5?

     

    Se tiver dúvidas, pouco sobre o Randi() aqui:

    http://www.apoioinformatica.inf.br/produtos/item/30-as-funcoes-do-visualg-versao-2-0

     

    Qualquer coisa dá um Google.

     

     

     

    4) VARIÁVEIS "MENU"

    Para que servem essa variáveis menu1, menu2, menu3? Onde estão ou deveriam está  sendo usadas.. na minha postagem anterior cheguei a comentar sobre elas:

     

    Em 20/06/2017 às 11:58, Simon Viegas disse:

    obs.: pelo que eu vi as variáveis menu1, menu2  e menu3 não estão sendo usadas, logo não devem ser declaradas.

     

     

     

     

    5) VARIÁVEL CONT

    Pelo que eu vi, a variável cont é desnecessária, apenas use:

      jogador_atual<-jogador_atual+1

     

     

     

    6) GERAÇÃO DA SENHA

     

    Em 19/06/2017 às 20:55, Johannfer disse:
    
          para contador1 de 1 ate 4 faca
             senha[contador1] <- cores[randi(5)]
          fimPara
          para i de 1 ate 4 faca
             escreva(senha[i])
          fimPara

     

    Dá para juntar e deixar um para só... após sortear, exibe o número.

     

     

     

     

    ****

     

    Lembrando: todos os pontos são importantes!!! Não dá para pular etapas, senão embola tudo!! Quanto maior o programa, mais difícil fica identificar os erros e tentar corrigir... o algoritmo já deve ir iniciando com os conceitos "certos".. 

     

    Antes de qualquer coisa coisa... corrija o item 1 desta postagem! Aproveita já fazendo com item 2.

     

    Só após isso, tente corrigir os outros aos poucos!

     

    No aguardo.

     

    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

    ×