首页 > 解决方案 > 创建进化系统

问题描述

monsters = {'Monster 1':{'hp':45, 'attack':49, 'defense':49, 'level':1, 'evolve':16},
    'Monster 2':{'hp':60, 'attack':62, 'defense':63, 'level':1, 'evolve':32},
    'Monster 3':{'hp':80, 'attack':82, 'defense':83, 'level':1,},
    'Monster 4':{'hp':39, 'attack':52, 'defense':43, 'level':1, 'evolve':16},
    'Monster 5':{'hp': 58, 'attack':64, 'defense':58, 'level':1, 'evolve':36},
    'Monster 6':{'hp':78, 'attack':84, 'defense': 78, 'level':1}}

我想要一个系统将怪物 1 更改为怪物 2,然后在 'level' >= 'evolve' 时将 3 更改为怪物。而在相同的前提下,分别让怪物 4 变为怪物 5 然后 6。

如果可能的话,实现这一目标的最佳方法是什么?

标签: pythonpython-3.x

解决方案


恕我直言,您可以使用字典来存储有关怪物及其级别的数据,进化所需的 hps e 级别如下:

waterMonsterData = {'Evolution1': {'hp': 10, 'evolution': 14}, 'Evolution2': {'hp': 25, 'evolution': 21}}

您可以使用另一个代表实际怪物的字典,例如:

fooTheGreatestWaterMonster = {'hp': 10, 'lvl': 1, 'currentEvolution': 'Evolution1'}

所以你可以检查 fooTheGreatestWaterMonster['lvl'] 和进化 waterMonsterData['EvolutionX']['evolution'] 所需的级别。如果 fooTheGreatestWaterMonster 有等级那么你可以更新他的进化状态 fooTheGreatestWaterMonster['currentEvolution'] 更新后将是

fooTheGreatestWaterMonster['currentEvolution'] = 'Evolution2' 

并更新他的HP

fooTheGreatestWaterMonster['hp'] = waterMonsterData[ fooTheGreatestWaterMonster['currentEvolution'] ]['hp']

类似的东西。但我认为使用面向对象范式并实现类更好

一个粗略的想法:

monsterData = {'m1': {'hp': 10, 'evo': 10}, 'm2': {'hp': 32, 'evo': 17}}
monster = {'hp': 10, 'lvl': 1, 'currentEvolution': 'm1'}

# The monster foo studies hard and obtain 1 lvl

monster['lvl'] = monster['lvl'] + 1


# Has the monster level enought to evolve?
if monster['lvl'] > monsterData[monster['currentEvolution']]['evo']:

    # YES! The monster evolved! Congrats!
    monster['currentEvolution'] = 'm2'
    monster['hp'] = monsterData['m2']['hp']

推荐阅读