Ir ao conteúdo

Posts recomendados

Postado

Eu havia parado durante um tempo (tipo, muito tempo) dai resolvi fazer um pequeno programa com as coisas que havia aprendido, estruturas condicionais, estruturas de repetições, listas e tuplas, a lógica também, funções um pouco (o básico do básico), dai fiz um pequeno "jogo" que chamei de caverna do dragão. dai se tiverem dicas, melhorias, até ajuda na lógica mesmo, se eu estiver usando algo errado... enfim segue o código abaixo :)

 

from time import sleep
from random import randint, choice

def game_over(ouro, cavernas, nome):
    print(f'{nome}, fim de jogo')
    sleep(1)
    print(f'você visitou {cavernas} cavernas, e conseguiu {ouro} de ouro')
    sleep(3)
    print('Game Over')
    sleep(3)

def cave(ouro, cavernas, escolha, dragao, nome):
    if dragao == escolha:
        cavernas += 1
        print(f'{nome}, você fez sua escolha')
        sleep(2)
        print('''
      ~~~~~~~~~~~----__         .:.         __----~~~~~~~~~~~------___
 ~~ ~--__          ......====\\~~    .:::.    ~~//====......          __--~ ~~
         ~\ ...::::~~~~~~  //|||    .:::::.    |||\\  ~~~~~~::::... /~
        -~~\_            //  |||***.(:::::).***|||  \\            _/~~-
             ~\_        // *******.:|\^^^/|:.******* \\        _/~
                \      / ********.::(>: :<)::.******** \      /
                 \   /  ********.::::\\|//::::.********  \   /
                  \ /   *******.:::::(o o):::::.*******   \ /
                   /.   ******.::::'*|V_V|***`::.******   .\
                     ~~--****.:::'***|___|*****`:.****--~~
                           *.::'***//|___|\\*****`.*
                           .:'  **/##|___|##\**    .
                          .    (v(VVV)___(VVV)v)
''')
        print('oh não, você entrou na caverna do dragão ruim')
        sleep(1.5)
        print('você morreu sem a menor chance de defesa')
        sleep(2)
        game_over(ouro, cavernas, nome)
        return 0

    else:
        doacao = randint(1, 500)
        print(f'{nome}, você fez sua escolha')
        sleep(2)
        print('que bom! você econtrou um dragão legal')
        sleep(1)
        print(f'ele resolveu lhe doar {doacao} de seu precioso ouro')
        sleep(2)
        print('é muita sorte hahaha')
        return (1, doacao)


def good_names():
    List_of_names = (('Ruby', 'Mike', 'Antony', 'Jonh',\
                       'Jack', 'Snike', 'Builderman'),\
                     ('Sarah', 'Emma', 'Olivia', 'Sophia',\
                      'Harpista', 'Scarlet', 'Chloe', 'Eva'),\
                     ('Andy', 'Avery', 'Bobby', 'Cameron',\
                      'Carson', 'Dana', 'Harper', 'Jesse',\
                      'Joe', 'Julian', 'Kei'))

    return choice(choice(List_of_names))

def rules():
    print('o jogo caverna do dragão, é um jogo de exploração')
    sleep(2)
    print('tudo consiste em conseguir ouro')
    sleep(2)
    print('o jogador deve escolher entre duas cavernas')
    sleep(2)
    print('sempre haverá um dragão na caverna')
    sleep(1.5)
    print('pode ser um dragão bom ou um dragão ruim')
    sleep(2)
    print('caso haja um dragão legal na caverna, ele ira dividir o ouro com você')
    sleep(2.5)
    print('ele pode lhe dar de 1 moeda até 500 moedas, isso depende do humor dele')
    sleep(2.5)
    print('mas se tiver um dragão ruim na caverna')
    sleep(2)
    print('ele irá lhe matar, e será fim de jogo')
    sleep(1.5)
    print('boa sorte, forasteiro')
    sleep(2)
    
def game():
    while True:#inicia o programa
        print('seja bem vindo a versão 0.1 do Caverna do Dragão')
        sleep(1.5)
        if input('deseja ver as regras? (S/N)').upper() == 'S':#verifica se o jogador pretende ver as regras
            rules()
        else:#se não, começa o jogo
            gold = 0
            caves = 0

            print('sua jornada começa aqui, boa sorte')
            name = input('qual seu nome forasteiro? (digite "idk" para um nome aleatorio: ')
            if name == 'idk' or name == 'IDK':#verifica se o jogador quer um nome aleatorio
                name = good_names()
            print(f'{name} é um belo nome, não acha? ')
            while True:#incia o jogo em sí
                bad_dragon = randint(1, 2)
                action = int(input('\
\n1 - Caverna da esquerda\
\n2 - Caverna da direita\
\n3 - Sair do Jogo\
\n>>> '))
                if action == 1:
                    resultado = cave(gold, caves, action, bad_dragon, name)
                    if resultado != 0:
                       caves += resultado[0]
                       gold += resultado[1]
                    else:
                        break
                    
                elif action == 2:
                    resultado = cave(gold, caves, action, bad_dragon, name)
                    if resultado != 0:
                        caves += resultado[0]
                        gold += resultado[1]
                    else:
                        break

                elif action == 3:
                    game_over(gold, caves, name)
                    break
                    
                else:
                    print('opção invalida, digite novamente')
                
game()

 

  • Curtir 1
Postado

Iniciativa boa sem dúvidas, mas falta muita coisa nele para fazer, acho que esse dragão poderia ser uma classe e na medida da pontuação do jogador as classes filhas de dragões aparecem aleatóriamente para disputar com o jogador por força ou riquezas e esses dragões deveriam receber pontuações a cada interação com o jogador, o que os fariam ficar mais fáceis ou mais difíceis, dar outras dinâmicas ao dragão, além de suborno ou enfrentamento como por exemplo resolver um enigma matemático em X tempo, ou responder uma charada, caso o dragão vença ele aumenta sua pontuação de dificuldade e riquezas ou caso ele perca, cai sua pontuação e riqueza, existem muitas possibilidades, pode até se seguir a mesma regra de pontuação por exemplo do jogo Super Trunfo para que a alternância de habilidades dos dragões melhore.

 

Usar uma constante para carregar dados do jogador, como nome e ID, para não ficar todo novo jogo tendo que digitar novamente um nome ou lendo regras, uma vez que já foi criado um jogador com um id e lido as regras, basta verificar ao carregar o jogo quem retorna ao jogo e carregar os dados na constante.

 

Colocar esses parâmetros dentro de um arquivo de configuração do jogador ao salvar ou morrer para ser lido pelo jogo novamente, e então poder perguntar ao jogador em caso de morte se ele quer ressuscitar de onde parou, perdendo seus pontos ou seu ouro e correr risco de encontrar dragões fortes estando com baixa pontuação ou não poder subornar os dragões com ouro para que não o matem, ou então ainda começar a aventura toda do começo.

 

São muitas possibilidades!

Seria legal criar um roteiro disso tudo antes de programar, pois quem sabe isso ai não se torna um app de celular.👍

Postado

@fspjonny valeu ai, vou realizar essas melhorias que me indicou. mas ainda não ouvi falar sobre classes, poderia me explicar sobre isso? ou  me indicar videos e textos sobre? agradeço desde já. me desculpa também por não ter respondido antes, muito ocupado aqui

Postado
1 hora atrás, Cachorro_louco disse:

@fspjonny valeu ai, vou realizar essas melhorias que me indicou. mas ainda não ouvi falar sobre classes, poderia me explicar sobre isso? ou  me indicar videos e textos sobre? agradeço desde já. me desculpa também por não ter respondido antes, muito ocupado aqui

Classe faz parte de Programação Orientação a Objeto que seria a estruturação de um código de forma que fique organizado e interativo a outros objetos a POO é um dos 4 paradigmas de programação as outras são  a programação imperativa, funcional e lógica.

 

Este seria um exemplo bem simples de uma Classe criada para calcular a área

 

class AreaDoQuadrado:
    def __init__(self):
        self.largura = 0
        self.altura= 0

    def area(self):
        return self.largura * self.altura
      
# Se cria uma instância da Classe AreaDoQuadrado para uso:
InstanciaArea = AreaDoQuadrado()
InstanciaArea.altura = 10
InstanciaArea.largura = 20
print(InstanciaArea.area(),"m².")

"""
Copia e cola esse código acima e executa ele.
Ao estudar POO voce vai aprender porque não se pode acessar diretamente o objeto e sim se deve criar uma instância dele e demais coisas como: encapsulamento, herança, polimorfismo, etc...
"""

Claro, quem conhece, sabe que dessa forma ai acima funciona a título desse exemplo, porém não é a forma indicada, pois as propriedades internas da classe(membros) estão acessíveis a qualquer um, o que causa problemas na programação e para isso se usa os métodos acessores, (Geters e Seters ou Decorators).

É uma longa história esse tal de POO

 

Assiste esse vídeo, e se gostar é só assistir os demais, qualquer coisa me chama! 

 

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!