python - 创建进化系统
问题描述
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。
如果可能的话,实现这一目标的最佳方法是什么?
解决方案
恕我直言,您可以使用字典来存储有关怪物及其级别的数据,进化所需的 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']
推荐阅读
- c++ - 如何将派生类的对象存储在可以访问基类没有的属性的数据结构中?
- basic4android - 如何使用 basic4android 发布有效载荷
- regex - 如何检查 Pyspark 中列的日期格式
- qt - 当我在 Qt 中调整窗口大小时,程序在 QLabel::setPixmap() 崩溃
- node.js - 仅在当天第一次触发 AWS-Lambda 函数时调用它
- python - 使用结构差异进行 Yaml 比较
- python - 如何解决错误字符串索引在文本扩展中必须是整数
- data-management - 从其他项目更新 dvc 注册表中的数据
- python - 将项目添加到数据库时出现完整性错误
- python - 脚本自行关闭