我正在写我的第一个游戏,我很想知道如何摆脱所有这些我正在使用的硬编码。每个角色都有“能力”(所有个人功能),但我似乎不知道如何简化这个功能。示例:
def lightning_bolt(self):
if self.is_stunned:
print("Stunned...ability unsuccessful.")
elif self.is_confused:
confused_test = roll_d_x(2)
if confused_test == 1:
print("Confused...ability unsuccessful.")
else:
defender.mobility = (defender.mobility / 2)
success = self.success_check()
defender.mobility = (defender.mobility * 2)
if success:
volatile_roll = roll_d_x(10)
if volatile_roll == 1:
self.volatile_magic()
else:
defender.lose_health(((self.energy * 0.5) + 10))
self.lose_energy(25)
stun_test = roll_d_x(4)
if stun_test == 1:
defender.is_stunned = True
else:
print("Ability failed.")注意:所有的能力都必须通过这个“令人震惊和困惑的测试”和“易失性测试”。我将为它们定义一个函数。*我想创造“班级能力:”,但我希望每个角色都有自己的个人能力。有什么方法可以套牢吗?有什么想法可以简化诸如“成本”和“所造成的损害”等方面?
发布于 2019-10-05 17:30:31
我已经要求你提供更多的代码,我希望你提供。
在此之前,我建议您查看一下访客模式及其使用多个分派的实现。
你被闪电袭击了。您正在应用某些效果,包括一些常见于所有攻击的效果。
你还没有达到某些防御者对闪电免疫,或者减少伤害,或者对眩晕免疫的程度,但是你会的。
在这种情况下,告诉你,别问更有意义。你告诉防守者他们被闪电袭击了,让防守者处理事情。
默认行为实质上就是您所展示的行为。但是,您可以创建一个防御子类,该子类不受闪电的影响,或者受到较小的伤害,并且逻辑将与该特定的防御程序放在一起,从而提高代码的组织和可维护性。
除此之外,由于您的防御程序似乎已经是一个类(基于您展示的代码),在一个方法中将“标准攻击检查”编码到基类应该很容易。然后,您可以引发异常或返回一个哨兵值,以指示由于眩晕或混乱而阻止了攻击,或者只需打印结果(不推荐)。
https://codereview.stackexchange.com/questions/230224
复制相似问题