我可以将项目及其属性存储在外部文件中,并在需要时调用它吗?(在Python中编写Roguelike时)
我刚刚完成了用Python编写一个类似Roguelike的程序的工作,现在我完全靠自己来决定下一步要做什么 我的困境在于代码的混乱。我想在某处存储元素,例如项目;生物;技能;任何一个可能有大量他们自己拥有众多财产的地方 目前,所有这些代码都在一个越来越大的文件中,这是最基本的。用于将项目放置在某个级别上的函数目前看起来非常类似:(在生成级别时调用此函数) 当我打算添加更多的项时,这个函数会变得非常长,所有需要创建的函数都会非常长,以处理每个项的功能。我真的很想将它从main.py中取出并存储到其他地方,以使其更易于使用,但目前我不知道如何做到这一点 以下是我尝试和思考问题的尝试: 我可以有一个文件,其中包含一个item类,每个item都包含若干属性;(名称、类型、条件、附魔、图标、重量、颜色、说明、装备槽、材料)。然后在该文件中存储项目的功能?主文件如何知道何时调用另一个文件 是否可以将所有项目数据存储在外部文件(如XML或其他文件)中,并在需要时从中读取我可以将项目及其属性存储在外部文件中,并在需要时调用它吗?(在Python中编写Roguelike时),python,python-2.7,roguelike,libtcod,Python,Python 2.7,Roguelike,Libtcod,我刚刚完成了用Python编写一个类似Roguelike的程序的工作,现在我完全靠自己来决定下一步要做什么 我的困境在于代码的混乱。我想在某处存储元素,例如项目;生物;技能;任何一个可能有大量他们自己拥有众多财产的地方 目前,所有这些代码都在一个越来越大的文件中,这是最基本的。用于将项目放置在某个级别上的函数目前看起来非常类似:(在生成级别时调用此函数) 当我打算添加更多的项时,这个函数会变得非常长,所有需要创建的函数都会非常长,以处理每个项的功能。我真的很想将它从main.py中取出并存储到其
这是我可以应用于不仅仅是项目的东西。这将是非常有用的,因为没有一个真正臃肿的My.Py保存了游戏中的所有生物、项目和其他对象,当我真正想要的是一个主循环和一个更好的组织结构时,它会弹出数千行代码。 < P>如果你不需要人类可读的文件,考虑使用Python的库;这可以序列化对象和函数,这些对象和函数可以写入文件,也可以从文件中读取 就组织而言,您可以有一个对象文件夹,将这些类从主游戏循环中分离出来,例如:
game/
main.py
objects/
items.py
equipment.py
creatures.py
要进一步改进,请使用继承来执行以下操作,例如:
class Equipment(Object):
class Sword(Equipment):
class Item(Object):
class Scroll(Item):
然后,可以在初始化中定义任何剑的所有设置(例如剑在哪一手),并且只需要传入特定剑的不同内容(例如名称、力量奖励)
是否可以将所有项目数据存储在外部文件(如XML或XML)中
什么)并在需要时从那里阅读
您可以使用模块执行此操作
您可以将项目的属性存储在单独的文件(普通文本文件)中。读取此文件以自动创建对象
我将使用文档中的示例作为指导:
import ConfigParser
config = ConfigParser.RawConfigParser()
config.add_section('Sword')
config.set('Sword', 'strength', '15')
config.set('Sword', 'weight', '5')
config.set('Sword', 'damage', '10')
# Writing our configuration file to 'example.cfg'
with open('example.cfg', 'wb') as configfile:
config.write(configfile)
现在,要读取该文件:
import ConfigParser
from gameobjects import SwordClass
config = ConfigParser.RawConfigParser()
config.read('example.cfg')
config_map = {'Sword': SwordClass}
game_items = []
for i in config.sections():
if i in config_map:
# We have a class to generate
temp = config_map[i]()
for option,value in config.items(i):
# get all the options for this sword
# and set them
setattr(temp, option, value)
game_items.append(temp)
import ConfigParser
from gameobjects import SwordClass
config = ConfigParser.RawConfigParser()
config.read('example.cfg')
config_map = {'Sword': SwordClass}
game_items = []
for i in config.sections():
if i in config_map:
# We have a class to generate
temp = config_map[i]()
for option,value in config.items(i):
# get all the options for this sword
# and set them
setattr(temp, option, value)
game_items.append(temp)