Algoritmo Pokémon

Explorando en Youtube me topé con este vídeo de algoritmos hecho por Freddy Vega (Ceo de Platzi), dónde de forma muy clara (hasta con diagrama de flujo) explica el algoritmo del juego de Pokémon.

Así que se me ocurrió la genial idea de llevarlo a código con Python de la manera más sencilla.

Primero escribí el código en pseudocódigo y use Pseint para este propósito, también lo pueden encontrar en GitHub:

screenshot_01.pngscreenshot_02.pngscreenshot_03.png

El mismo programa (Pseint) construye el Diagrama de Flujo

screenshot_04.png
screenshot_05.png

Ahora el mismo código en Python:

import random

defpokemon_game():
    # Definimos la vida de los pokemones
    hp_pikachu = 100
    hp_jiggypuff = 100      

    # Definimos el turno, el cual será aleatorio
    # 0 Para Pikachu
    # 1 Para Jigglipuff
    turn = random.randint(0, 1)

    print('Pikachu HP           : ' + str(hp_pikachu))
    print('Jigglypuff HP        : ' + str(hp_jiggypuff) )

    # Entramos en combate
    while hp_pikachu > 0and hp_jiggypuff > 0:

        # Esta partida esta arreglada (al menos le estamos dando ventaja a Pikachu)xD
        attack_pikachu = random.randint(0, 55)
        attack_jigglypuff = random.randint(0, 45)

        if turn == 1:
            print('\nTurn: Jigglypuff')
            print('Pikachu HP           : ' + str(hp_pikachu) + ' HP')
            hp_pikachu -= attack_jigglypuff
            print('Jigglypuff attack    : -' + str(attack_jigglypuff))
            print('Pikachu HP           : ' + str(hp_pikachu))
            turn = 0

        else:
            print('\nTurn: Pikachu')
            print('Jigglypuuf HP        : ' + str(hp_jiggypuff) + ' HP')
            hp_jiggypuff -= attack_pikachu
            print('Pikachu attack       : -' + str(attack_pikachu))
            print('Jigglypuff HP        : ' + str(hp_jiggypuff))
            turn = 1

    # Salimos del ciclo cuando la vida de uno de los 2 sea menor o igual a 0
    if hp_pikachu <= 0:
        win = '\nJigglipuuf is the winner'
    else:
        win = '\nPikachu is the winner'

    print(win)

pokemon_game()

Mi ingles es muy básico lo sé 😄, pero mientras voy escribiendo código voy practicando un poco de ingles (al menos para nombrar las variables), el resultado variara en cada ejecución, porque los turnos y el ataque de los Pokémon se da de manera aleatoria:

Resultado 1
screenshot_06.png

Resultado 2
screenshot_07.png

Resultado 3
screenshot_08.png

Espero este pequeño post le sirva alguien que también éste empezando, sé que se le puede agregar y mejorar mucho, pero por ahora esto es lo que puedo hacer, alguien más experimentado que pueda mejorar esta idea, se que no se puede reinventar la rueda, pero en casos de aprendizaje sirve bastante.



Sobre el autor

kenyihqKenyi Hancco

Ingeniero de Software

+51 910594824Puno, Perúkenyihq.com

Comentarios

Entradas más populares de este blog

TO-DO List en Python

Foro de Algoritmia de Programación de Software