为基于文本的游戏存储level和exp的最佳方法-Python3.x
因此,我目前正在尝试用python编写一个基于文本的游戏 我想在其中使用基于经验的系统 存储值的最佳方式是什么 例如 我不知道是用列表还是用字典,你能不能给我举一些例子说明如何使用 谢谢 例如: 编辑: 我试过这个为基于文本的游戏存储level和exp的最佳方法-Python3.x,python,list,dictionary,Python,List,Dictionary,因此,我目前正在尝试用python编写一个基于文本的游戏 我想在其中使用基于经验的系统 存储值的最佳方式是什么 例如 我不知道是用列表还是用字典,你能不能给我举一些例子说明如何使用 谢谢 例如: 编辑: 我试过这个 levels = [] #levels = {"Level":"0", "XPNeed":"0"} level = 1 n = 1 expneeded = 0 expneeded = 100 levels = {"Level":0, "
levels = []
#levels = {"Level":"0", "XPNeed":"0"}
level = 1
n = 1
expneeded = 0
expneeded = 100
levels = {"Level":0, "XPNeed":0}
print(levels)
#print(levels)
#print(len(levels))
"""print(levels.get("Level")[0])
print(levels.get("XPNeed")[0])"""
newXPNeed = levels["XPNeed"] + (level * 100)
print(newXPNeed)
#print(str(levels.get("XPNeed")[0] + (level * 100)))
while len(levels) <= 31:
newXPNeed = levels["XPNeed"][n] + (level * 100)
experiencecalc = str(newXPNeed)
print(experiencecalc)
levelReq = {'Level':n, 'XPNeed':experiencecalc}
print(levelReq)
level += 1
levels.append(levelReq)
n += 1
levels=[]
#级别={“级别”:“0”,“XPNeed”:“0”}
级别=1
n=1
expneeded=0
exp=100
levels={“Level”:0,“XPNeed”:0}
打印(级别)
#打印(级别)
#打印(镜头(级别))
“”“打印(levels.get(“Level”)[0])
打印(levels.get(“XPNeed”)[0])“”“
newXPNeed=级别[“XPNeed”]+(级别*100)
打印(新需要)
#打印(str(levels.get(“XPNeed”)[0]+(level*100)))
尽管len(levels)我同意其他评论,即最简单的方法可能是拥有一个包含调平信息的外部属性文件。如果只想在代码本身中执行此操作,可以定义一个“级别对象”来容纳与级别相关的字段,然后使用级别编号作为键存储级别对象字典:
class LevelObject(object):
def __init__(self, level_number, minimum_exp_bound, maximum_exp_bound):
self._level_number = level_number
self._minimum_exp_bound = minimum_exp_bound
self._maximum_exp_bound = maximum_exp_bound
@property
def level_number(self):
return self._level_number
@property
def minimum_exp_bound(self):
return self._minimum_exp_bound
@property
def maximum_exp_bound(self):
return self._maximum_exp_bound
def main():
level_dictionary = {}
level_dictionary[0] = LevelObject(0, 0, 99)
level_dictionary[1] = LevelObject(1, 100, 199)
level_dictionary[2] = LevelObject(2, 200, 499)
level_dictionary[3] = LevelObject(3, 500, 799)
level_dictionary[4] = LevelObject(4, 800, 1499)
# Etc...
for key, value in level_dictionary.iteritems():
print 'Level: %s Min Exp: %s Max Exp: %s' % (value.level_number, value.minimum_exp_bound, value.maximum_exp_bound)
if __name__ == "__main__":
main()
>>>Level: 0 Min Exp: 0 Max Exp: 99
>>>Level: 1 Min Exp: 100 Max Exp: 199
>>>Level: 2 Min Exp: 200 Max Exp: 499
>>>Level: 3 Min Exp: 500 Max Exp: 799
>>>Level: 4 Min Exp: 800 Max Exp: 1499
我上面包含的只是一个对象/字典的模型,以及一个print语句,这样您就可以验证字典的输出将返回什么。在代码中,您可能希望将目标代码存储在自己的文件中,并将其导入代码的主要部分 你能展示你到目前为止所做的任何尝试吗?不确定存储属性文件与Pythonboth有什么关系,但我建议使用dictionary,因为以后可能需要添加一些额外的数据。这取决于您想要什么。有效性还是易用性?可能是2d数组或数据帧。我很确定每个人都有自己的偏好。你想在每次运行游戏时都获取这些数据吗?我建议使用JSON或YAML—将数据放在那里,然后从文件中加载—这将为您提供更清晰的代码。
class LevelObject(object):
def __init__(self, level_number, minimum_exp_bound, maximum_exp_bound):
self._level_number = level_number
self._minimum_exp_bound = minimum_exp_bound
self._maximum_exp_bound = maximum_exp_bound
@property
def level_number(self):
return self._level_number
@property
def minimum_exp_bound(self):
return self._minimum_exp_bound
@property
def maximum_exp_bound(self):
return self._maximum_exp_bound
def main():
level_dictionary = {}
level_dictionary[0] = LevelObject(0, 0, 99)
level_dictionary[1] = LevelObject(1, 100, 199)
level_dictionary[2] = LevelObject(2, 200, 499)
level_dictionary[3] = LevelObject(3, 500, 799)
level_dictionary[4] = LevelObject(4, 800, 1499)
# Etc...
for key, value in level_dictionary.iteritems():
print 'Level: %s Min Exp: %s Max Exp: %s' % (value.level_number, value.minimum_exp_bound, value.maximum_exp_bound)
if __name__ == "__main__":
main()
>>>Level: 0 Min Exp: 0 Max Exp: 99
>>>Level: 1 Min Exp: 100 Max Exp: 199
>>>Level: 2 Min Exp: 200 Max Exp: 499
>>>Level: 3 Min Exp: 500 Max Exp: 799
>>>Level: 4 Min Exp: 800 Max Exp: 1499