为基于文本的游戏存储level和exp的最佳方法-Python3.x

为基于文本的游戏存储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, "

因此,我目前正在尝试用python编写一个基于文本的游戏

我想在其中使用基于经验的系统

存储值的最佳方式是什么

例如

我不知道是用列表还是用字典,你能不能给我举一些例子说明如何使用

谢谢

例如: 编辑: 我试过这个

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