Python 创建进化系统 怪物={'Monster 1':{'hp':45,'attack':49,'defence':49,'level':1,'evolution':16}, 怪物2:{'hp':60,'attack':62,'defence':63,'level':1,'evolution':32}, 怪物3:{'hp':80,'attack':82,'defence':83,'level':1,}, 怪物4:{'hp':39,'攻击':52,'防御':43,'等级':1,'进化':16}, 怪物5:{'hp':58,'attack':64,'defence':58,'level':1,'evolution':36}, 怪物6:{'hp':78,'attack':84,'defence':78,'level':1}}
我想要一个系统,让怪物1变为怪物2,然后在“等级”>=“进化”时变为怪物3。 在相同的前提下,分别让怪物4变为怪物5和怪物6 如果可能的话,实现这一目标的最佳方式是什么Python 创建进化系统 怪物={'Monster 1':{'hp':45,'attack':49,'defence':49,'level':1,'evolution':16}, 怪物2:{'hp':60,'attack':62,'defence':63,'level':1,'evolution':32}, 怪物3:{'hp':80,'attack':82,'defence':83,'level':1,}, 怪物4:{'hp':39,'攻击':52,'防御':43,'等级':1,'进化':16}, 怪物5:{'hp':58,'attack':64,'defence':58,'level':1,'evolution':36}, 怪物6:{'hp':78,'attack':84,'defence':78,'level':1}},python,python-3.x,Python,Python 3.x,我想要一个系统,让怪物1变为怪物2,然后在“等级”>=“进化”时变为怪物3。 在相同的前提下,分别让怪物4变为怪物5和怪物6 如果可能的话,实现这一目标的最佳方式是什么 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},
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}}
这是一本嵌套字典。首先,您需要更改级别,然后检查级别是否处于进化点,然后对其进行进化
我在这里看到的问题是,对于这个问题,你需要列表,这样你就可以在这个列表中逐项查看。让我们将其转换为一个列表,将所有花括号转换为方括号,并删除所有字符串和冒号
monsters = [[45, 49, 49, 1, 16],
[60, 62, 63, 1, 32],
[80, 82, 83, 1]]
我们如何改变水平和演变?让我们根据你的怪物列表和等级定义一个完成战斗的函数。这使用了无网格ID,如ID 1-3是怪物A进化,4-6是怪物B进化,等等:
def finishbattle(monsterid, ismaxlevel...):
levelexp=... #What ever you want it to be
if ismaxlevel == False:
monsters[monsterid][3] += levelexp #changing the level value
if monsters[monsterid][3] >= monsters[monsterid][4]: #check level value
monsterid += 1 #evolved into next id
如果你什么都不懂,请问我
class Monster():
mon_dict = {'A':
[{'Name':'Monster 1','hp':45, 'attack':49, 'defense':49, 'level':1, 'evolve':16},
{'Name':'Monster 2','hp':60, 'attack':62, 'defense':63, 'level':1, 'evolve':32},
{'Name':'Monster 3','hp':80, 'attack':82, 'defense':83, 'level':1,}]}
#Could continue dictionary with another monster form
def __init__(self,form,stage=0):
self.form=form
self.stage=stage
self.traits=Monster.mon_dict[form][stage].copy()
def level_up(self,increase=1):
self.traits['level']+=increase
if self.traits['level']>=self.traits.get('evolve',float("inf")):
self.evolution()
def evolution(self):
self.traits=Monster.mon_dict[self.form][self.stage+1].copy()
这将是一个非常艰难的起点。你可以创造一个特定形态和阶段的怪物,召唤等级来提高它的等级,当等级>=进化时,它就会进化。你可以玩这个游戏,使它更适合你正在寻找的
>>>from somefile import Monster
>>> A=Monster('A')
>>> A.traits
{'Name':'Monster 1','hp':45, 'attack':49, 'defense':49, 'level':1, 'evolve':16}
>>> A.level_up(16)
>>> A.traits
{'Name': 'Monster 2', 'hp': 60, 'attack': 62, 'defense': 63, 'level': 1, 'evolve': 32}
嗯,你可以使用字典来存储怪物及其等级的数据,进化所需的hps e等级如下:
waterMonsterData = {'Evolution1': {'hp': 10, 'evolution': 14}, 'Evolution2': {'hp': 25, 'evolution': 21}}
你可以使用另一本代表真实怪物的字典,比如:
fooTheGreatestWaterMonster = {'hp': 10, 'lvl': 1, 'currentEvolution': 'Evolution1'}
因此,您可以检查最伟大的水怪['lvl']的足部和演化水怪数据['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']
定义一个Monster类并创建具有这些属性的对象可能会更容易。我如何使用类来实现这一点?我对蟒蛇很陌生,所以我为“初学者问题”道歉。所以我需要每个怪物进化路线的列表?@AustinGray根据我的方法,是的,但回顾一下,我认为你不必使用列表。字典也可以用于此。浮点(“inf”)是做什么的?这是一种廉价的黑客
.get()
对于字典,如果未找到给定的键,则可以返回默认值。如果怪物的字典中没有“进化”,它就不应该进入“进化”。因此,我将infinity(infinity是一个拼写错误)与infinity进行比较,以确保无论级别是什么,if语句都不会为真。