Barra de Vida com Tela de GAME OVER simples

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Barra de Vida com Tela de GAME OVER simples

Mensagem por kaitofelipe em 28.05.15 16:35

Fiquei bastante tempo tentando fazer isso funcionar, então espero que possa ajudar alguém!

Esse, colocar no início do Script principal.
Spoiler:
init python:
 
   player_hp=100
   health=100
   show_stats=False
 
   def stats_overlay():
       if show_stats:
           ui.frame()
           ui.vbox()
           ui.text("Health")
           ui.bar(player_hp,health, xmaximum=100)
           ui.close()
                     
   config.overlay_functions.append(stats_overlay)

Esse, colocar no final do Script Principal:
Spoiler:
##############################################GAME OVER

label player_dead_check:
   if health <= 0:
       centered "You don't have more health, you loose."
       centered "GAME OVER"
       $ renpy.full_restart()
   else:
       return

Colocar no momento da história que quer que apareça a barra:
Spoiler:
$ show_stats=True

E para aumentar ou diminuir a vida colocar sempre:

   
Spoiler:
$ health-=50 ######DIMINUIR VIDA
   call player_dead_check
   $ health+=50 ######AUMENTAR VIDA
   call player_dead_check


No projeto teste coloquei completo assim:
Spoiler:
init python:
 
   player_hp=100
   health=100
   show_stats=False
 
   def stats_overlay():
       if show_stats:
           ui.frame()
           ui.vbox()
           ui.text("Health")
           ui.bar(player_hp,health, xmaximum=100)
           ui.close()
                     
   config.overlay_functions.append(stats_overlay)

# Declare characters used by this game.
define e = Character('Eileen', color="#c8ffc8")


# The game starts here.
label start:

   e "M-Mister, who is coming?"
   e "Just listen."
   $ show_stats=True ######MOSTRAR BARRA
   e "I was hired to kidnap you, kid."
   $ health-=50 ######DIMINUIR VIDA
   call player_dead_check
   e "You've created a new Ren'Py game."
   $ health-=100
   call player_dead_check
   e "Once you add a story, pictures, and music, you can release it to the world!"

##############################################GAME OVER

label player_dead_check:
   if health <= 0:
       centered "You don't have more health, you loose."
       centered "GAME OVER"
       $ renpy.full_restart()
   else:
       return

Ignorem os textos, foi somente para o teste, espero que ajude alguém, att. Very Happy

kaitofelipe
Iniciante
Iniciante

Masculino Mensagens : 15
Data de inscrição : 27/05/2015

Ver perfil do usuário http://ixjun.com

Voltar ao Topo Ir em baixo

Re: Barra de Vida com Tela de GAME OVER simples

Mensagem por Kurotsugu-san em 28.05.15 22:54

Muito bom. Very Happy Talvez use no meu próximo projeto.

_________________
Tatsuhiko Takimoto escreveu:Quando leio minha história nos dias em que estou de bom humor, penso. “Incrível! Sou um gênio!”
E nos dias que estou deprimido, é sempre, “Sou uma desgraça por ter escrito algo assim! Morra agora mesmo!”
avatar
Kurotsugu-san
Criador do Ren'Py Brasil

Masculino Mensagens : 100
Data de inscrição : 28/03/2015
Localização : Porto-Alegre - RS

Ver perfil do usuário http://renpybrasil.blogspot.com.br/

Voltar ao Topo Ir em baixo

Re: Barra de Vida com Tela de GAME OVER simples

Mensagem por kaitofelipe em 29.05.15 8:28

Código:
label player_dead_check:
    if health <= 0:
        $ show_stats=False
        centered "You don't have more health, you loose."
        show bg
        with dissolve
        centered ""
        $ renpy.full_restart()
    else:
        return

Esqueci de colocar esse, esse outro coloquei dessa forma para reconhecer como background padrão do renpy quando coloca como "image bg = ("NOME.jpg")" XD ~

kaitofelipe
Iniciante
Iniciante

Masculino Mensagens : 15
Data de inscrição : 27/05/2015

Ver perfil do usuário http://ixjun.com

Voltar ao Topo Ir em baixo

Re: Barra de Vida com Tela de GAME OVER simples

Mensagem por Kloson em 25.08.15 19:25

Muito bom para usar em games de aventura, ou alguma barra de amor.
Só achei que não é um tutorial em si, isso é um sistema que você criou.

Apesar disto, muito bom o sistema.
avatar
Kloson
Moderador

Masculino Mensagens : 79
Data de inscrição : 25/08/2015
Projetos : Tempo Livre

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Barra de Vida com Tela de GAME OVER simples

Mensagem por kaitofelipe em 26.08.15 12:41

Kloson escreveu:Muito bom para usar em games de aventura, ou alguma barra de amor.
Só achei que não é um tutorial em si, isso é um sistema que você criou.

Apesar disto, muito bom o sistema.

ah, achei que podia ser considerado tutorial pq vi outros tutoriais daqui que também estão assim o.o

kaitofelipe
Iniciante
Iniciante

Masculino Mensagens : 15
Data de inscrição : 27/05/2015

Ver perfil do usuário http://ixjun.com

Voltar ao Topo Ir em baixo

Re: Barra de Vida com Tela de GAME OVER simples

Mensagem por Kloson em 26.08.15 21:35

Sim rsrsrs.
É que aqui tu disse o que cada codigo fazia e não como.
Mas de qualquer modo só foi uma observação.

Foi por bem :3
avatar
Kloson
Moderador

Masculino Mensagens : 79
Data de inscrição : 25/08/2015
Projetos : Tempo Livre

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Barra de Vida com Tela de GAME OVER simples

Mensagem por williamd1k0 em 30.08.15 4:24

Realmente isso não é bem um tutorial, mas ok :v
Algumas coisas aí poderiam ser melhoradas, justamente pq esse sistema está bem fechado no sentido de que só poderia ser usado para um único personagem.
E além de não estar devidamente otimizado, tem um método mais "python" e menos "renpy", o que dificulta o entendimento pra quem não manja muito de python.
Refiz esse sistema deixando ele mais prático e aberto.
Cópia do script: https://gist.github.com/williamd1k0/38b03b61afb638bdc93c
Código:

Código:

# É necessário um bloco init para criar as variáveis antes de inicializar o resto
init python:
    # variáveis globais, serão alteradas dinamicamente
    vidaPlayer = 100
    vidaMaxima = 100

# Criando uma tela (screen) -> uma screen pode ser criada em qualquer lugar, inclusive no arquivo screens.rpy
# Telas são layers do jogo que podem ser exibidas acima do layer principal
# Screens suportam argumentos, como em um método, no caso você pode passar informações quando exibir essa tela.
screen barraDeVida(tamanhoDaBarra=100):

    # Aqui fica a linguagem básica usada em screens
    # Frames são subdivisões em uma tela
    frame:

        # Vbox é uma caixa visual com orientação vertical
        has vbox
        # Uma referência visual, poderia ser uma imagem também
        text "Vida"

        # A barra em si, que vai usar variáveis para definir os valores
        # vidaMaxima(global::inteiro): o número máximo pra vida
        # vidaPlayer(global::inteiro): o número da vida atual do personagem
        # tamanhoDaBarra(local::inteiro ou flutuante): o tamanho da barra, se for inteiro então é passado um valor em pixel, se flutuante então é em porcentagem
        $ ui.bar(vidaMaxima,vidaPlayer,xmaximum=tamanhoDaBarra)


# Declaração do personagem
define personagem = Character("Mocinho")


# Início do jogo
label start:
    # exibe a barra de vida sem passar nenhuma informação
    show screen barraDeVida() # sem argumento, o tamanho será o pré-definido (100)

    # Characters são objetos e podem guardar atributos
    $ personagem.vida = 100

    personagem  "Sinto uma presença!"
    # oculta a barra de vida
    hide screen barraDeVida

    personagem  "Hmmm...."

    # novamente mostrando a barra, mas agora com argumento
    show screen barraDeVida(500) # agora o tamanho da barra vai ser alterado para 500
    narrator  "Um monsto misterioso ataca!"

    # diminuindo o atributo "vida" de "personagem" em 50
    $ personagem.vida -= 50
    # repassando o valor da vida do personagem para a variável global responsável por exibir na barra
    $ vidaPlayer = personagem.vida

    # checar se a vida "global" é menor que zero (aka morreu)
    call checarVida
    # se for maior que zero continua
    personagem  "Ai!! Essa machucou~"
    narrator  "O monsto misterioso ataca novamente!"

    # alterando novamente a vida e atualizando na barra
    $ personagem.vida -= 50
    $ vidaPlayer = personagem.vida

    # checando a vida novamente, mas agora vai dar zero
    call checarVida
    # apartir daqui nada será executado pois o personagem morre
    personagem  "Sou um fantasma agora..."


# label que faz a checagem da vida
label checarVida:
    # se a vida for igual ou menor que zero
    if vidaPlayer <= 0:
        centered "Sua vida esgotou!"
        centered "GAME OVER"
        # este método força a execução para o menu princiapal
        $ renpy.full_restart()
    else:
        # se não for menor que zero só retorna
        return


_________________
avatar
williamd1k0
Regular
Regular

Masculino Mensagens : 82
Data de inscrição : 19/04/2015
Localização : Paraná
Projetos : Ren'Py for Atom

Ver perfil do usuário https://github.com/williamd1k0

Voltar ao Topo Ir em baixo

Re: Barra de Vida com Tela de GAME OVER simples

Mensagem por Kloson em 12.09.15 15:49

Como faço para fazer uma barra dessas só que com outra aparência e barra vertical?
avatar
Kloson
Moderador

Masculino Mensagens : 79
Data de inscrição : 25/08/2015
Projetos : Tempo Livre

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Barra de Vida com Tela de GAME OVER simples

Mensagem por williamd1k0 em 12.09.15 18:54

Kloson escreveu:Como faço para fazer uma barra dessas só que com outra aparência e barra vertical?

O método "bar" tem um argumento "style" pra alterar isso, por exemplo:
Código:
ui.bar(vidaMaxima,vidaPlayer,ymaximum=tamanhoDaBarra,style='vbar')

Na barra horizontal, o tamanho máximo é pelo eixo X (xmaximum) e na vertical é pelo eixo Y (ymaximum).
Os tipo possíveis para o "style" são: bar, scrollbar, vbar ou vscrollbar.

Sobre a aparência, é uma coisa que vc precisa alterar manualmente no objeto "config", daqueles que ficam no options.rpy, só não sei agora quais são os parâmetros específicos.

_________________
avatar
williamd1k0
Regular
Regular

Masculino Mensagens : 82
Data de inscrição : 19/04/2015
Localização : Paraná
Projetos : Ren'Py for Atom

Ver perfil do usuário https://github.com/williamd1k0

Voltar ao Topo Ir em baixo

Re: Barra de Vida com Tela de GAME OVER simples

Mensagem por williamd1k0 em 13.09.15 23:12

Vou deixar aqui esse snippet externo pra poder ter o syntax highlight (código colorido) mais próximo da sintaxe do Ren'py:
http://williamd1k0.github.io/renpysnippets/?snippet=barra_de_vida.rpy

_________________
avatar
williamd1k0
Regular
Regular

Masculino Mensagens : 82
Data de inscrição : 19/04/2015
Localização : Paraná
Projetos : Ren'Py for Atom

Ver perfil do usuário https://github.com/williamd1k0

Voltar ao Topo Ir em baixo

Re: Barra de Vida com Tela de GAME OVER simples

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum