Ir ao conteúdo
  • Cadastre-se

VisualG Problemas aqui com um algoritmo de cadastro. Sou iniciante...


Posts recomendados

Olá pessoal, preciso de ajuda em um algoritmo, ele ta quase pronto, porém preciso que o cadastro ocorra de 1 em 1 e em vez de mostrar o preço do produto, mostrar o Código do Produto mais caro/barato.

Algoritmo:
algoritmo "semnome"
Var
m: vetor[1..50] de inteiro
l:inteiro
tela : inteiro
c : inteiro
valor : real
caro : real
barato : real
sub : inteiro
cont : inteiro
Inicio
repita
escreval("1 - Cadastrar Produto")
escreval("2 - Visualizar Produto")
escreval("3 - Alterar Produto")
escreval("4 - Relatórios")
escreval("5 - Fechar Sistema")
leia(tela)
{Cadastrar}
se tela = 1 entao
limpatela
  para l de 1 ate 5 faca
      escreval("Informe o Código do Produto:")
      leia(m[l])
      cont <- cont + 1
      escreval("Informe o valor do produto cadastrado:")
      leia(valor)
  fimpara
fimse
limpatela
{Visualizar Produto}
se tela=2 entao
  para l de 1 ate 5 faca
   escreval("O produto cadastrado é:", m[l])
  fimpara
fimse
{Alterar Produto}
se tela=3 entao
limpatela
para l de 1 ate 5 faca
escreval(" Os produtos cadastrados são:", m[l])
fimpara
  para l de 1 ate 5 faca
   escreval("Informe o código do produto que deseja alterar:")
   leia(c)
   se c = (m[l]) entao
   escreval("Agora informe o novo código do produto")
   leia (m[l])
   fimse
  fimpara
fimse
{Sub telas}
se tela=4 entao
limpatela
escreval("1 - Exibe o produto mais caro")
escreval("2 - Exibe o produto mais barato")
escreval("3 - Exibe a quantidade de produtos cadastrados")
escreval("4 - Exibir a média dos produtos cadastrados")
leia (sub)
{Valor do produto mais caro}
se sub=1 entao
limpatela
 para l de 1 ate 10 faca
  se valor > caro entao
  caro <- valor
  fimse
 fimpara
 escreval (" O valor do produto mais caro é :" , caro)
fimse
fimse
{Valor do produto mais barato}
se sub=2 entao
limpatela
  para l de 1 ate 10 faca
   se valor < barato entao
   barato <- valor
   fimse
   fimpara
   escreval (" O valor mais barato é :" , barato)
fimse
{Quantidade de produtos cadastrados}
se sub=3 entao
limpatela
  para l de 1 ate 1 faca
   escreval(" A quantidade de produtos cadastrados são:", cont)
  fimpara
fimse
{Fechar programa}
se tela=5 entao
fimse
ate tela = 5

 

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

@Biscatão da Boate     para postar seu código é melhor usar o botão   <>   que está lá na barra de ferramentas da janela de postar , e  seu código está bom , mas para saber o código do produto mais caro e mais barato , você pode colocar mais um vetor para guardar o valor do produto e depois verificar no vetor , então seu código poderia ser assim  :

Código:

Spoiler

algoritmo "codigo produto"
Var
  cod_produto,v_prod : vetor[1..50] de inteiro
  l,tela,c,sub,cont  : inteiro
  valor,caro,barato  : real
  media,total        : real
  flag               : logico
  a                  : caractere
procedimento pula_linhas
inicio
  escreval
  escreval
fimprocedimento
Inicio
  repita
    sub := 0
    escreval("1 - Cadastrar Produto ")
    escreval("2 - Visualizar Produto")
    escreval("3 - Alterar Produto   ")
    escreval("4 - Relatórios        ")
    escreval("5 - Fechar Sistema    ")
    leia(tela)
    {Cadastrar}
    se tela = 1 entao
      limpatela
      repita
        cont <- cont + 1
        escreva("Informe o Código do Produto : ")
        leia( cod_produto[cont] )
        escreva("Informe o valor do produto cadastrado : ")
        leia( v_prod[cont] )
        se cont = 1 entao
          barato := v_prod[cont]
        fimse
        escreva("Quer cadastrar outro produto  S/N ")
        leia( a )
      ate a = "n"
    fimse
    limpatela
    {Visualizar Produto}
    se tela=2 entao
      para l de 1 ate cont faca
        escreval("O código do",l,"º produto cadastrado é --: ",cod_produto[l] )
      fimpara
      pula_linhas
    fimse
    {Alterar Produto}
    se tela=3 entao
      limpatela
      para l de 1 ate cont faca
        escreval("O código  dos produtos cadastrados são --: ",cod_produto[l])
      fimpara
      escreval
      flag := falso
      escreva("Informe o código do produto que deseja alterar --: ")
      leia( c )
      para l de 1 ate cont faca
        se c = cod_produto[l] entao
          flag := verdadeiro
          escreva("Agora informe o novo código do produto ")
          leia( cod_produto[l] )
          escreval("Produto alterado com sucesso !")
          interrompa
        fimse
      fimpara
      se nao flag entao
        escreval("Código não localizado !")
      fimse
      pula_linhas
    fimse
    {Sub telas}
    se tela=4 entao
      limpatela
      escreval("1 - Exibe o produto mais caro")
      escreval("2 - Exibe o produto mais barato")
      escreval("3 - Exibe a quantidade de produtos cadastrados")
      escreva ("4 - Exibir a média dos produtos cadastrados")
      leia (sub)
      {Valor do produto mais caro}
      se sub=1 entao
        limpatela
        caro := 0
        para l de 1 ate cont faca
          se caro <  v_prod[ l ] entao
             caro <- v_prod[ l ]
             c := l  // marca a posição no vetor, do codigo do mais caro
          fimse
        fimpara
        escreval("O valor do produto mais caro é --: ",caro)
        escreval("e o codigo do mais caro é -------: ",cod_produto[ c ])
      fimse
      pula_linhas
    fimse
    {Valor do produto mais barato}
    se sub=2 entao
      limpatela
      c := 1
      para l de 1 ate cont faca//cont é o total de cadastro realizado
        se barato >  v_prod[ l ] entao
          barato  <- v_prod[ l ]
          c := l     // marca a posição no vetor do mais barato
        fimse
      fimpara
      escreval("O valor mais barato é --------: ",barato)
      escreval("e o código do mais barato é --: ",cod_produto[ c ])
      pula_linhas
    fimse
    {Quantidade de produtos cadastrados}
    se sub=3 entao
      limpatela
      para l de 1 ate 1 faca
        escreval("A quantidade de produtos cadastrados são --: ",cont)
      fimpara
      pula_linhas
    fimse
    {media }
    se sub = 4 entao
      total := 0
      media := 0
      para l de 1 ate cont faca
        total := total + v_prod[ l ]
      fimpara
      media := total / cont
      escreval("O valor médio dos produtos é ---: ",media)
      pula_linhas
    fimse
    {Fechar programa}
    se tela=5 entao
      escreval("Saindo do programa !")
      pula_linhas
    fimse
  ate tela = 5
Fimalgoritmo

 

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

@Biscatão da Boate    o procedimento é como uma função , então quando o compilador encontra a chamada do procedimento ele para a execução do programa e vai para o inicio do procedimento e executa o que está nele até encontrar o fimprocedimento e volta de onde parou ,  e nesse procedimento aí ele apenas pula duas linhas e isso para diminuir o tamanho do código ,  e a flag  poderia ser qualquer variável  e foi usada para detectar  se existe o código produto informado na hora de alterar , assim se encontrar o código ela recebe o valor lógico " verdadeiro "  e o interrompa para

para a procura , já que foi encontrado o dado procurado então não precisa continuar procurando no restante do vetor .

Link para o comentário
Compartilhar em outros sites

@devair1010 como eu faço para um procedimento repetir uma tela? Tem como? Vou mandar um código de um "rpg" que estou trabalhando, dê uma olhada fazendo favor ele deve estar bem errado, mas...

Código:

Spoiler

algoritmo "RPG 1.0"
// Autor : CLTK
// Data : 8/11/2018
var
tela : caractere

class: inteiro
s : vetor [1..3] de caractere
decis : inteiro
tela2 : caractere
map : inteiro
level : inteiro
m : vetor [1..10] de caractere
hp : real
dano : inteiro
atack : caractere
sk : vetor [1..2] de caractere
atq : inteiro
inicio
escreval("******************************************")
escreval("******************************************")
escreval("*******************RPG********************")
escreval("******************************************")
escreval("******************************************")
escreval("**************PRESS ENTER*****************")
escreval("******************************************")

leia(tela)
limpatela

escreval("POR FAVOR ESCOLHA SUA CLASSE DIGITANDO SEUS NÚMEROS")
escreval("AS CLASSES DISPONÍVEIS SÃO:")
escreval("1 - CAVALEIRO")
escreval("2 - MAGO")
escreval("3 - ATIRADOR")

leia (class)

se class = 1 entao
limpatela
escreval("Ótima escolha!")
escreval("Agora você já esta pronto para começar...")
escreval("De início te daremos alguns itens básicos para começar sua jornada.")
level <- 1
s[1] <- ("Elmo de iniciante")
s[2] <- ("Armadura de iniciante")
s[3] <- ("Espada Básica")
sk[1] <- ("Golpe triunfante")
sk[2] <- ("Corte Mortal")
escreval("O seus equipamentos iniciais são:")
escreval()
escreval("Cabeça - ",s[1])
escreval("Corpo - ",s[2])
escreval("Arma - ",s[3])
fimse

se class = 2 entao
limpatela
escreval("Ótima escolha!")
escreval()
escreval("Agora você já esta pronto para começar...")
escreval("De início te daremos alguns itens básicos para começar sua jornada.")
level <- 1
s[1] <- ("Capuz de iniciante")
s[2] <- ("Manto de iniciante")
s[3] <- ("Grimório Básico")
sk[1] <- ("Esfera de fogo")
sk[2] <- ("Raio Negro")
escreval("O seus equipamentos iniciais são:")
escreval()
escreval("Cabeça - ",s[1])
escreval("Corpo - ",s[2])
escreval("Arma - ",s[3])
fimse

se class = 3 entao
limpatela
escreval("Ótima escolha!")
escreval()
escreval("Agora você já esta pronto para começar...")
escreval("De início te daremos alguns itens básicos para começar sua jornada.")
s[1] <- ("Capacete de iniciante")
s[2] <- ("Casaco de iniciante")
s[3] <- ("Pistola Básica")
sk[1] <- ("Disparos")
sk[2] <- ("Disparo de plasma")
level <- 1
escreval("O seus equipamentos iniciais são:")
escreval()
escreval("Cabeça - ",s[1])
escreval("Corpo - ",s[2])
escreval("Arma - ",s[3])
fimse
escreval()
escreval("Pressione ENTER...")
leia (tela2)
limpatela

escreval("          O que deseja fazer?         ")
escreval("        1 - MOBAR EM UM MAPA " )
escreval("    2 - VERIFICAR STATUS DO CHAR")
escreval("          3 - FECHAR JOGO ")
leia(decis)

se decis = 1 entao
escreval("1 - MOBAR EM TERRA ESQUECIDA - LEVEL 1 ~ 30")
escreval("2 - MOBAR EM FLORESTA TENEBROSA - lEVEL 30 ~ 60")
leia (map)
fimse
  {Terra esquecida}
procedimento interface ()
  inicio
  se (level >= 1) e (level <= 5) entao
  m[1] <- "Poring"
  fimse
  se m[1] = "Poring" entao
  hp <- 200
  fimse
  se map = 1 entao
  escreval("    BEM VINDO A TERRA ESQUECIDA  ")
  escreval("       O MAPA DO INICIANTE       ")
  escreval()
  escreval()
  escreval(" Mobs próximos: ", m[1])
  escreval(" MOBAR:", m[1])
  leia(atack)
  se atack = "sim" entao
      escreval("Nome do MOB: ", m[1])
      escreval(" Vida do MOB: ", hp)
      se class = 1 entao
 enquanto hp > 0 faca
      escreval(" 1 - ", sk[1] , " - Dano total :40")
      escreval(" 2 - ", sk[2] , " - Dano total : 60")
      fimse
      leia(atq)
      se atq = 1 entao
      hp <- hp - 40
      escreval("HP: ", hp)
      fimse
       se atq = 2 entao
       hp <- hp - 60
       escreval("HP: ", hp)
       fimse
        se hp <= 0 entao
        m[1] <- "Poring Finish"
        escreval (m[1])
        fimse
       se m[1] = "Poring Finish" entao
       level <- level + 1
       fimse
 fimenquanto
       se class = 2 entao
       escreval(" 1 - ", sk[1] , " - Dano total :40")
       escreval(" 2 - ", sk[2] , " - Dano total : 60")
       fimse

        se class = 3 entao
        escreval(" 1 - ", sk[1] , " -  Dano total :40")
        escreval(" 2 - ", sk[2] , " - Dano total : 60")
        fimse
  fimse
fimalgoritmo

 

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

Tipo eu queria que repetisse essa parte:

Código:

Spoiler

 se (level >= 1) e (level <= 5) entao
  m[1] <- "Poring"
  fimse
  se m[1] = "Poring" entao
  hp <- 200
  fimse
  se map = 1 entao
  escreval("    BEM VINDO A TERRA ESQUECIDA  ")
  escreval("       O MAPA DO INICIANTE       ")
  escreval()
  escreval()
  escreval(" Mobs próximos: ", m[1])
  escreval(" MOBAR:", m[1])
  leia(atack)
  se atack = "sim" entao
      escreval("Nome do MOB: ", m[1])
      escreval(" Vida do MOB: ", hp)
      se class = 1 entao
 enquanto hp > 0 faca
      escreval(" 1 - ", sk[1] , " - Dano total :40")
      escreval(" 2 - ", sk[2] , " - Dano total : 60")
      fimse
      leia(atq)
      se atq = 1 entao
      hp <- hp - 40
      escreval("HP: ", hp)
      fimse
       se atq = 2 entao
       hp <- hp - 60
       escreval("HP: ", hp)
       fimse
        se hp <= 0 entao
        m[1] <- "Poring Finish"
        escreval (m[1])
        fimse
       se m[1] = "Poring Finish" entao
       level <- level + 1
       fimse
 fimenquanto

Só que repetir isso até o level do personagem ser maior que 5, sim vai dar trabalho pra caramba, pois vou ter que fazer cada level para um mob, mas gosto de ficar programando ent...

Ai tipo quando o level do personagem for maior que 5, outro mod apareça

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

@Biscatão da Boate    seu código está bom ,  então o procedimento seria assim :

Código:

Spoiler

algoritmo "RPG 1.0"
// Autor : CLTK
// Data : 8/11/2018
var
tela,tela2,atack,sair: caractere
decis,class,atq,dano : inteiro
s                    : vetor [1..3 ] de caractere
m                    : vetor [1..10] de caractere
sk                   : vetor [1..2 ] de caractere
map,level            : inteiro
hp                   : real
procedimento interface
inicio
  se (level >= 1) e (level <= 5) entao
    m[1] <- "Poring"
  fimse
  se m[1] = "Poring" entao
    hp <- 200
  fimse
  se map = 1 entao
    escreval("    BEM VINDO A TERRA ESQUECIDA  ")
    escreval("       O MAPA DO INICIANTE       ")
    escreval()
    escreval()
    escreval(" Mobs próximos -: ",m[1])
    escreval(" MOBAR ---------: ",m[1])
    leia(atack)
    se atack = "sim" entao
      escreval("Nome do MOB --: ",m[1])
      escreval(" Vida do MOB -: ",hp)
      se class = 1 entao
        enquanto hp > 0 faca
          escreval(" 1 - ",sk[1]," - Dano total : 40")
          escreval(" 2 - ",sk[2]," - Dano total : 60")
          leia(atq)
          se atq = 1 entao
            hp <- hp - 40
            escreval("HP ---: ",hp)
          fimse
          se atq = 2 entao
            hp <- hp - 60
            escreval("HP ---: ",hp)
          fimse
          se hp <= 0 entao
            m[1] <- "Poring Finish"
            escreval (m[1])
          fimse
          se m[1] = "Poring Finish" entao
            level <- level + 1
          fimse
        fimenquanto
      fimse
    fimse
  fimse
fimprocedimento
inicio
  escreval("******************************************")
  escreval("******************************************")
  escreval("****************** RPG *******************")
  escreval("******************************************")
  escreval("******************************************")
  escreval("************* PRESS ENTER ****************")
  escreval("******************************************")

  leia(tela)
  limpatela
  repita
    sair := "n"
    escreval("POR FAVOR ESCOLHA SUA CLASSE DIGITANDO SEUS NÚMEROS")
    escreval("AS CLASSES DISPONÍVEIS SÃO :")
    escreval("1 - CAVALEIRO               ")
    escreval("2 - MAGO                    ")
    escreval("3 - ATIRADOR                ")

    leia (class)

    se class = 1 entao
      limpatela
      escreval("Ótima escolha!                           ")
      escreval("Agora você já esta pronto para começar...")
      escreval("De início te daremos alguns itens básicos para começar sua jornada.")
      level <- 1
      s[1] <- ("Elmo de iniciante    ")
      s[2] <- ("Armadura de iniciante")
      s[3] <- ("Espada Básica        ")
      sk[1] <- ("Golpe triunfante    ")
      sk[2] <- ("Corte Mortal        ")
      escreval("O seus equipamentos iniciais são:")
      escreval()
      escreval("Cabeça - ",s[1])
      escreval("Corpo -- ",s[2])
      escreval("Arma --- ",s[3])
    fimse

    se class = 2 entao
      limpatela
      escreval("Ótima escolha!")
      escreval()
      escreval("Agora você já esta pronto para começar...")
      escreval("De início te daremos alguns itens básicos para começar sua jornada.")
      level <- 1
      s[1 ] <- ("Capuz de iniciante")
      s[2 ] <- ("Manto de iniciante")
      s[3 ] <- ("Grimório Básico   ")
      sk[1] <- ("Esfera de fogo    ")
      sk[2] <- ("Raio Negro        ")
      escreval("O seus equipamentos iniciais são:")
      escreval()
      escreval("Cabeça - ",s[1])
      escreval("Corpo -- ",s[2])
      escreval("Arma --- ",s[3])
    fimse

    se class = 3 entao
      limpatela
      escreval("Ótima escolha!")
      escreval()
      escreval("Agora você já esta pronto para começar...")
      escreval("De início te daremos alguns itens básicos para começar sua jornada.")
      s[1 ] <- ("Capacete de iniciante")
      s[2 ] <- ("Casaco de iniciante  ")
      s[3 ] <- ("Pistola Básica       ")
      sk[1] <- ("Disparos             ")
      sk[2] <- ("Disparo de plasma    ")
      level <- 1
      escreval("O seus equipamentos iniciais são:")
      escreval()
      escreval("Cabeça - ",s[1])
      escreval("Corpo -- ",s[2])
      escreval("Arma --- ",s[3])
    fimse
    escreval()
    escreval("Pressione ENTER...")
    leia (tela2)
    limpatela

    escreval("     O que deseja fazer?        ")
    escreval("    1 - MOBAR EM UM MAPA        ")
    escreval("    2 - VERIFICAR STATUS DO CHAR")
    escreval("    3 - FECHAR JOGO             ")
    leia(decis)

    se decis = 1 entao
      escreval("1 - MOBAR EM TERRA ESQUECIDA    - LEVEL 1  ~ 30")
      escreval("2 - MOBAR EM FLORESTA TENEBROSA - lEVEL 30 ~ 60")
      leia (map)
    fimse
  
    se class = 2 entao
      escreval(" 1 - ", sk[1] , " - Dano total : 40")
      escreval(" 2 - ", sk[2] , " - Dano total : 60")
    fimse

    se class = 3 entao
      escreval(" 1 - ", sk[1] , " -  Dano total : 40")
      escreval(" 2 - ", sk[2] , " - Dano total  : 60")
    fimse
    {Terra esquecida}
    interface
    escreva("Quer Sair Do jogo  S/N ")
    leia(sair)
  ate sair = "s"
fimalgoritmo

 

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

@Biscatão da Boate       olá , se você quiser pode clicar no botão reagir ,  e sim , você pode colocar quantos procedimentos quiser , para isso precisa colocar eles lá em cima antes do inicio do programa , e os procedimento precisam ter esse formato :

procedimento nome_do_procedimento ( variavel : inteiro ) // se quiser pode ter parametros  que está dentro dos parenteses ou não
var                                                                                           // variaveis locais só funcionam aqui dentro
   variaveis : tipo_das_variaveis                                             // aqui as variáveis 
inicio                                                                                        // inicio do procedimento

//  aqui  coloca o código do que fazer 

fimprocedimento                                                                     // finaliza os procediment mas não retorna nenhum valor 

 

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

Olha como ficou, por enquanto só ta programado a Classe "CAVALEIRO", dê uma olhada porque quando digito 3 para fechar o programa, ele da uma bugada
Código:

Spoiler

algoritmo "RPG 1.0"
// Autor : CTKL
// Data : 8/11/2018
var
tela : caractere
class: inteiro
s : vetor [1..3] de caractere
decis : inteiro
tela2 : caractere
map : inteiro
level : inteiro
m : vetor [1..10] de caractere
hp : real
dano : inteiro
atack : caractere
sk : vetor [1..2] de caractere
dn : vetor [1..2] de inteiro
atq : inteiro
desejo : caractere
certeza : caractere
procedimento decisão ()
inicio
decis <- 0
limpatela
escreval("          O que deseja fazer?         ")
escreval("        1 - MOBAR EM UM MAPA " )
escreval("    2 - VERIFICAR STATUS DO CHAR")
escreval("          3 - FECHAR JOGO ")
leia(decis)
limpatela
se decis = 3 entao
escreval("Fechar? S/N")
leia(certeza)
se certeza = S entao
fimse
fimse
se decis = 2 entao
escreval (" Level do Personagem -->", level)
       escreval (" SET DO PERSONAGEM: ")
       escreval ()
       escreval(s[1])
       escreval(s[2])
       escreval(s[3])
fimse
       se level >= 10 entao
       escreval(" Parabéns você alcançou o level:", level)
       escreval("Como recompensa o dano de sua skills aumentaram em +30")
       escreval("Skill ->", sk[1], "Dano -->", dn[1] + 30)
       escreval("Skill ->", sk[2], "Dano -->", dn[2] + 30)
       fimse
     se decis = 1 entao
     escreval("1 - MOBAR EM TERRA ESQUECIDA - LEVEL 1 ~ 30")
     escreval("2 - MOBAR EM FLORESTA TENEBROSA - lEVEL 30 ~ 60")
     leia (map)
     limpatela
     fimse
  {Terra esquecida}
  se (level >= 1) e (level <= 10) entao
  m[1] <- "Poring"
  fimse
  se (level >10) entao
  m[1] <- "Blue slime"
  fimse
  se m[1] = "Poring" entao
  hp <- 200
  fimse
  se m[1] = "Blue slime" entao
  hp <- 600
  fimse
  se map = 1 entao
  escreval("    BEM VINDO A TERRA ESQUECIDA  ")
  escreval("           O 1° MAPA      ")
  escreval()
  escreval()
  escreval(" Mobs próximos: ", m[1])
  escreval(" MOBAR:", m[1], "?")
  escreval()
  leia(atack)
  limpatela
  se atack = "sim" entao
      escreval("       SISTEMA DE COMBATE      ")
      escreval("      Nome do MOB: ", m[1])
      escreval("       Vida do MOB: ", hp)
      escreval()
  fimse
      se class = 1 entao
 enquanto hp > 0 faca
      escreval(" 1 - ", sk[1] , " - Dano total :75")
      escreval(" 2 - ", sk[2] , " - Dano total : 80")
      leia(atq)
      se atq = 1 entao
      hp <- hp - 40
      escreval("HP: ", hp)
      fimse
       se atq = 2 entao
       hp <- hp - 60
       escreval("HP: ", hp)
       fimse
        se hp <= 0 entao
        m[1] <- "Poring Finish"
        escreval (m[1])
        fimse
       se m[1] = "Poring Finish" entao
       level <- level + 1
       fimse
 fimenquanto
      fimse
     enquanto hp > 0 faca
     {mago}
         se class = 2 entao
         escreval(" 1 - ", sk[1] , " - Dano total :30")
         escreval(" 2 - ", sk[2] , " - Dano total : 40")
         leia(atq)
          se atq = 1 entao
          hp <- hp - 40
          escreval("HP: ", hp)
          fimse
           se atq = 2 entao
           hp <- hp - 60
           escreval("HP: ", hp)
           fimse
            se hp <= 0 entao
            m[1] <- "Poring Finish"
            escreval (m[1])
            fimse
              se m[1] = "Poring Finish" entao
              level <- level + 1
              fimse
         fimse
     fimenquanto

  fimse
escreval()
map <- 0
escreval("ENTER PARA VOLTAR AO MENU")
leia (desejo)
decisão ()
fimprocedimento
inicio
escreval(" -----------------------")
escreval("|        R P G          |")
escreval("|                       |")
escreval("|      PRESS ENTER      |")
escreval(" ----------------------- ")
leia(tela)
limpatela

escreval("POR FAVOR ESCOLHA SUA CLASSE DIGITANDO SEUS NÚMEROS")
escreval("SÃO 2 CLASSES DISPONÍVEIS SÃO:")
escreval("1 - CAVALEIRO")
escreval("2 - MAGO")

leia (class)

se class = 1 entao
limpatela
escreval("Ótima escolha! Essa classe é ótima para causar grandes danos")
escreval()
escreval("Agora você já esta pronto para começar...")
escreval("De início te daremos alguns itens básicos para começar sua jornada.")
level <- 1
se (level >= 1) e (level <= 5) entao
s[1] <- ("Elmo de iniciante")
s[2] <- ("Armadura de iniciante")
s[3] <- ("Espada Básica")
sk[1] <- ("Golpe triunfante")
sk[2] <- ("Corte Mortal")
dn[1] <- 40
dn[2] <- 60
fimse
escreval("O seus equipamentos iniciais são:")
escreval()
escreval("Cabeça - ",s[1])
escreval("Corpo - ",s[2])
escreval("Arma - ",s[3])
escreval()
escreval("Suas Skills são:")
escreval()
escreval("1 - ",sk[1], " Dano -->", dn[1])
escreval("2 - ",sk[2], " Dano -->", dn[2])
fimse

se class = 2 entao
limpatela
escreval("Ótima escolha! Essa classe é razoável nos danos")
escreval()
escreval("Agora você já esta pronto para começar...")
escreval("De início te daremos alguns itens básicos para começar sua jornada.")
level <- 1
s[1] <- ("Capuz de iniciante")
s[2] <- ("Manto de iniciante")
s[3] <- ("Grimório Básico")
sk[1] <- ("Esfera de fogo")
sk[2] <- ("Raio Negro")
escreval("O seus equipamentos iniciais são:")
escreval()
escreval("Cabeça - ",s[1])
escreval("Corpo - ",s[2])
escreval("Arma - ",s[3])
fimse

escreval()
escreval("Pressione ENTER...")
leia (tela2)
limpatela
escreval("          O que deseja fazer?         ")
escreval("        1 - MOBAR EM UM MAPA " )
escreval("    2 - VERIFICAR STATUS DO CHAR")
escreval("          3 - FECHAR JOGO ")
leia(decis)


se decis = 1 entao
escreval("1 - MOBAR EM TERRA ESQUECIDA - LEVEL 1 ~ 30")
escreval("2 - MOBAR EM FLORESTA TENEBROSA - lEVEL 30 ~ 60")
leia (map)
limpatela
fimse
     se decis = 2 entao
       escreval (" Level do Personagem -->", level)
       escreval (" SET DO PERSONAGEM: ")
       escreval ()
       escreval(s[1])
       escreval(s[2])
       escreval(s[3])
     fimse
     se decis = 3 entao
     fimse
  {Terra esquecida}
  se (level >= 1) e (level <= 5) entao
  m[1] <- "Poring"
  fimse
  se m[1] = "Poring" entao
  hp <- 200
  fimse
  se map = 1 entao
  escreval("    BEM VINDO A TERRA ESQUECIDA  ")
  escreval("           O 1° MAPA      ")
  escreval()
  escreval()
  escreval(" Mobs próximos: ", m[1])
  escreval(" MOBAR:", m[1], "?")
  escreval()
  leia(atack)
  limpatela
  se atack = "sim" entao
      escreval("       SISTEMA DE COMBATE      ")
      escreval("      Nome do MOB: ", m[1])
      escreval("       Vida do MOB: ", hp)
      escreval()
  fimse
      se class = 1 entao
 enquanto hp > 0 faca
      escreval(" 1 - ", sk[1] , " - Dano total :", dn[1])
      escreval(" 2 - ", sk[2] , " - Dano total :", dn[2])
      leia(atq)
      se atq = 1 entao
      hp <- hp - dn[1]
      escreval("HP: ", hp)
      fimse
       se atq = 2 entao
       hp <- hp - dn[2]
       escreval("HP: ", hp)
       fimse
        se hp <= 0 entao
        m[1] <- "Poring Finish"
        escreval (m[1])
        fimse
       se m[1] = "Poring Finish" entao
       level <- level + 1
       fimse
 fimenquanto
      fimse
     enquanto hp > 0 faca
     {mago}
         se class = 2 entao
         escreval(" 1 - ", sk[1] , " - Dano total :30")
         escreval(" 2 - ", sk[2] , " - Dano total : 40")
         leia(atq)
          se atq = 1 entao
          hp <- hp - 40
          escreval("HP: ", hp)
          fimse
           se atq = 2 entao
           hp <- hp - 60
           escreval("HP: ", hp)
           fimse
            se hp <= 0 entao
            m[1] <- "Poring Finish"
            escreval (m[1])
            fimse
              se m[1] = "Poring Finish" entao
              level <- level + 1
              fimse
         fimse
     fimenquanto

fimse
escreval("ENTER PARA VOLTAR AO MENU")
leia(desejo)

decisão ()
fimalgoritmo

 

 

adicionado 2 minutos depois

@devair1010

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

@Biscatão da Boate para comparar string precisa colocar entre aspas duplas na hora de sair , assim:

Código:

Spoiler

Algoritmo "jogo rpg"
// Autor : CTKL
// Data : 8/11/2018
var
tela : caractere
dano,level,map,class       : inteiro
decis,atq                  : inteiro
s                          : vetor [1..3 ] de caractere
m                          : vetor [1..10] de caractere
sk                         : vetor [1..2 ] de caractere
dn                         : vetor [1..2 ] de inteiro
certeza,atack,tela2,desejo : caractere
hp                         : real
procedimento decisão
inicio
  decis <- 0
  limpatela
  escreval("          O que deseja fazer?         ")
  escreval("        1 - MOBAR EM UM MAPA " )
  escreval("    2 - VERIFICAR STATUS DO CHAR")
  escreval("          3 - FECHAR JOGO ")
  leia(decis)
  limpatela
  se decis = 3 entao
    escreval("Fechar? S/N")
    leia(certeza)
    se certeza = "S" entao
      fimalgoritmo
    fimse
  fimse
  se decis = 2 entao
    escreval(" Level do Personagem -->", level)
    escreval(" SET DO PERSONAGEM: ")
    escreval
    escreval(s[1])
    escreval(s[2])
    escreval(s[3])
  fimse
  se level >= 10 entao
    escreval(" Parabéns você alcançou o level:", level)
    escreval("Como recompensa o dano de sua skills aumentaram em +30")
    escreval("Skill ->",sk[1], "Dano -->",dn[1] + 30)
    escreval("Skill ->",sk[2], "Dano -->",dn[2] + 30)
  fimse
  se decis = 1 entao
    escreval("1 - MOBAR EM TERRA ESQUECIDA - LEVEL 1 ~ 30")
    escreval("2 - MOBAR EM FLORESTA TENEBROSA - lEVEL 30 ~ 60")
    leia (map)
    limpatela
  fimse
  {Terra esquecida}
  se (level >= 1) e (level <= 10) entao
    m[1] <- "Poring"
  fimse
  se (level >10) entao
    m[1] <- "Blue slime"
  fimse
  se m[1] = "Poring" entao
    hp <- 200
  fimse
  se m[1] = "Blue slime" entao
    hp <- 600
  fimse
  se map = 1 entao
    escreval("    BEM VINDO A TERRA ESQUECIDA  ")
    escreval("           O 1° MAPA      ")
    escreval
    escreval
    escreval(" Mobs próximos: ",m[1])
    escreval(" MOBAR:",m[1],"?")
    escreval()
    leia(atack)
    limpatela
    se atack = "sim" entao
      escreval("       SISTEMA DE COMBATE      ")
      escreval("      Nome do MOB  : ",m[1])
      escreval("       Vida do MOB : ",hp)
      escreval()
    fimse
    se class = 1 entao
      enquanto hp > 0 faca
        escreval(" 1 - ",sk[1] , " - Dano total : 75")
        escreval(" 2 - ",sk[2] , " - Dano total : 80")
        leia(atq)
        se atq = 1 entao
          hp <- hp - 40
          escreval("HP: ",hp)
        fimse
        se atq = 2 entao
          hp <- hp - 60
          escreval("HP: ",hp)
        fimse
        se hp <= 0 entao
          m[1] <- "Poring Finish"
          escreval (m[1])
        fimse
        se m[1] = "Poring Finish" entao
          level <- level + 1
        fimse
      fimenquanto
    fimse
    enquanto hp > 0 faca
      {mago}
      se class = 2 entao
        escreval(" 1 - ", sk[1] , " - Dano total : 30")
        escreval(" 2 - ", sk[2] , " - Dano total : 40")
        leia(atq)
        se atq = 1 entao
          hp <- hp - 40
          escreval("HP: ",hp)
        fimse
        se atq = 2 entao
          hp <- hp - 60
          escreval("HP: ",hp)
        fimse
        se hp <= 0 entao
          m[1] <- "Poring Finish"
          escreval(m[1])
        fimse
        se m[1] = "Poring Finish" entao
          level <- level + 1
        fimse
      fimse
    fimenquanto
  fimse
  escreval()
  map <- 0
  escreval("ENTER PARA VOLTAR AO MENU")
  leia (desejo)
  decisão ()
fimprocedimento
//--------------   inicio  -------------------------------------
inicio
  escreval(" -----------------------")
  escreval("|        R P G          |")
  escreval("|                       |")
  escreval("|      PRESS ENTER      |")
  escreval(" ----------------------- ")
  leia(tela)
  limpatela

  escreval("POR FAVOR ESCOLHA SUA CLASSE DIGITANDO SEUS NÚMEROS")
  escreval("SÃO 2 CLASSES DISPONÍVEIS SÃO:")
  escreval("1 - CAVALEIRO")
  escreval("2 - MAGO")

  leia (class)

  se class = 1 entao
    limpatela
    escreval("Ótima escolha! Essa classe é ótima para causar grandes danos")
    escreval
    escreval("Agora você já esta pronto para começar...")
    escreval("De início te daremos alguns itens básicos para começar sua jornada.")
    level <- 1
    se (level >= 1) e (level <= 5) entao
      s [1] <- ("Elmo de iniciante    ")
      s [2] <- ("Armadura de iniciante")
      s [3] <- ("Espada Básica        ")
      sk[1] <- ("Golpe triunfante     ")
      sk[2] <- ("Corte Mortal         ")
      dn[1] <- 40
      dn[2] <- 60
    fimse
    escreval("O seus equipamentos iniciais são:")
    escreval
    escreval("Cabeça - ",s[1])
    escreval("Corpo  - ",s[2])
    escreval("Arma   - ",s[3])
    escreval()
    escreval("Suas Skills são:")
    escreval()
    escreval("1 - ",sk[1], " Dano --> ",dn[1])
    escreval("2 - ",sk[2], " Dano --> ",dn[2])
  fimse

  se class = 2 entao
    limpatela
    escreval("Ótima escolha! Essa classe é razoável nos danos")
    escreval()
    escreval("Agora você já esta pronto para começar...")
    escreval("De início te daremos alguns itens básicos para começar sua jornada.")
    level <- 1
    s[1 ] <- ("Capuz de iniciante")
    s[2 ] <- ("Manto de iniciante")
    s[3 ] <- ("Grimório Básico   ")
    sk[1] <- ("Esfera de fogo    ")
    sk[2] <- ("Raio Negro        ")
    escreval("O seus equipamentos iniciais são:")
    escreval
    escreval("Cabeça - ",s[1])
    escreval("Corpo  - ",s[2])
    escreval("Arma   - ",s[3])
  fimse

  escreval
  escreval("Pressione ENTER...")
  leia(tela2)
  limpatela
  escreval("          O que deseja fazer?         ")
  escreval("        1 - MOBAR EM UM MAPA " )
  escreval("    2 - VERIFICAR STATUS DO CHAR")
  escreval("          3 - FECHAR JOGO ")
  leia(decis)


  se decis = 1 entao
    escreval("1 - MOBAR EM TERRA ESQUECIDA    - LEVEL  1 ~ 30")
    escreval("2 - MOBAR EM FLORESTA TENEBROSA - lEVEL 30 ~ 60")
    leia (map)
    limpatela
  fimse
  se decis = 2 entao
    escreval (" Level do Personagem --> ",level)
    escreval (" SET DO PERSONAGEM     : ")
    escreval ()
    escreval(s[1])
    escreval(s[2])
    escreval(s[3])
  fimse
  se decis = 3 entao

  fimse
  {Terra esquecida}
  se (level >= 1) e (level <= 5) entao
    m[1] <- "Poring"
  fimse
  se m[1] = "Poring" entao
    hp <- 200
  fimse
  se map = 1 entao
    escreval("    BEM VINDO A TERRA ESQUECIDA  ")
    escreval("           O 1° MAPA      ")
    escreval()
    escreval()
    escreval(" Mobs próximos : ", m[1])
    escreval(" MOBAR:",m[1],"?")
    escreval
    leia(atack)
    limpatela
    se atack = "sim" entao
      escreval("       SISTEMA DE COMBATE      ")
      escreval("      Nome do MOB : ",[1])
      escreval("       Vida do MOB: ",hp)
      escreval
    fimse
    se class = 1 entao
      enquanto hp > 0 faca
        escreval(" 1 - ", sk[1] , " - Dano total : ",dn[1])
        escreval(" 2 - ", sk[2] , " - Dano total : ",dn[2])
        leia(atq)
        se atq = 1 entao
          hp <- hp - dn[1]
          escreval("HP: ", hp)
        fimse
        se atq = 2 entao
          hp <- hp - dn[2]
          escreval("HP: ", hp)
        fimse
        se hp <= 0 entao
          m[1] <- "Poring Finish"
          escreval (m[1])
        fimse
        se m[1] = "Poring Finish" entao
          level <- level + 1
        fimse
      fimenquanto
    fimse
    enquanto hp > 0 faca
      mago}
      se class = 2 entao
        escreval(" 1 - ", sk[1] , " - Dano total : 30")
        escreval(" 2 - ", sk[2] , " - Dano total : 40")
        leia(atq)
        se atq = 1 entao
          hp <- hp - 40
          escreval("HP: ", hp)
        fimse
        se atq = 2 entao
          hp <- hp - 60
          escreval("HP: ", hp)
        fimse
        se hp <= 0 entao
          m[1] <- "Poring Finish"
          escreval (m[1])
        fimse
        se m[1] = "Poring Finish" entao
          level <- level + 1
        fimse
      fimse
    fimenquanto
  fimse
  escreval("ENTER PARA VOLTAR AO MENU")
  leia(desejo)

  decisão
fimalgoritmo

 

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Olá.

 

1#
@Biscatão da Boate, você está colocando o mesmo menu em partes distintas. O menu deveria funcionar como um "centralizador", ou seja, nele escolhe uma opção qualquer, após executar a opção, volta para o mesmo menu.

 

Dentro de cada opção pode, sem problemas, ter OUTROS menus.. ou repetir o código.. etc, mas ao terminar, volta para o mesmo menu central. Não pode de dentro de um item do menu tentar acessar um outro item deste menu. O sensato é voltar para o menu principal, que por sua vez poderá encaminhar para outro item dele.

 

Algo assim:

Código:

Spoiler

   escreval()
   escreval("Pressione ENTER...")
   leia (tela)
   repita
      limpatela
      escreval("          O que deseja fazer?         ")
      escreval("        1 - MOBAR EM UM MAPA " )
      escreval("    2 - VERIFICAR STATUS DO CHAR")
      escreval("          3 - FECHAR JOGO ")
      leia(decis)
      se decis=1 entao
         limpaTela
         escreval("Aqui eu faço o que referente a opção 1")
         escreva ("Pressione ENTER para continuar")
         leia(tela)
      fimSe
      se decis=2 entao
         limpaTela
         escreval("Aqui eu faço o que referente a opção 2")
         escreva ("Pressione ENTER para continuar")
         leia(tela)
      fimSe
      se decis=3 entao
         limpaTela
         escreval("Aqui eu façoz o que referente a opção 3 (no caso, vai sair)")
         escreva ("Pressione ENTER para continuar")
         leia(tela)
      fimSe
   ate decis = 3
fimAlgoritmo

Tente entender isso... o MENU "invoca" os seus itens... mas jamais* um item desse menu poderá "reinvocar" o menu. Em vez disso, faz esse item terminar, voltando assim para o menu, que por sua vez poderá invocar quem ele quiser.

 

Nessa parte:

11 horas atrás, Biscatão da Boate disse:

escreval("ENTER PARA VOLTAR AO MENU")
leia(desejo)
{decisão ()} //não pode fazer isso

 

 

Simplesmente vai deixar terminar esse item. Vai voltar para o menu que poderá escolher outra opção (incluindo essa mesma).

 

 

***

 

 

Qualquer dúvida é só postar.

adicionado 44 minutos depois

2#

Dá para agrupar alguns dados com vetores... ajuda é evitar repetição de código e dar um ar mais organizado. Ex.:

Código:

Spoiler

algoritmo "FCdH"
var
   //ATRIBUTOS DO JOGADOS
   //0 = nível atual
   //1 = Item 1
   //2 = Item 2
   //3 = Item 3
   //4 = Skil 1
   //5 = Skil 2
   //6 = Dano 1
   //7 = Dano 2
   player :vetor[0..7] de caractere

   //PADRÕES DE ATRIBUTOS POR LEVEL
   levels  :vetor[1..2,1..7] de caractere //[Num. do Level, Respectivos atributos]
   

procedimento whaitENTER()
var
   ENTER:caractere //usado apenas para aguardar um ENTER
inicio
   escreva ("Pressione ENTER para continuar")
   leia(ENTER)
fimProcedimento


//CARREGA O QUE CADA LEVEL TEM COMO ATRIBUTOS
procedimento initLevels()
inicio
   levels[1,1] <- "Elmo de iniciante "
   levels[1,2] <- "Armadura de iniciante"
   levels[1,3] <- "Espada Básica"
   levels[1,4] <- "Golpe triunfante"
   levels[1,5] <- "Corte Mortal"
   levels[1,6] <- "40"
   levels[1,7] <- "60"

   levels[2,1] <- "Capuz de iniciante"
   levels[2,2] <- "Manto de iniciante"
   levels[2,3] <- "Grimório Básico   "
   levels[2,4] <- "Esfera de fogo    "
   levels[2,5] <- "Raio Negro        "
   levels[2,6] <- "?"
   levels[2,7] <- "?"
fimProcedimento

procedimento upLevel()
var
   p:inteiro
inicio
   player[0] <- Numpcarac(Caracpnum(player[0])+1) //como está tudo em "texto", precisa converter
   para p de 1 ate 7 faca
      player[p] <- levels[Caracpnum(player[0]),p]
   fimPara
fimProcedimento

procedimento showPlayer()
inicio
   escreval()
   escreval("*** DADOS DO JOGADOR ***")
   escreval("Level  :",player[0])
   escreval("Item 1 :",player[1])
   escreval("Item 2 :",player[2])
   escreval("Item 3 :",player[3])
   escreval("Skill 1:",player[4])
   escreval("Skill 3:",player[5])
   escreval("Dano 1 :",player[6])
   escreval("Dano 2 :",player[7])
   escreval()
fimProcedimento



inicio
initLevels()

showPlayer()
whaitENTER()

upLevel()
showPlayer()
whaitENTER()

upLevel()
showPlayer()
whaitENTER()
fimAlgoritmo

 

 

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

@devair1010. Eu dei uma "melhorada" no código, mas ainda continua dando uns errinhos. Não entendi muito bem o que você disse, tipo, ele não pode voltar para outro menu? Então eu não precisaria colocar o procedimento? Dê uma demonstração pfv
Código:

Spoiler

Algoritmo "RPG - 2.0"
// Autor : CTKL
// Data : 8/11/2018
var
tela : caractere
dano,level,map,class       : inteiro
decis,atq                  : inteiro
s                          : vetor [1..3 ] de caractere
m                          : vetor [1..10] de caractere
sk                         : vetor [1..2 ] de caractere
dn                         : vetor [1..2 ] de inteiro
certeza,atack,tela2,desejo : caractere
hp                         : real
hpc                        : real
dni                        : vetor[1..5] de real
procedimento decisão
inicio
decis <- 0
limpatela
escreval("          O que deseja fazer?         ")
escreval("        1 - MOBAR EM UM MAPA " )
escreval("    2 - VERIFICAR STATUS DO CHAR")
escreval("          3 - FECHAR JOGO ")
leia(decis)
limpatela
se decis = 3 entao
fimalgoritmo
fimse
se level >= 10 entao
dn[1] <- dn[1] + 30
dn[2] <- dn[2] + 30
fimse
se decis = 2 entao
se level >= 10 entao
   escreval
   escreval("-----------------------------------------------------------")
   escreval(" Parabéns você alcançou o level:", level)
   escreval
   escreval("Como recompensa o dano de sua skills aumentaram em +30")
   escreval
   escreval("Skill ->",sk[1], "Dano -->",dn[1] + 30)
   escreval
   escreval("Skill ->",sk[2], "Dano -->",dn[2] + 30)
fimse
escreval("------------------------------------------------------------")
escreval
escreval(" Level do Personagem -->", level)
escreval(" SKILS DO PERSONAGEM: ")
escreval
escreval( sk[1],"--->", dn[1])
escreval( sk[2],"--->", dn[2])
fimse

se decis = 1 entao
escreval("1 - MOBAR EM TERRA ESQUECIDA - LEVEL 1 ~ 30")
escreval("2 - MOBAR EM FLORESTA TENEBROSA - lEVEL 30 ~ 60")
leia (map)
limpatela
fimse
{Terra esquecida}
se (level >= 1) e (level <= 10) entao
m[1] <- "Poring"
fimse
se (level >10) entao
m[1] <- "Blue slime"
fimse
se m[1] = "Poring" entao
hp <- 200
se class = 1 entao
   dni [1] <- 30
senao
   se class = 2 entao
      dni [1] <- 60
   fimse
fimse
se m[1] = "Blue slime" entao
   se class = 1 entao
      dni[1] <- 50
   senao
      se class = 2 entao
         dni[1] <- 90
      fimse
   fimse
   hp <- 600
fimse
se map = 1 entao
   escreval("    BEM VINDO A TERRA ESQUECIDA  ")
   escreval("           O 1° MAPA      ")
   escreval
   escreval
   escreval(" Mobs próximos: ",m[1])
   escreval(" MOBAR: ",m[1],"?")
   escreval()
   leia(atack)
   limpatela
   se atack = "sim" entao
      escreval("       SISTEMA DE COMBATE      ")
      escreval("      Nome do MOB  : ",m[1])
      escreval("       Vida do MOB : ",hp)
      escreval("       Dano do MOB: ", dni[1])
      escreval()
   fimse
   se class = 1 entao
      enquanto hp > 0 faca
         escreval(" 1 - ",sk[1] , " - Dano total :", dn[1])
         escreval(" 2 - ",sk[2] , " - Dano total :", dn[2])
         leia(atq)
         se atq = 1 entao
            hp <- hp - dn[1]
            escreval("HP: ",hp)
         fimse
         hpc <- hpc - dni[1]
         escreval("SEU HP ATUAL :", hpc)
         se atq = 2 entao
            hp <- hp - dn[2]
            escreval("HP: ",hp)
         fimse
         se hpc <= 0 entao
            escreval("GAME OVER!")
         fimalgoritmo
         se hp <= 0 entao
            m[1] <- ("Finish")
            escreval (m[1])
            level <- level + 1
         fimse
   fimse
      fimenquanto
   {mago}
   se class = 2 entao
      enquanto hp > 0 faca
         escreval(" 1 - ", sk[1] , " - Dano total :", dn[1])
         escreval(" 2 - ", sk[2] , " - Dano total :", dn[2])
         leia(atq)
         se atq = 1 entao
            hp <- hp - dn[1]
            escreval("HP: ",hp)
         fimse
         hpc <- hpc - dni[1]
         escreval("SEU HP ATUAL :", hpc)
         se atq = 2 entao
            hp <- hp - dn[1]
            escreval("HP: ",hp)
         fimse
         se hpc <= 0 entao
            escreval("GAME OVER!")
         fimalgoritmo
      fimse
      se hp <= 0 entao
         m[1] <- ("Finish")
         escreval(m[1])
         level <- level + 1
      fimse
fimse
      fimenquanto
fimse
escreval()
map <- 0
escreval("ENTER PARA VOLTAR AO MENU")
leia (desejo)
decisão ()
fimprocedimento
//--------------   inicio  -------------------------------------
inicio
escreval("            ******                          ******")
escreval("            *****            RPG             *****")
escreval("            ****                              ****")
escreval("            ***          PRESS ENTER           ***")
escreval("            **                                  **")
escreval("            *                                    *")
leia(tela)
limpatela
enquanto (class <> 1) e (class <> 2) faca
escreval("    POR FAVOR ESCOLHA SUA CLASSE DIGITANDO SEUS NÚMEROS")
escreval("    SÃO 2 CLASSES DISPONÍVEIS SÃO:")
escreval
escreval("    1 - CAVALEIRO - POUCO DANO, PORÉM ALTO HP")
escreval("    2 - MAGO - ALTO DANO, PORÉM POUCO HP")

leia (class)
limpatela
escreval("    DIGITE SOMENTE OS NÚMEROS INFORMADOS!")
escreval()
fimenquanto
se class = 1 entao
limpatela
escreval()
escreval("   Ótima escolha! Essa classe é ótima para causar grandes danos")
escreval
escreval("   Agora você já esta pronto para começar...")
escreval
escreval("   De início você tera 2 skills")
escreval
escreval("   A cada 10 levels, seu dano aumenta + 30")
level <- 1
hpc <- 500
se (level >= 1) e (level <= 5) entao
   sk[1] <- ("Golpe triunfante     ")
   sk[2] <- ("Corte Mortal         ")
   dn[1] <- 40
   dn[2] <- 60
fimse
escreval("  Suas Skills são:")
escreval()
escreval("  1 - ",sk[1], " Dano --> ",dn[1])
escreval("  2 - ",sk[2], " Dano --> ",dn[2])
fimse

se class = 2 entao
limpatela
escreval()
escreval("  Ótima escolha! Essa classe é razoável nos danos")
escreval()
escreval("  Agora você já esta pronto para começar...")
escreval
escreval("  De início você tera 2 skills")
escreval
escreval("  A cada 10 levels, seu dano aumenta + 30")
level <- 1
hpc <- 300
se (level >= 1) e (level <= 5) entao
   sk[1] <- ("Raio negro     ")
   sk[2] <- ("PACTO         ")
   dn[1] <- 80
   dn[2] <- 100
   escreval("  Suas Skills são:")
   escreval()
   escreval("  1 - ",sk[1], " Dano --> ",dn[1])
   escreval("  2 - ",sk[2], " Dano --> ",dn[2])
fimse
fimse

escreval
escreval("Pressione ENTER...")
leia(tela2)
limpatela
enquanto (decis <> 1) e (decis <> 2) e (decis <> 3) faca
escreval("          O que deseja fazer?         ")
escreval("        1 - MOBAR EM UM MAPA " )
escreval("    2 - VERIFICAR STATUS DO CHAR")
escreval("          3 - FECHAR JOGO ")

leia(decis)
limpatela
escreval("   DIGITE SOMENTE OS NÚMEROS INFORMADOS")
fimenquanto
se decis = 1 entao
escreval("1 - MOBAR EM TERRA ESQUECIDA    - LEVEL  1 ~ 30")
escreval("2 - MOBAR EM FLORESTA TENEBROSA - lEVEL 30 ~ 60")
leia (map)
limpatela
fimse
se decis = 2 entao
limpatela
escreval (" Level do Personagem --> ",level)
escreval (" SKILLS DO PERSONAGEM    : ")
escreval ()
escreval(sk[1],"--->", dn[1])
escreval(sk[2],"--->", dn[2])
fimse
se decis = 3 entao
fimalgoritmo
fimse
{Terra esquecida}
se (level >= 1) e (level <= 5) entao
m[1] <- "Poring"
fimse
se m[1] = "Poring" entao
hp <- 200
se class = 1 entao
dni[1] <- 30
senao
se class = 2 entao
   dni[1] <- 60
fimse
fimse
fimse
se map = 1 entao
escreval("    BEM VINDO A TERRA ESQUECIDA  ")
escreval("           O 1° MAPA      ")
escreval()
escreval()
escreval(" Mobs próximos : ", m[1])
escreval(" MOBAR: ",m[1],"?")
escreval
leia(atack)
limpatela
se atack = "sim" entao
escreval("       SISTEMA DE COMBATE      ")
escreval("      Nome do MOB : ",[1])
escreval("       Vida do MOB: ",hp)
escreval("       Dano do MOB: ", dni[1])
escreval
fimse
se class = 1 entao
enquanto hp > 0 faca
   escreval(" 1 - ", sk[1] , " - Dano total : ",dn[1])
   escreval(" 2 - ", sk[2] , " - Dano total : ",dn[2])
   leia(atq)
   se atq = 1 entao
      hp <- hp - dn[1]
      escreval("HP: ", hp)
   fimse
   hpc <- hpc - dni[1]
   escreval("SEU HP ATUAL :", hpc)
   se atq = 2 entao
      hp <- hp - dn[2]
      escreval("HP: ", hp)
   fimse
   se hpc <= 0 entao
      escreval("GAME OVER!")
   fimalgoritmo
fimse
se hp <= 0 entao
   m[1] <- "Finish"
   escreval (m[1])
   level <- level + 1
fimse
fimenquanto
fimse
enquanto hp > 0 faca
{mago}
se class = 2 entao
escreval(" 1 - ", sk[1] , " - Dano total :", dn[1])
escreval(" 2 - ", sk[2] , " - Dano total :", dn[2])
leia(atq)
se atq = 1 entao
   hp <- hp - dn[1]
   escreval("HP: ", hp)
fimse
hpc <- hpc - dni[1]
escreval("SEU HP ATUAL:", hpc)
se atq = 2 entao
   hp <- hp - dn[2]
   escreval("HP: ", hp)
fimse
se hpc <= 0 entao
   escreval ("GAME OVER!")
fimalgoritmo
fimse
se hp <= 0 entao
m[1] <- "Finish"
escreval (m[1])
level <- level + 1
fimse
fimse
fimenquanto
fimse
map <- 0
escreval
escreval("ENTER PARA VOLTAR AO MENU")
leia(desejo)

decisão
fimalgoritmo

 

 

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

  • Membro VIP

Olá.

 

@Biscatão da Boate, já adiantando alguns "probleminhas" .

 

1#
Apesar de fazer sentido, o comando fimAlgoritmo no Visualg não é um comando para "finalizar o algoritmo", mas sim apenas como parte da sintaxe do "programa principal", ou seja, só deve existir um fimAlgoritmo no código... (aquele que fica na última linha do código. Esse é referente à sequência algoritmo/inicio/fimalgoritmo).

 

Ex.:

11 horas atrás, Biscatão da Boate disse:

   escreval("        1 - MOBAR EM UM MAPA " )
   escreval("    2 - VERIFICAR STATUS DO CHAR")
   escreval("          3 - FECHAR JOGO ")
   leia(decis)
   limpatela
   se decis = 3 entao
      fimalgoritmo
   fimse
   se level >= 10 entao
      dn[1] <- dn[1] + 30
      dn[2] <- dn[2] + 30
   fimse

 

Ali dentro do primeiro se, não pode usar o fimAlgoritmo.

 

Então, creio eu que não exista um comando para "finalizar na marra" no Visualg. No Pascal talvez servisse o halt ou exit. Um comando que poderia chegar próximo do que precisa seria interrompa.

 

RESUMINDO:

Troque todos os fimAlgoritmo por interrompa, menos o último, é claro. Utilize o CTRL+U para "substituir".

 

 

 

2#

Sobre:

11 horas atrás, Biscatão da Boate disse:

         escreval()
         map <- 0
         escreval("ENTER PARA VOLTAR AO MENU")
         leia (desejo)
         decisão ()
fimprocedimento

 

Esse trecho acima fica dentro de decisão(). Na ultima linha você usa novamente decisão()... Logo, um procedimento está invocando um novo procedimento... NÃO PODE FAZER ISSO. (obs.: no futuro verás que isso é chamado de recursividade, e só é usado em contextos específicos. Que não é o seu caso.)

 

 

RESUMINDO:

Em vez de reinvocar o procedimento, utilize um laço de repetição. Ex.:

procedimento decisão()
inicio
   repita
      decis <- 0
      limpaTela
      escreval("          O que deseja fazer?          ")
      escreval("         1 - MOBAR EM UM MAPA          ")
      escreval("     2 - VERIFICAR STATUS DO CHAR      ")
      escreval("           3 - FECHAR JOGO             ")
      leia(decis)
      limpaTela
      se decis = 3 entao
         interrompa
      fimse
      se level >= 10 entao
         dn[1] <- dn[1] + 30
         dn[2] <- dn[2] + 30
      fimse







   ate desci=3
fimProcedimento

 

Entendeu? os procedimentos e funções no Visualg são como subprogramas. Se você já abriu ele, você não precisa reabrir  quando chega no fim, basta "volta para o início".

 

 

 

3#

Após trocar os fimAlgoritmo por interrompa,  pressione CTRL+G para reindentar o código... verás que está faltando coisas ou tem coisas fora de ordem... pois o código está desalinhado... provavelmente relacionado aos fimse dos se

 

ATENÇÃO:

Infelizmente o Visualg NÃO ANALISA CÓDIGO POR COMPLETO NA COMPILAÇÃO, no caso, alguns erros só aparecem quando a linha vai ser executada... Daí é necessário ter uma atenção maior na hora de criar ou editar as estruturas...

 

 

 

 

***

 

No aguardo.

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

@Simon Viegas Poxa cara... valeu mesmo, vou dar umas arrumadas nele, mas agora entendi. Um forte abraço.

adicionado 59 minutos depois

@Simon Viegas Em relação ao "Fimalgoritmo" eu tive que deixar, pois se eu colocar "interrompa" ele vai acionar os (Leia desejo):

se decis = 3 entao
 interrompa
   fimse





leia(desejo)

decisão

O mesmo vale para os outros "interrompa"

 

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

 @Simon Viegas Infelizmente, não consegui usar o interrompa (provavelmente nas que ainda estão com "interrompa" devem estar bugando) continuei com o fimalgoritmo

Bem, o código ta ficando bem melhor:


Código:

Spoiler

Algoritmo "RPG - 2.1"
// Autor : CTKL
// Data : 8/11/2018
var
tela : caractere
dano,level,map,class       : inteiro
decis,atq                  : inteiro
m                          : vetor [1..10] de caractere
sk                         : vetor [1..2 ] de caractere
dn                         : vetor [1..2 ] de inteiro
certeza,atack,tela2,desejo : caractere
hp                         : real
hpc                        : real
dni                        : vetor[1..5] de real
cont                       : inteiro
troca                      : caractere
troca2                     : inteiro
hpcr                       : inteiro
procedimento decisão
inicio
repita
   cont <- 0
   sk[2] <- troca
   dn[2] <- troca2
   decis <- 0
   limpatela
//---------------MENU PRINCIPAL------------------
   escreval("     _SELECIONE O QUE DESEJA FAZER:_        ")
   escreval("        1 - MOBAR EM UM MAPA " )
   escreval("    2 - VERIFICAR STATUS DO CHAR")
   escreval("          3 - FECHAR JOGO ")
   leia(decis)
   limpatela
   se decis = 3 entao
   fimse
   se level >= 10 entao
      dn[1] <- dn[1] + 30
      dn[2] <- dn[2] + 30
   fimse
   se decis = 2 entao
      se level >= 10 entao
         escreval
         escreval("-----------------------------------------------------------")
         escreval(" Parabéns você alcançou o level:", level)
         escreval
         escreval("Como recompensa o dano de sua skills aumentaram em +30")
         escreval
         escreval("Skill ->",sk[1], "Dano -->",dn[1] + 30)
         escreval
         escreval("Skill ->",sk[2], "Dano -->",dn[2] + 30)
         escreval("------------------------------------------------------------")
      fimse

      escreval()
      escreval(" Level do Personagem -->", level)
      escreval(" SKILS DO PERSONAGEM: ")
      escreval
      escreval( sk[1],"--->", dn[1])
      escreval( sk[2],"--->", dn[2])
   fimse

   se decis = 1 entao
      escreval()
      escreval("1 - MOBAR EM TERRA ESQUECIDA - LEVEL 1 ~ 30")
      escreval("2 - MOBAR EM FLORESTA TENEBROSA - lEVEL 30 ~ 60")
      leia (map)
      limpatela
   fimse
   se (level >= 1) e (level <= 10) entao
      m[1] <- "Poring"
   fimse
   se (level >10) entao
      m[1] <- "Blue slime"
   fimse
   se m[1] = "Poring" entao
      hp <- 200
      se class = 1 entao
         dni [1] <- 30
      senao
         se class = 2 entao
            dni [1] <- 60
         fimse
      fimse
   fimse
   se m[1] = "Blue slime" entao
      hp <- 600
      se class = 1 entao
         dni[1] <- 50
      senao
         se class = 2 entao
            dni[1] <- 90
         fimse
      fimse
   fimse
//------------MAPA 1: TERRA ESQUECIDA-----------
   se map = 1 entao
      escreval("    BEM VINDO A TERRA ESQUECIDA  ")
      escreval("           O 1° MAPA      ")
      escreval
      escreval
      escreval("Mob próximo: ",m[1])
      escreval("Pressione enter para atacar: ",m[1])
      escreval()
      leia(atack)
      limpatela
//---------------SISTEMA DE BATALHA------------------
         escreval("       SISTEMA DE COMBATE      ")
         escreval("      Nome do MOB  : ",m[1])
         escreval("       Vida do MOB : ",hp)
         escreval("       Dano do MOB: ", dni[1])
         escreval()
//----------------CLASSE 1: CAVALEIRO-----------------
      se class = 1 entao
         enquanto hp > 0 faca
            escreval(" 1 - ",sk[1] , " - Dano total :", dn[1])
            escreval(" 2 - ",sk[2] , " - Dano total :", dn[2])
            leia(atq)
            se atq = 1 entao
               hp <- hp - dn[1]
               escreval("HP DO MOB: ",hp)
            fimse
            hpc <- hpc - dni[1]
            escreval("SEU HP ATUAL :", hpc)
            se atq = 2 entao
             cont <- cont + 1
             se cont = 2 entao
              troca <- sk[2]
              troca2 <- dn[2]
              sk[2] <- "LIMITE DE USO"
              dn[2] <- 0
             fimse
               hp <- hp - dn[2]
               escreval("HP DO MOB: ",hp)
            fimse
            se hpc <= 0 entao
               escreval("GAME OVER!")
               interrompa
            fimse
               se hp <= 0 entao
                  m[1] <- ("Finish")
                  escreval (m[1])
                  level <- level + 1
               fimse
         fimenquanto
      fimse
//-----------------CLASSE 2: MAGO------------
         se class = 2 entao
            enquanto hp > 0 faca
               escreval(" 1 - ", sk[1] , " - Dano total :", dn[1])
               escreval(" 2 - ", sk[2] , " - Dano total :", dn[2])
               leia(atq)
               se atq = 1 entao
                  hp <- hp - dn[1]
                  escreval("HP: ",hp)
               fimse
               hpc <- hpc - dni[1]
               escreval("SEU HP ATUAL :", hpc)
               se atq = 2 entao
                cont <- cont + 1
                 se cont = 1 entao
                  troca <- sk[2]
                  troca2 <- dn[2]
                  sk[2] <- "LIMITE DE USO"
                  dn[2] <- 0
                 fimse
                  hp <- hp - dn[1]
                  escreval("HP: ",hp)
               fimse
               se hpc <= 0 entao
                  escreval("GAME OVER!")
                  interrompa
               fimse
               se hp <= 0 entao
                  m[1] <- ("Finish")
                  escreval(m[1])
                  level <- level + 1
               fimse
            fimenquanto
         fimse

   fimse
      
      escreval()
      map <- 0
      escreval("PRESSIONE ENTER...")
      leia (desejo)
   ate decis=3
   fimprocedimento
   //--------------   inicio  -------------------------------------
   inicio
escreval()
escreval()
escreval()
escreval("           ¶¶¶¶¶   ¶¶¶¶¶   ¶¶¶¶¶¶¶           ")

escreval("           ¶¶ ¶¶¶  ¶¶ ¶¶¶  ¶¶¶               ")

escreval("           ¶¶¶¶¶   ¶¶¶¶¶   ¶¶  ¶¶¶           ")

escreval("           ¶¶ ¶¶   ¶¶      ¶¶   ¶¶           ")

escreval("           ¶¶  ¶¶  ¶¶      ¶¶¶¶¶¶¶   2.1         ")
escreval()
escreval()
escreval("         RPG DE MOB EM DESENVOLVIMENTO...")
escreval("   GOSTARIAMOS DE SUJESTÕES SOBRE FUTURAS ATT")
escreval()
escreval("         PARA CONTINUAR PRESSIONE ENTER")

escreval()
   leia(tela)
   limpatela
   enquanto (class <> 1) e (class <> 2) faca
      escreval()
      escreval("    POR FAVOR ESCOLHA SUA CLASSE DIGITANDO SEUS NÚMEROS")
      escreval("    SÃO 2 CLASSES DISPONÍVEIS SÃO:")
      escreval
      escreval("    1 - CAVALEIRO - POUCO DANO, PORÉM ALTO HP")
      escreval("    2 - MAGO - ALTO DANO, PORÉM POUCO HP")

      leia (class)
      limpatela
      escreval("    DIGITE SOMENTE OS NÚMEROS INFORMADOS!")
      escreval()
   fimenquanto
   se class = 1 entao
      limpatela
      escreval()
      escreval("   Ótima escolha! Essa classe é ótima para causar grandes danos")
      escreval
      escreval("   Agora você já esta pronto para começar...")
      escreval
      escreval("   De início você tera 2 skills")
      escreval
      escreval("   A cada 10 levels, seu dano aumenta + 30")
      level <- 1
      hpc <- 500
      hpcr <- 500
      se (level >= 1) e (level <= 5) entao
         sk[1] <- ("Golpe triunfante     ")
         sk[2] <- ("Corte Mortal         ")
         dn[1] <- 40
         dn[2] <- 60
      fimse
      escreval("  Suas Skills são:")
      escreval()
      escreval("  1 - ",sk[1], " Dano --> ",dn[1])
      escreval("  2 - ",sk[2], " Dano --> ",dn[2])
   fimse

   se class = 2 entao
      limpatela
      escreval()
      escreval("  Ótima escolha! Essa classe é razoável nos danos")
      escreval()
      escreval("  Agora você já esta pronto para começar...")
      escreval
      escreval("  De início você tera 2 skills")
      escreval
      escreval("  A cada 10 levels, seu dano aumenta + 30")
      level <- 1
      hpc <- 300
      se (level >= 1) e (level <= 5) entao
         sk[1] <- ("Raio negro     ")
         sk[2] <- ("PACTO         ")
         dn[1] <- 80
         dn[2] <- 100
         escreval("  Suas Skills são:")
         escreval()
         escreval("  1 - ",sk[1], " Dano --> ",dn[1])
         escreval("  2 - ",sk[2], " Dano --> ",dn[2])
      fimse
   fimse

   escreval
   escreval("Pressione ENTER...")
   leia(tela2)
   limpatela
//--------------MENU PRINCIPAL---------------
   enquanto (decis <> 1) e (decis <> 2) e (decis <> 3)faca
      escreval("     _SELECIONE O QUE DESEJA FAZER:_        ")
      escreval("        1 - MOBAR EM UM MAPA " )
      escreval("    2 - VERIFICAR STATUS DO CHAR")
      escreval("          3 - FECHAR JOGO ")
      leia(decis)
   fimenquanto
      limpatela
   se decis = 1 entao
      escreval()
      escreval("1 - MOBAR EM TERRA ESQUECIDA    - LEVEL  1 ~ 30")
      escreval("2 - MOBAR EM FLORESTA TENEBROSA - lEVEL 30 ~ 60")
      leia (map)
      limpatela
   fimse
   se decis = 2 entao
      limpatela
      escreval()
      escreval (" Level do Personagem --> ",level)
      escreval (" SKILLS DO PERSONAGEM    : ")
      escreval ()
      escreval(sk[1],"--->", dn[1])
      escreval(sk[2],"--->", dn[2])
   fimse
   se decis = 3 entao
   fimalgoritmo
   fimse
   se (level >= 1) e (level <= 5) entao
      m[1] <- "Poring"
   fimse
   se m[1] = "Poring" entao
      hp <- 200
      se class = 1 entao
         dni[1] <- 30
      senao
         se class = 2 entao
            dni[1] <- 60
         fimse
      fimse
   fimse
//----------MAPA 1: TERRA ESQUECIDA-----------
   se map = 1 entao
      escreval("    BEM VINDO A TERRA ESQUECIDA  ")
      escreval("           O 1° MAPA      ")
      escreval()
      escreval()
      escreval("Mob próximo : ", m[1])
      escreval()
      escreval("Pressione enter para atacar: ",m[1])
      escreval
      leia(atack)
      limpatela
//-----------------SISTEMA DE BATALHA--------------------
         escreval("       SISTEMA DE COMBATE      ")
         escreval("      Nome do MOB : ",[1])
         escreval("       Vida do MOB: ",hp)
         escreval("       Dano do MOB: ", dni[1])
         escreval
//----------------CLASSE CAVALEIRO-----------------------
      se class = 1 entao
         enquanto hp > 0 faca
            escreval(" 1 - ", sk[1] , " - Dano total : ",dn[1])
            escreval(" 2 - ", sk[2] , " - Dano total : ",dn[2])
            leia(atq)
            se atq = 1 entao
               hp <- hp - dn[1]
               escreval("HP: ", hp)
            fimse
            hpc <- hpc - dni[1]
            escreval("SEU HP ATUAL :", hpc)
            se atq = 2 entao
            cont <- cont + 1
             se cont = 2 entao
               troca <- sk[2]
               troca <- dn[2]
               sk[2] <- "LIMITE DE USO"
               dn[2] <- 0
             fimse
               hp <- hp - dn[2]
               escreval("HP: ", hp)
            fimse
            se hpc <= 0 entao
               escreval("GAME OVER!")
               interrompa
            fimse
            se hp <= 0 entao
               m[1] <- "Finish"
               escreval (m[1])
               level <- level + 1
            fimse
         fimenquanto
      fimse
//----------------CLASSE MAGO----------------------------
      enquanto hp > 0 faca
         se class = 2 entao
            escreval(" 1 - ", sk[1] , " - Dano total :", dn[1])
            escreval(" 2 - ", sk[2] , " - Dano total :", dn[2])
            leia(atq)
            se atq = 1 entao
               hp <- hp - dn[1]
               escreval("HP DO MOB: ", hp)
            fimse
            hpc <- hpc - dni[1]
            escreval("SEU HP ATUAL:", hpc)
            escreval()
            se atq = 2 entao
             cont <- cont + 1
              se cont = 1 entao
              troca <- sk[2]
              troca2 <- dn[2]
              sk[2] <- "LIMITE DE USO"
              dn[2] <- 0
              fimse
               hp <- hp - dn[2]
               escreval("HP DO MOB: ", hp)
               escreval()
            fimse
            se hpc <= 0 entao
               escreval ("GAME OVER!")
               interrompa
            fimse
            se hp <= 0 entao
               m[1] <- "Finish"
               escreval (m[1])
               level <- level + 1
            fimse
         fimse
      fimenquanto
   fimse
   map <- 0
   escreval()
   escreval("PRESSIONE ENTER...")
   leia(desejo)
   decisão
fimalgoritmo

 

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

  • Membro VIP

4#

 

Sobre:

10 minutos atrás, Biscatão da Boate disse:

@Simon Viegas Infelizmente, não consegui usar o interrompa (provavelmente nas que ainda estão com "interrompa" devem estar bugando) continuei com o fimalgoritmo

Bem, o código ta ficando bem melhor:

 

Não... em relação ao fimAlgoritmo, necessariamente tem que removê-los!!! (não há o que discutir), ou seja, a questão estará em encontrar outra solução, beleza?

 

 

5#

adicionado 5 minutos depois

Sobre:

10 minutos atrás, Biscatão da Boate disse:

      se level >= 10 entao
         dn[1] <- dn[1] + 30
         dn[2] <- dn[2] + 30
      fimse

 

Esse trecho está solto, ou seja, se tiver level 10 ou maior vai "evoluir"... independente da escolha do 1 ou 2. Seria assim mesmo? ou deveria executar se apenas escolher a opção 1?

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

  • Membro VIP

6#

Um dos problemas do seu código é que você está fazendo coisa parecidas em duas partes do código... tem um menu no programa principal e tem o mesmo menu dentro do procedimento.... em fim...

 

Fiz alguns ajustes/alterações para demonstrar usos de procedimentos.

Spoiler

algoritmo "RPG - 2.1"
// Autor : CTKL
// Data : 8/11/2018
var
   {tela : caractere}
   dano,level,map,class       : inteiro
   decis,atq                  : inteiro
   m                          : vetor [1..10] de caractere
   sk                         : vetor [1..2 ] de caractere
   dn                         : vetor [1..2 ] de inteiro
   {certeza,atack,tela2,desejo : caractere}
   certeza,atack, desejo      : caractere
   hp                         : real
   hpc                        : real
   dni                        : vetor[1..5] de real
   cont                       : inteiro
   troca                      : caractere
   troca2                     : inteiro
   hpcr                       : inteiro


procedimento aguardarENTER()
var
   ENTER :caractere
inicio
   escreva ("Pressione ENTER para continuar...")
   leia(ENTER)
fimProcedimento

procedimento logoRPG()
inicio
   escreval()
   escreval("           ¶¶¶¶¶   ¶¶¶¶¶   ¶¶¶¶¶¶¶           ")
   escreval("           ¶¶ ¶¶¶  ¶¶ ¶¶¶  ¶¶¶               ")
   escreval("           ¶¶¶¶¶   ¶¶¶¶¶   ¶¶  ¶¶¶           ")
   escreval("           ¶¶ ¶¶   ¶¶      ¶¶   ¶¶           ")
   escreval("           ¶¶  ¶¶  ¶¶      ¶¶¶¶¶¶¶   2.1     ")
   escreval()
fimProcedimento

procedimento limpaTelaLogo()
inicio
   limpaTela
   logoRPG()
fimProcedimento

procedimento apresentacao()
inicio
   limpaTelaLogo()
   escreval()
   escreval()
   escreval("      RPG DE MOB EM DESENVOLVIMENTO...       ")
   escreval(" GOSTARIAMOS DE SUJESTÕES SOBRE FUTURAS ATT  ")
   escreval()
   aguardarENTER()
fimProcedimento

procedimento defineClasseInicial()
inicio
   limpaTelaLogo()
   enquanto (class <> 1) e (class <> 2) faca
      escreval("    POR FAVOR ESCOLHA SUA CLASSE DIGITANDO SEUS NÚMEROS        ")
      escreval("    SÃO 2 CLASSES DISPONÍVEIS SÃO:                             ")
      escreval()
      escreval("    1 - CAVALEIRO - POUCO DANO, PORÉM ALTO HP                  ")
      escreval("    2 - MAGO - ALTO DANO, PORÉM POUCO HP                       ")
      leia(class)
      limpaTela
      escreval("    DIGITE SOMENTE OS NÚMEROS INFORMADOS!                      ")
      escreval()
   fimEnquanto

   limpaTelaLogo()
   se class = 1 entao
      escreval("   Ótima escolha! Essa classe é ótima para causar grandes danos")
      escreval
      escreval("   Agora você já esta pronto para começar...                   ")
      escreval
      escreval("   De início você tera 2 skills                                ")
      escreval
      escreval("   A cada 10 levels, seu dano aumenta + 30                     ")
      level <- 1
      hpc   <- 500
      hpcr  <- 500
      {se (level >= 1) e (level <= 5) entao} //SEMPRE SERÁ 1!!! Logo...
      sk[1] <- "Golpe triunfante")
      sk[2] <- "Corte Mortal")
      dn[1] <- 40
      dn[2] <- 60
      {fimSe}
      escreval("  Suas Skills são:")
      escreval()
      escreval("  1 - ",sk[1]," Dano --> ",dn[1])
      escreval("  2 - ",sk[2]," Dano --> ",dn[2])
   fimSe //fim class 1

   se class = 2 entao
      escreval("  Ótima escolha! Essa classe é razoável nos danos              ")
      escreval()
      escreval("  Agora você já esta pronto para começar...                    ")
      escreval()
      escreval("  De início você tera 2 skills                                 ")
      escreval()
      escreval("  A cada 10 levels, seu dano aumenta + 30                      ")
      level <- 1
      hpc <- 300
      {se (level >= 1) e (level <= 5) entao}
      sk[1] <- ("Raio negro     ")
      sk[2] <- ("PACTO         ")
      dn[1] <- 80
      dn[2] <- 100
      escreval("  Suas Skills são:")
      escreval()
      escreval("  1 - ",sk[1], " Dano --> ",dn[1])
      escreval("  2 - ",sk[2], " Dano --> ",dn[2])
      {fimSe}
   fimSe //fim class 2
   aguardarENTER()
fimProcedimento

procedimento mobarMapa()
inicio
   escreval()
   escreval("1 - MOBAR EM TERRA ESQUECIDA    - LEVEL  1 ~ 30")
   escreval("2 - MOBAR EM FLORESTA TENEBROSA - lEVEL 30 ~ 60")
   leia(map)
   se (level >= 1) e (level <= 5) entao
      m[1] <- "Poring"
   fimSe
   se m[1] = "Poring" entao
      hp <- 200
      se class = 1 entao
         dni[1] <- 30
      senao
         se class = 2 entao
            dni[1] <- 60
         fimSe
      fimSe
   fimSe

   limpaTelaLogo()
   //----------MAPA 1: TERRA ESQUECIDA-----------
   se map = 1 entao
      escreval("    BEM VINDO A TERRA ESQUECIDA  ")
      escreval("           O 1° MAPA      ")
      escreval()
      escreval()
      escreval("Mob próximo : ", m[1])
      escreval()
      escreval("Pressione enter para atacar: ",m[1])
      escreval
      leia(atack)
      limpaTelaLogo()
      //-----------------SISTEMA DE BATALHA--------------------
      escreval("       SISTEMA DE COMBATE      ")
      escreval("      Nome do MOB : ",[1])
      escreval("       Vida do MOB: ",hp)
      escreval("       Dano do MOB: ",dni[1])
      escreval
      //----------------CLASSE CAVALEIRO-----------------------
      se class = 1 entao
         enquanto hp > 0 faca
            escreval(" 1 - ", sk[1] , " - Dano total : ",dn[1])
            escreval(" 2 - ", sk[2] , " - Dano total : ",dn[2])
            leia(atq)
            se atq = 1 entao
               hp <- hp - dn[1]
               escreval("HP DO MOB: ", hp)
            fimSe
            hpc <- hpc - dni[1]
            escreval("SEU HP ATUAL :", hpc)
            se atq = 2 entao
               cont <- cont + 1
               se cont = 2 entao
                  troca  <- sk[2]
                  troca2 <- dn[2]
                  sk[2] <- "LIMITE DE USO"
                  dn[2] <- 0
               fimSe
               hp <- hp - dn[2]
               escreval("HP: ", hp)
            fimSe
            se hpc <= 0 entao
               escreval("GAME OVER!")
               interrompa
            fimSe
            se hp <= 0 entao
               m[1] <- "Finish"
               escreval (m[1])
               level <- level + 1
            fimSe
         fimenquanto
      fimSe
      //----------------CLASSE MAGO----------------------------
      enquanto hp > 0 faca
         se class = 2 entao
            escreval(" 1 - ", sk[1] , " - Dano total :", dn[1])
            escreval(" 2 - ", sk[2] , " - Dano total :", dn[2])
            leia(atq)
            se atq = 1 entao
               hp <- hp - dn[1]
               escreval("HP DO MOB: ", hp)
            fimSe
            hpc <- hpc - dni[1]
            escreval("SEU HP ATUAL:", hpc)
            escreval()
            se atq = 2 entao
               cont <- cont + 1
               se cont = 1 entao
                  troca <- sk[2]
                  troca2 <- dn[2]
                  sk[2] <- "LIMITE DE USO"
                  dn[2] <- 0
               fimSe
               hp <- hp - dn[2]
               escreval("HP DO MOB: ", hp)
               escreval()
            fimSe
            se hpc <= 0 entao
               escreval ("GAME OVER!")
               interrompa
            fimSe
            se hp <= 0 entao
               m[1] <- "Finish"
               escreval (m[1])
               level <- level + 1
            fimSe
         fimSe
      fimenquanto
   fimSe //fim map 1
fimProcedimento //fim mobarMapa


//--------------MENU PRINCIPAL---------------
procedimento menuPrincipal()
var
   opcao : inteiro
inicio
   repita
      limpaTelaLogo()
      opcao <- 0
      enquanto (opcao <> 1) e (opcao <> 2) e (opcao <> 3)faca
         escreval("     _SELECIONE O QUE DESEJA FAZER:_     ")
         escreval("          1 - MOBAR EM UM MAPA           ")
         escreval("       2 - VERIFICAR STATUS DO CHAR      ")
         escreval("             3 - FECHAR JOGO             ")
         leia(opcao)
      fimEnquanto
      limpaTelaLogo()
      se opcao = 1 entao
         mobarMapa()
      fimSe //fim opcao 1
      se opcao = 2 entao
         escreval()
         escreval (" Level do Personagem --> ",level)
         escreval (" SKILLS DO PERSONAGEM    : ")
         escreval ()
         escreval(sk[1],"--->", dn[1])
         escreval(sk[2],"--->", dn[2])
      fimSe //fim opcao 2
      aguardarENTER()
   ate opcao=3
fimProcedimento


//--------------   inicio  -------------------------------------
inicio
   apresentacao()
   defineClasseInicial()
   menuPrincipal()
fimalgoritmo

 

 

 

 

 

7#

Sugiro dar uma lida no código do 6#. Tente entender qual foi a proposta do uso desses procedimentos. Entenda que eles servem basicamente para duas coisas:

[1] ajuda evitar repetição de código;

Por exemplo, eu quero exibir o logo em todas as telas. Em vez de ficar copiando o logo em cada uma, criei um procedimento... ai toda vez que invoco esse procedimento, vai fazer tudo aquilo que eu quero.

 

Além disso, se quiser alterar esse logo, só altero uma vez lá no procedimento.. se eu tivesse copiada em cada tela, teria que fazer alteração um a um...

 

[2] separar trechos de código em módulos.

apresentacao()
defineClasseInicial()
menuPrincipal()

Perceba que apenas peguei um pedaço do código e dei um nome a ele... esses procedimentos estão servindo basicamente para isso.

 

 

Dar uma revisada no código e vai reajustando...

 

OU SE PREFERIR

 

Apenas retire o procedimento precisao() do seu código... faça sem procedimentos!!!

 

 

 

8#

Independente se vai tentar dar continuidade nas alterações que eu fiz; ou se vai remover o método precisao() do seu código, na hora de mobar, você está copiando o mesmo código para cada uma das classes sem necessidade, pois os trechos são iguais!. Logo não precisa copiar... use apenas uma vez...  (não precisa de se para ver qual a classe, simplesmente comece a mobar independente da classe).

 

 

****

 

Por ai vai...

 

No aguardo.

 

 

 

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

15 horas atrás, Simon Viegas disse:

se para ver qual a classe, simplesmente comece a mobar independente da classe)

@Simon Viegas O "se" para ver a classe é justamente para saber qual skill usar, afinal cada classe tem suas próprias skills

adicionado 59 minutos depois
15 horas atrás, Simon Viegas disse:

Independente se vai tentar dar continuidade nas alterações que eu fiz

@Simon Viegas Pretendo sim cara, pois agora eu compreendi o uso dos procedimentos e no que eu tava errando. Como não consegui encerrar o algoritmo se a pessoa der "Game Over", eu improvisei diminuindo o level dela. Também usei outro procedimento caso o hp do char fique "< 300". Segue o código abaixo:

algoritmo "RPG - 2.1.0"
// Autores: ...
// Data : 8/11/2018
var
   {tela : caractere}
   dano,level,map,class       : inteiro
   decis,atq                  : inteiro
   m                          : vetor [1..10] de caractere
   sk                         : vetor [1..2 ] de caractere
   dn                         : vetor [1..2 ] de inteiro
   {certeza,atack,tela2,desejo : caractere}
   certeza,atack, desejo      : caractere
   hp                         : real
   hpc                        : real
   dni                        : vetor[1..5] de real
   cont                       : inteiro
   pt                         : caractere


procedimento aguardarENTER()
var
   ENTER :caractere
inicio
   escreval()
   escreval ("Pressione ENTER para continuar...")
   leia(ENTER)
fimProcedimento

procedimento logoRPG()
inicio
   escreval()
   escreval("          ¶¶¶¶¶   ¶¶¶¶¶   ¶¶¶¶¶¶¶           ")
   escreval("          ¶¶ ¶¶¶  ¶¶ ¶¶¶  ¶¶¶               ")
   escreval("          ¶¶¶¶¶   ¶¶¶¶¶   ¶¶  ¶¶¶           ")
   escreval("          ¶¶ ¶¶   ¶¶      ¶¶   ¶¶           ")
   escreval("          ¶¶  ¶¶  ¶¶      ¶¶¶¶¶¶¶   2.1.0     ")
   escreval()
fimProcedimento

procedimento limpaTelaLogo()
inicio
   limpaTela
   logoRPG()
fimProcedimento

procedimento apresentacao()
inicio
   limpaTelaLogo()
   escreval()
   escreval()
   escreval("      RPG DE MOB EM DESENVOLVIMENTO...       ")
   escreval(" GOSTARIAMOS DE SUJESTÕES SOBRE FUTURAS ATT  ")
   escreval()
   aguardarENTER()
fimProcedimento


procedimento potion()
inicio
se hpc < 300 entao
hpc <- 500
escreval()
escreval("HP ABAIXO DE 300! VOCÊ BEBEU UMA POTION...")
fimse
fimprocedimento

procedimento defineClasseInicial()
inicio
   limpaTelaLogo()
   enquanto (class <> 1) e (class <> 2) faca
      escreval("    POR FAVOR ESCOLHA SUA CLASSE DIGITANDO SEUS NÚMEROS        ")
      escreval("    SÃO 2 CLASSES DISPONÍVEIS SÃO:                             ")
      escreval()
      escreval("    1 - CAVALEIRO - POUCO DANO, PORÉM ALTA DEFESA                  ")
      escreval("    2 - MAGO - ALTO DANO, PORÉM POUCA DEFESA                       ")
      leia(class)
      limpaTela
      escreval("    DIGITE SOMENTE OS NÚMEROS INFORMADOS!                      ")
      escreval()
   fimEnquanto

   limpaTelaLogo()
   se class = 1 entao
      escreval("   Ótima escolha! Essa classe é ótima para causar grandes danos")
      escreval
      escreval("   Agora você já esta pronto para começar...                   ")
      escreval
      escreval("   De início você tera 2 skills                                ")
      escreval
      escreval("   A cada 10 levels, seu dano aumenta + 30                     ")
      level <- 1
      hpc   <- 500
      {se (level >= 1) e (level <= 5) entao} //SEMPRE SERÁ 1!!! Logo...
      sk[1] <- "Golpe triunfante")
      sk[2] <- "Corte Mortal")
      dn[1] <- 40
      dn[2] <- 60
      {fimSe}
      escreval("  Suas Skills são:")
      escreval()
      escreval("  1 - ",sk[1]," Dano --> ",dn[1])
      escreval("  2 - ",sk[2]," Dano --> ",dn[2])
   fimSe //fim class 1

   se class = 2 entao
      escreval("  Ótima escolha! Essa classe é razoável nos danos              ")
      escreval()
      escreval("  Agora você já esta pronto para começar...                    ")
      escreval()
      escreval("  De início você tera 2 skills                                 ")
      escreval()
      escreval("  A cada 10 levels, seu dano aumenta + 30                      ")
      level <- 1
      hpc <- 500
      {se (level >= 1) e (level <= 5) entao}
      sk[1] <- ("Raio negro     ")
      sk[2] <- ("PACTO         ")
      dn[1] <- 80
      dn[2] <- 100
      escreval("  Suas Skills são:")
      escreval()
      escreval("  1 - ",sk[1], " Dano --> ",dn[1])
      escreval("  2 - ",sk[2], " Dano --> ",dn[2])
      {fimSe}
   fimSe //fim class 2
   aguardarENTER()
fimProcedimento

procedimento mobarMapa()
inicio
   escreval()
   escreval("1 - MOBAR EM TERRA ESQUECIDA    - LEVEL  1 ~ 30")
   escreval("2 - MOBAR EM FLORESTA TENEBROSA - lEVEL 30 ~ 60")
   leia(map)
   se (level >= 1) e (level <= 5) entao
      m[1] <- "Poring"
   fimSe
   se m[1] = "Poring" entao
      hp <- 200
      se class = 1 entao
         dni[1] <- 30
      senao
         se class = 2 entao
            dni[1] <- 60
         fimSe
      fimSe
   fimSe

   limpaTelaLogo()
   //----------MAPA 1: TERRA ESQUECIDA-----------
   se map = 1 entao
      escreval("    BEM VINDO A TERRA ESQUECIDA  ")
      escreval("           O 1° MAPA      ")
      escreval()
      escreval()
      escreval("Mob próximo : ", m[1])
      potion ()
      escreval()
      escreval("Pressione enter para atacar: ",m[1])
      escreval()
      leia(atack)
      limpaTelaLogo()
      //-----------------SISTEMA DE BATALHA--------------------
      escreval("       SISTEMA DE COMBATE      ")
      escreval("      Nome do MOB : ",[1])
      escreval("       Vida do MOB: ",hp)
      escreval("       Dano do MOB: ",dni[1])
      escreval
      //----------------CLASSE CAVALEIRO-----------------------
      se class = 1 entao
         enquanto hp > 0 faca
            escreval(" 1 - ", sk[1] , " - Dano total : ",dn[1])
            escreval(" 2 - ", sk[2] , " - Dano total : ",dn[2])
            leia(atq)
            se atq = 1 entao
               hp <- hp - dn[1]
               escreval("HP DO MOB: ", hp)
            fimSe
            hpc <- hpc - dni[1]
            escreval("SEU HP ATUAL :", hpc)
            se atq = 2 entao
               hp <- hp - dn[2]
               escreval("HP: ", hp)
            fimSe
            se hpc <= 0 entao
               escreval("GAME OVER! SEU LEVEL IRA CAIR")
               level <- level - 1
            fimSe
            se hp <= 0 entao
               m[1] <- "Finish"
               escreval (m[1])
               level <- level + 1
            fimSe
         fimenquanto
      fimSe
      //----------------CLASSE MAGO----------------------------
      enquanto hp > 0 faca
         se class = 2 entao
            escreval(" 1 - ", sk[1] , " - Dano total :", dn[1])
            escreval(" 2 - ", sk[2] , " - Dano total :", dn[2])
            leia(atq)
            se atq = 1 entao
               hp <- hp - dn[1]
               escreval("HP DO MOB: ", hp)
            fimSe
            hpc <- hpc - dni[1]
            escreval("SEU HP ATUAL:", hpc)
            escreval()
            se atq = 2 entao
               hp <- hp - dn[2]
               escreval("HP DO MOB: ", hp)
               escreval()
            fimSe
            se hpc <= 0 entao
               level <- leveL - 1
               escreval ("GAME OVER! SEU LEVEL IRA CAIR")
            fimSe
            se hp <= 0 entao
               m[1] <- "Finish"
               escreval (m[1])
               level <- level + 1
            fimSe
         fimSe
      fimenquanto
   fimSe //fim map 1
fimProcedimento //fim mobarMapa


//--------------MENU PRINCIPAL---------------
procedimento menuPrincipal()
var
   opcao : inteiro
inicio
   repita
      limpaTelaLogo()
      opcao <- 0
      enquanto (opcao <> 1) e (opcao <> 2) e (opcao <> 3)faca
         escreval("     _SELECIONE O QUE DESEJA FAZER:_     ")
         escreval("          1 - MOBAR EM UM MAPA           ")
         escreval("       2 - VERIFICAR STATUS DO CHAR      ")
         escreval("             3 - FECHAR JOGO             ")
         leia(opcao)
      fimEnquanto
      limpaTelaLogo()
      se opcao = 1 entao
         mobarMapa()
      fimSe //fim opcao 1
      se opcao = 2 entao
         escreval()
         escreval (" Level do Personagem --> ",level)
         escreval (" SKILLS DO PERSONAGEM    : ")
         escreval ()
         escreval(sk[1],"--->", dn[1])
         escreval(sk[2],"--->", dn[2])
         
      fimSe //fim opcao 2
      aguardarENTER()
   ate opcao=3
fimProcedimento

inicio
   apresentacao()
   defineClasseInicial()
   menuPrincipal()
fimalgoritmo

 

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

  • Membro VIP

1#

6 horas atrás, Biscatão da Boate disse:

@Simon Viegas O "se" para ver a classe é justamente para saber qual skill usar, afinal cada classe tem suas próprias skills

 

Mas as skills estão nas variáveis... repare que os trechos são iguais...

 

 

 

2#

Os códigos que estão com {} podem ser removido. Deixei assim como comentário para ver como estava antes.

 

 

 

3#

Segue o código com pequenos ajustes.

Spoiler

algoritmo "RPG - 2.1.0"
// Autores: ...
// Data : 8/11/2018
const
   VERSION = "2.1.0"
var
   {tela : caractere}
   dano,level,map,class       : inteiro
   decis,atq                  : inteiro
   m                          : vetor [1..10] de caractere
   sk                         : vetor [1..2 ] de caractere
   dn                         : vetor [1..2 ] de inteiro
   {certeza,atack,tela2,desejo : caractere}
   certeza,atack,desejo      : caractere
   hp                         : real
   hpc                        : real
   dni                        : vetor[1..5] de real
   cont                       : inteiro
   pt                         : caractere


procedimento aguardarENTER()
var
   ENTER :caractere
inicio
   escreval()
   escreva ("Pressione ENTER para continuar...")
   leia(ENTER)
fimProcedimento

procedimento logoRPG()
inicio
   escreval()
   escreval("           ¶¶¶¶¶   ¶¶¶¶¶   ¶¶¶¶¶¶¶           ")
   escreval("          ¶¶ ¶¶¶  ¶¶ ¶¶¶  ¶¶¶                ")
   escreval("         ¶¶¶¶¶   ¶¶¶¶¶   ¶¶  ¶¶¶             ")
   escreval("        ¶¶ ¶¶   ¶¶      ¶¶   ¶¶              ")
   escreval("       ¶¶  ¶¶  ¶¶      ¶¶¶¶¶¶¶   ",VERSION,"       ")
   escreval()
fimProcedimento

procedimento limpaTelaLogo()
inicio
   limpaTela
   logoRPG()
fimProcedimento

procedimento apresentacao()
inicio
   limpaTelaLogo()
   escreval()
   escreval()
   escreval("      RPG DE MOB EM DESENVOLVIMENTO...       ")
   escreval(" GOSTARIAMOS DE SUJESTÕES SOBRE FUTURAS ATT  ")
   escreval()
   aguardarENTER()
fimProcedimento


procedimento potion()
inicio
   se hpc < 300 entao
      hpc <- 500
      escreval()
      escreval("HP ABAIXO DE 300! VOCÊ BEBEU UMA POTION...")
   fimse
fimprocedimento

procedimento defineClasseInicial()
inicio
   limpaTelaLogo()
   enquanto (class <> 1) e (class <> 2) faca
      escreval("    POR FAVOR ESCOLHA SUA CLASSE DIGITANDO SEUS NÚMEROS        ")
      escreval("    SÃO 2 CLASSES DISPONÍVEIS SÃO:                             ")
      escreval()
      escreval("    1 - CAVALEIRO - POUCO DANO, PORÉM ALTA DEFESA              ")
      escreval("    2 - MAGO - ALTO DANO, PORÉM POUCA DEFESA                   ")
      leia(class)
      limpaTela
      escreval("    DIGITE SOMENTE OS NÚMEROS INFORMADOS!                      ")
      escreval()
   fimEnquanto

   limpaTelaLogo()
   se class = 1 entao
      escreval("   Ótima escolha! Essa classe é ótima para causar grandes danos")
      escreval
      escreval("   Agora você já esta pronto para começar...                   ")
      escreval
      escreval("   De início você tera 2 skills                                ")
      escreval
      escreval("   A cada 10 levels, seu dano aumenta + 30                     ")
      level <- 1
      hpc   <- 500
      {se (level >= 1) e (level <= 5) entao} //SEMPRE SERÁ 1!!! Logo...
      sk[1] <- "Golpe triunfante")
      sk[2] <- "Corte Mortal")
      dn[1] <- 40
      dn[2] <- 60
      {fimSe}
      escreval("  Suas Skills são:")
      escreval()
      escreval("  1 - ",sk[1]:20," Dano --> ",dn[1])
      escreval("  2 - ",sk[2]:20," Dano --> ",dn[2])
   fimSe //fim class 1

   se class = 2 entao
      escreval("  Ótima escolha! Essa classe é razoável nos danos              ")
      escreval()
      escreval("  Agora você já esta pronto para começar...                    ")
      escreval()
      escreval("  De início você tera 2 skills                                 ")
      escreval()
      escreval("  A cada 10 levels, seu dano aumenta + 30                      ")
      level <- 1
      hpc <- 500
      {se (level >= 1) e (level <= 5) entao}
      sk[1] <- ("Raio negro     ")
      sk[2] <- ("PACTO         ")
      dn[1] <- 80
      dn[2] <- 100
      escreval("  Suas Skills são:")
      escreval()
      escreval("  1 - ",sk[1]:20," Dano --> ",dn[1])
      escreval("  2 - ",sk[2]:20," Dano --> ",dn[2])
      {fimSe}
   fimSe //fim class 2
   aguardarENTER()
fimProcedimento

procedimento mobarMapa()
inicio
   escreval()
   escreval("1 - MOBAR EM TERRA ESQUECIDA    - LEVEL  1 ~ 30")
   escreval("2 - MOBAR EM FLORESTA TENEBROSA - lEVEL 30 ~ 60")
   leia(map)
   se (level >= 1) e (level <= 5) entao
      m[1] <- "Poring"
   fimSe
   se m[1] = "Poring" entao
      hp <- 200
      se class = 1 entao
         dni[1] <- 30
      senao
         se class = 2 entao
            dni[1] <- 60
         fimSe
      fimSe
   fimSe

   limpaTelaLogo()
   //----------MAPA 1: TERRA ESQUECIDA-----------
   se map = 1 entao
      escreval("    BEM VINDO A TERRA ESQUECIDA  ")
      escreval("           O 1° MAPA      ")
      escreval()
      escreval()
      escreval("Mob próximo : ",m[1])
      potion()
      escreval()
      escreval("Pressione enter para atacar: ",m[1])
      escreval()
      leia(atack)
      limpaTelaLogo()
      //-----------------SISTEMA DE BATALHA--------------------
      escreval("       SISTEMA DE COMBATE      ")
      {escreval("      Nome do MOB : ",[1])}
      escreval("       Nome do MOB: ",m[1])
      escreval("       Vida do MOB: ",hp)
      escreval("       Dano do MOB: ",dni[1])
      escreval
      enquanto hp > 0 faca
         escreval(" 1 - ",sk[1]:20," - Dano total : ",dn[1])
         escreval(" 2 - ",sk[2]:20," - Dano total : ",dn[2])
         leia(atq)
         se atq = 1 entao
            hp <- hp - dn[1]
            {escreval("HP DO MOB: ",hp)}
         fimSe
         se atq = 2 entao
            hp <- hp - dn[2]
            {escreval("HP DO MOB: ",hp)}
         fimSe
         escreval("HP DO MOB: ",hp)
         hpc <- hpc - dni[1]
         escreval("SEU HP ATUAL :",hpc)

         se hpc <= 0 entao
            escreval("GAME OVER! SEU LEVEL IRA CAIR")
            level <- level - 1
         fimSe
         se hp <= 0 entao
            m[1] <- "Finish"
            escreval (m[1])
            level <- level + 1
         fimSe
      fimenquanto
   fimSe //fim map 1
fimProcedimento //fim mobarMapa

procedimento verificarStatus()
inicio
   escreval()
   escreval(" Level do Personagem --> ",level)
   escreval(" SKILLS DO PERSONAGEM    : ")
   escreval()
   escreval("   ",sk[1]:20,"--->",dn[1])
   escreval("   ",sk[2]:20,"--->",dn[2])
fimProcedimento

//--------------MENU PRINCIPAL---------------
procedimento menuPrincipal()
var
   opcao : inteiro
inicio
   repita
      limpaTelaLogo()
      opcao <- 0
      enquanto (opcao <> 1) e (opcao <> 2) e (opcao <> 3)faca
         escreval("     _SELECIONE O QUE DESEJA FAZER:_     ")
         escreval("          1 - MOBAR EM UM MAPA           ")
         escreval("       2 - VERIFICAR STATUS DO CHAR      ")
         escreval("             3 - FECHAR JOGO             ")
         leia(opcao)
      fimEnquanto
      limpaTelaLogo()
      se opcao = 1 entao
         mobarMapa()
      fimSe //fim opcao 1
      se opcao = 2 entao
         {escreval()}
         {escreval(" Level do Personagem --> ",level)}
         {escreval(" SKILLS DO PERSONAGEM    : ")}
         {escreval()}
         {escreval(sk[1],"--->",dn[1])}
         {escreval(sk[2],"--->",dn[2])}
         verificarStatus()
      fimSe //fim opcao 2
      aguardarENTER()
   ate opcao=3
fimProcedimento

inicio
   MudaCor("Vermelho","Frente")
   apresentacao()
   MudaCor("Branco","Frente")
   defineClasseInicial()
   menuPrincipal()
fimalgoritmo

 

Ver o que achou útil e vai aprimorando o código...

 

 

***

 

No aguardo.

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

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