我对python(3)的编码相当陌生,因为它有点像一个爱好,但是玩了一些游戏机制而不用担心GUI。我目前正在研究基于文本的文本游戏,其基础在于一个旧的Excel文档。它相当集中在数学和逻辑上,我认为这是一个非常简单但深入的机制。Python中基于文本的机制:类,字典或列表?
无论如何,游戏允许研究科技,生产建筑物,成长中的公民,聚集文化等。我正在努力的一件事是军事系统。
我有许多不同的单位供玩家制作。假设每个单位都有名称,实力和韧性(例如'Archer','10','80')。战争是基于总球员的力量(我可以计算出来)。每次战争后,单位的实力因其弹性而降低,即。这个弓箭手在战争结束后会减弱到原来的80%力量。8
然而,我很难弄清楚用户如何以允许这个机制的方式创建单位。我最初使用Unit()类(使用不同的单位,例如archer,spearman作为对象),并在名称/强度/弹性的基础上增加了“数量”参数,但每次运行函数计算弹性我意识到我不仅影响目前生产的单位,也影响单位的所有未来版本。我运行类似如下:
class Unit():
def __init__(self, name, quantity, strength, resilience)
self.name = name
self.quantity = quantity
self.strength = strength
self.resilience = resilience
archer = Unit('archer', 0, 10, 80)
等等
每次用户建立了一个单元,“数量”将增加。不过,我已经明白,这可能是这种编码方法可能是限制我。阅读其他线程告诉我,我应该瞄准不以这种方式存储对象数据,对吧?
我一直在玩和研究,我似乎无法得到我的头解决方案(我敢肯定有)。我很难找到存储每个单元的基本数据(名称,强度,弹性)的正确方法,同时允许用户为每个单元生成多个唯一的副本。每个单元应该是一个班级?一个子类?它应该存储在字典中?一个列表?
我很抱歉在这篇文章中缺少代码,但我并不完全有错误的代码 - 我只是缺乏逻辑和Python知识来找到正确的系统来使其正常工作。一直玩字典,列表,循环,继承类,但我不能正确的。
如何创建多个弓箭手,每个弓箭手都会受到伤害,而不会影响将来可能产生的弓箭手?
谢谢,如果任何人都可以建议的东西。除此之外,我在python中编写了很多有趣的代码!
您应该显示更多代码。像你在那里做的那样定义力量等等,意味着它们只适用于特定的单位,而不是*适用于所有这类单位;人们通常犯的错误是在课堂上定义这些价值观,但是你没有这样做。 –
感谢您的反馈。我不确定哪些代码真的是相关的,因为它没有太多我有错误的代码,这只是我玩弄Python的逻辑,并不能完全弄清楚正确的结构。下面的答案是接近的,我只是在用户选择产生对象时创建对象的唯一ID的问题。 – Jammydude44