首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用“能力”确定闪电对游戏角色的影响的功能。

使用“能力”确定闪电对游戏角色的影响的功能。
EN

Code Review用户
提问于 2019-10-05 14:52:00
回答 1查看 62关注 0票数 4

我正在写我的第一个游戏,我很想知道如何摆脱所有这些我正在使用的硬编码。每个角色都有“能力”(所有个人功能),但我似乎不知道如何简化这个功能。示例:

代码语言:javascript
复制
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.")

注意:所有的能力都必须通过这个“令人震惊和困惑的测试”和“易失性测试”。我将为它们定义一个函数。*我想创造“班级能力:”,但我希望每个角色都有自己的个人能力。有什么方法可以套牢吗?有什么想法可以简化诸如“成本”和“所造成的损害”等方面?

EN

回答 1

Code Review用户

发布于 2019-10-05 17:30:31

我已经要求你提供更多的代码,我希望你提供。

在此之前,我建议您查看一下访客模式及其使用多个分派的实现。

你被闪电袭击了。您正在应用某些效果,包括一些常见于所有攻击的效果。

你还没有达到某些防御者对闪电免疫,或者减少伤害,或者对眩晕免疫的程度,但是你会的。

在这种情况下,告诉你,别问更有意义。你告诉防守者他们被闪电袭击了,让防守者处理事情。

默认行为实质上就是您所展示的行为。但是,您可以创建一个防御子类,该子类不受闪电的影响,或者受到较小的伤害,并且逻辑将与该特定的防御程序放在一起,从而提高代码的组织和可维护性。

除此之外,由于您的防御程序似乎已经是一个类(基于您展示的代码),在一个方法中将“标准攻击检查”编码到基类应该很容易。然后,您可以引发异常或返回一个哨兵值,以指示由于眩晕或混乱而阻止了攻击,或者只需打印结果(不推荐)。

票数 2
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/230224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档