Ir ao conteúdo

VisualG Criar jogo Joken po


Ir à solução Resolvido por devair1010,

Posts recomendados

Postado

 

Algoritmo "Exercicio.31"
Var
   resp1,resp2:inteiro
   respJ: caractere
Inicio
   Escreval ("       JO-KEN-PÔ       ")
   Escreval ("~~~~~~~~~~~~~~~~~~~~~~~")
   Escreval ("Pedra ganha da tesoura!")
   Escreval ("Tesoura ganha do papel!")
   Escreval ("Papel ganha da pedra!"  )
   Escreval ("Sinais iguais>>EMPATE!!!")
   Escreval ("~~~~~~~~~~~~~~~~~~~~~~~")
   Escreval ("        MENU           ")
   Escreval ("[1] PEDRA")
   Escreval ("[2] PAPEL")
   Escreval ("[3] TESOURA")
   Escreval ("PEDRA, PAPEL OU TESOURA!")
   Leia (respJ)
   Escolha resp1
           Caso 1
                respJ<-"pedra"
           Caso 2
                respJ<-"papel"
           Caso 3
                respJ<-"tesoura
   FimEscolha
   Aleatorio 1,2,3
   Leia (resp2)
   Aleatorio off
   Se (resp1<>resp2) então
       Escreval ("GANHOU!")
   Senao
      Se (resp1=resp2) então
          Escreval ("EMPATE!")
      FimSe
   FimSe
Fimalgoritmo

 

  • Curtir 2
  • Membro VIP
Postado

@NaieleF, você só postou um código, mas não deu qualquer outra informações sobre o que se trataria.

 

Em relação ao jogo, você está só tratando do empate, faltaria tratar dos casos possíveis...

 

Em 06/07/2024 às 12:12, NaieleF disse:
   Escreval ("Pedra ganha da tesoura!")
   Escreval ("Tesoura ganha do papel!")
   Escreval ("Papel ganha da pedra!"  )

 

A variável respJ não está sendo utilizada... Talvez ela de fato não seja necessária...

 

Poderia postar o enunciado completo da questão e em qual parte está com dúvidas?

  • Curtir 2
Postado

@Simon Viegas Gostaria de saber se a forma que fiz o código deste jogo JoKenPo está correto. É para fazê-lo usando Estruturas de Repetição no VisualG. O enunciado é o seguinte: 

 

31) [DESAFIO] Crie um jogo de JoKenPo (Pedra-Papel-Tesoura)

  • Curtir 2
  • Solução
Postado

@NaieleF    tem um erro no seu código porque você  usou respJ para pegar a opção do usuário e no escolha  usou resp1 , e precisa de mais alguns "se" para decidir quem ganhou e quem  pedreu , e aqui um exemplo de como seu código  poderia ser :

// 31) [DESAFIO] Crie um jogo de JoKenPo (Pedra-Papel-Tesoura)
// Jokenpo é uma brincadeira japonesa, onde dois jogadores escolhem
// um dentre três possíveis itens: Pedra, Papel ou Tesoura.
// O objetivo é fazer um juiz de Jokenpo que dada a jogada
// dos dois jogadores informa o resultado da partida.
Algoritmo "Exercicio.31_JoKenPo"
Var
   resp1, resp2       : inteiro
   respJ,respM , sair : caractere
Inicio
   repita
      limpatela
      Escreval ("       JO-KEN-PÔ       ")
      Escreval ("~~~~~~~~~~~~~~~~~~~~~~~")
      Escreval ("Pedra ganha da tesoura!")
      Escreval ("Tesoura ganha do papel!")
      Escreval ("Papel ganha da pedra!"  )
      Escreval ("Sinais iguais>>EMPATE!!!")
      Escreval ("~~~~~~~~~~~~~~~~~~~~~~~")
      Escreval ("        MENU           ")
      Escreval ("[1] PEDRA")
      Escreval ("[2] PAPEL")
      Escreval ("[3] TESOURA")
      Escreval ("PEDRA, PAPEL OU TESOURA!")
      // a escolha do jogador
      Leia ( resp1 )           // ( nrespJ ) atribuiu na variAvels errada
      Aleatorio 1,2,3
      Leia (resp2)             // a escolha do computador
      Aleatorio off
      respM := "Pedra"
      se resp2 = 2 então
         respM := "PapeL"
      senao
         respM := "Tesoura"
      fimse
      Se resp1 = resp2 então   // objetos iguais
         Escreval ("EMPATE!")  // empate, ninguem ganha
      senao
         Escolha resp1
         // jogador escolheu pedra
         Caso 1
            respJ <- "pedra"
            se resp2 = 2 então // computador escolheu papel
               escreval("jogador Perdeu essa !")
               escreval("PapeL Ganha de Pedra.")
            senao
               escreval("Jogador Ganhou essa !")
               escreval("Pedra Ganha de tesoura.")
            fimse
         Caso 2
            // jogador escolheu papel
            respJ <- "papel"
            // inserir os comandos igual ao caso 1
         Caso 3
            // jogador escolheu tesoura
            respJ <- "tesoura"
            // inserir os comandos igual ao caso 1
         FimEscolha
         escreval("Jogador escolheu ",respj," e o Compuyador escolheu ",respM)
      fimse
      escreva("jogar novamente S/N ")
      leia( sair )
   ate sair = "N"
Fimalgoritmo

 

  • Curtir 2
  • Membro VIP
Postado
Em 15/07/2024 às 17:05, NaieleF disse:

Gostaria de saber se a forma que fiz o código deste jogo JoKenPo está correto.

 

Sendo pragmático: não estaria correto, pois você o juiz precisa julgar de acordo com as condições do jogo (estão citadas lá no topo do código).

 

 

 

 

Faltou o outro ponto:

 

Em 08/07/2024 às 11:09, Simon Viegas disse:

e em qual parte está com dúvidas?

 

🙂

 

 

 

Só uns detalhes...

 

@devair1010, sobre:

 

Em 15/07/2024 às 21:23, devair1010 disse:
      respM := "Pedra"
      
      se resp2 = 2 então
         respM := "PapeL"
      senao
         respM := "Tesoura"
      fimse

 

Pelo verificado, só vai resultar em Papel ou Tesoura... 

Bastaria colocar um outro se:

 

      respM := "Pedra"

      se resp2 = 2 então
         respM := "PapeL"
      senao
         se resp2 = 3 então
            respM := "Tesoura"
         fimse
      fimse

 

 

 

 

Sobre:

Em 15/07/2024 às 21:23, devair1010 disse:
      Aleatorio 1,2,3
      Leia (resp2)             // a escolha do computador
      Aleatorio off

 

Apesar de não acusar erro, o comando aleatório aceita 1 ou 2 parâmetros, pois ele funciona gerando "...dados numéricos aleatórios estabelecendo uma faixa de valores mínimos e máximos" [1]. No caso estaria só sorteando apenas na faixa dos inteiros entre 1 e 2 (inclusos, ou seja, só eles mesmos).

 

 

 

Para o contexto, poderia utilizar:

 

      Aleatorio 1,3
      Leia (resp2)             // a escolha do computador
      Aleatorio off

 

 

 

Uma forma alternativa de verificar o vencedor seria pelo valor da subtração dos valores das opções escolhidas. Utilizo no exemplo do código abaixo:

 

// 31) [DESAFIO] Crie um jogo de JoKenPo (Pedra-Papel-Tesoura)
// Jokenpo é uma brincadeira japonesa, onde dois jogadores escolhem
// um dentre três possíveis itens: Pedra, Papel ou Tesoura.
// O objetivo é fazer um juiz de Jokenpo que dada a jogada
// dos dois jogadores informa o resultado da partida.
algoritmo "Exercicio.31_JoKenPo"
var
   opcaoJ, opcaoC, resultado : inteiro
   respJ, respC, sair : caractere
Inicio
   repita
      limpaTela()
      escrevaL("       JO-KEN-PÔ        ")
      escrevaL("~~~~~~~~~~~~~~~~~~~~~~~~")
      escrevaL("Pedra ganha da tesoura! ")
      escrevaL("Tesoura ganha do papel! ")
      escrevaL("Papel ganha da pedra!   ")
      escrevaL("Sinais iguais>>EMPATE!!!")
      escrevaL("~~~~~~~~~~~~~~~~~~~~~~~~")
      escrevaL("        MENU           ")
      escrevaL("[1] PEDRA")
      escrevaL("[2] PAPEL")
      escrevaL("[3] TESOURA")
      escrevaL("PEDRA, PAPEL OU TESOURA!")

      leia(opcaoJ)
      aleatorio 1,3
      leia(opcaoC)
      aleatorio OFF

      escolha opcaoJ
      caso 1
         respJ <- "PEDRA"
      caso 2
         respJ <- "PAPEL"
      caso 3
         respJ <- "TESOURA"
      fimEscolha

      escolha opcaoC
      caso 1
         respC <- "PEDRA"
      caso 2
         respC <- "PAPEL"
      caso 3
         respC <- "TESOURA"
      fimEscolha

      escreval("Jogador escolheu ", respJ, " e o Computador escolheu ", respC)

      resultado <- opcaoJ-opcaoC

      se (resultado = 0) então
         escreval("Deu empate!!!")
      senao
         se ((resultado = 1) OU (resultado = -2)) então
            escreval("Jogador ganhou!")
            escreval(respJ, " ganha de ", respC)
         senao
            se ((resultado = -1) OU (resultado = 2)) então
               escreval("Computador ganhou essa!")
               escreval(respC, " ganha de ", respJ)
            fimSe
         fimSe
      fimSe

      escreva("Jogar novamente S/N ")
      leia(sair)
   ate (sair = "N")
fimAlgoritmo
  • Curtir 1
  • Obrigado 1
Postado
Em 18/07/2024 às 12:33, Simon Viegas disse:

e em qual parte está com dúvidas?

Só gostaria da correção do algoritmo mesmo. Obrigada!

  • Curtir 1
  • DiF alterou o título para Criar jogo Joken po
  • mês depois...
Postado
algoritmo "jokenpo"
// Função :
// Autor :
// Data : 19/01/2025
// Seção de Declarações 
var
     escj, escm  :inteiro
     respj, respm :caractere
inicio
      escreval("-------------------------")
      escreval("       JOKENPO")
      escreval("-------------------------")
      escreval
      escreval("Para jogar escolha uma das opções a seguir")
      escreval("[1] Pedra")
      escreval("[2] Papel")
      escreval("[3] Tesoura")
      leia (escj)
      //Para gerar um número aleatório
      aleatorio 1,3
      leia (escm)
      aleatorio off
      // escolha do jogador
                escolha escj
                        caso 1
                        respj <- "Pedra"
                        caso 2
                        respj <- "Papel"
                        caso 3
                        respj <- "Tesoura"
                fimescolha
      //escolha da maquina
                escolha escm
                        caso 1
                        respm <- "Pedra"
                        caso 2
                        respm <- "Papel"
                        caso 3
                        respm <- "Tesoura"
                fimescolha
                //perda
                se ((escj = 1) e (escm = 2)) ou ((escj = 2) e (escm = 3)) ou ((escj = 3) e (escm = 1)) então
                   escreval("voce Perdeu =.[")
                   escreval("Você escolheu ",respj," e a maquina colocou ",respm)
                senao
                     //vitoria
                     se ((escj = 2) e (escm = 1)) ou ((escj = 3) e (escm = 2)) ou ((escj = 1) e (escm = 3)) então
                        escreval("voce Ganhou =.]")
                        escreval("Você escolheu ",respj," e a maquina colocou ",respm)
                     senao
                     //empate
                         escreval("Vocês empataram")
                         escreval("Você escolheu ",respj," e a maquina colocou ",respm)
                     fimse
                fimse
fimalgoritmo

 

  • Curtir 2
  • Membro VIP
Postado
Em 18/07/2024 às 12:33, Simon Viegas disse:
      escolha opcaoJ
      caso 1
         respJ <- "PEDRA"
      caso 2
         respJ <- "PAPEL"
      caso 3
         respJ <- "TESOURA"
      fimEscolha

      escolha opcaoC
      caso 1
         respC <- "PEDRA"
      caso 2
         respC <- "PAPEL"
      caso 3
         respC <- "TESOURA"
      fimEscolha

 

 

Para exemplificar, como existe uma verificação dupla para uma mesma coisa, poderia utilizar uma função para deixar mais organizado. Exemplo:

funcao opcaoTexto (op:inteiro) : caractere
var
   retorno : caractere
inicio
   escolha op
   caso 1
      retorno <- "PEDRA"
   caso 2
      retorno <- "PAPEL"
   caso 3
      retorno <- "TESOURA"
   fimEscolha

   retorne retorno
fimFuncao

 

Aí só usar:

      respJ <- opcaoTexto(opcaoJ)
      respC <- opcaoTexto(opcaoC)
  • Curtir 1
  • Obrigado 1
Postado

@Simon Viegas No caso eu estou fazendo as aulas do curso em Vídeo , a aprendi funçao nas aulas apos a aula que esse exercicio e proposto , hj eu sei que ficaria melhor com função inclusive usar função ou procedimento faz muito sentido ; como o curso é uma escadinha eu estava nuns degraus abaixo kkkkkkkkk, mais muito obrigado pela dica!!!

       

  • Curtir 2

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...