- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 django 开发一个角色扮演游戏,并且正在考虑实现部分技能系统的不同选择。
假设我有一个基础技能类,例如:
class Skill (models.Model):
name = models.CharField()
cost = models.PositiveIntegerField()
blah blah blah
实现特定技能的一些方法是什么?想到的第一个选项是:
1) 每个技能都扩展了技能等级并且 覆盖特定功能:
不确定这在 Django 中如何工作。似乎每个技能都有一个数据库表会有点矫枉过正。子类可以是抽象的,而技能类有一个条目吗?听起来不对。使用代理类怎么样?
还有哪些其他选项。我想避免使用纯 Django 方法的脚本方法。
最佳答案
或许您可以考虑将技能与其相关效果分开。更有可能的是,技能最终会产生一种或多种与之相关的效果,并且这种效果可能会被多种技能使用。
例如,效果可以是“对当前目标造成 N 霜冻伤害”。该效果可以被技能“暴风雪闪电”、“冰霜冲击”和“冰冷新星”使用。
模型.py
class Skill(models.Model):
name = models.CharField()
cost = models.PositiveIntegerField()
effects = models.ManyToManyField(Effect)
class Effect(models.Model):
description = models.CharField()
action = models.CharField()
# Each Django model has a ContentType. So you could store the contenttypes of
# the Player, Enemy, and Breakable model for example
objects_usable_on = models.ManyToManyField(ContentType)
def do_effect(self, **kwargs):
// self.action contains the python module to execute
// for example self.action = 'effects.spells.frost_damage'
// So when called it would look like this:
// Effect.do_effect(damage=50, target=target)
// 'damage=50' gets passed to actions.spells.frost_damage as
// a keyword argument
action = __import__(self.action)
action(**kwargs)
效果\spells.py
def frost_damage(**kwargs):
if 'damage' in kwargs:
target.life -= kwargs['damage']
if target.left <= 0:
# etc. etc.
关于python - 基于django的技能实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1836881/
Ai时代的产品经理 随着人工智能(AI)的飞速发展,AI已经从一个前沿技术概念逐步演变为驱动各行业创新的核心力量。从智能助手到自动驾驶,从个性化推荐系统到图像识别,AI正在以不可思议的速度改变着
我在我的 Azure 帐户上创建并部署了 Node.js 机器人。我还添加了 Cortana channel ,并启用了通过连接服务管理用户身份和请求用户个人资料数据(此处我有 User.Info.E
上个学期我介绍了 Java 中的面向对象编程,下学期我将学习 Java 计算机科学 2,它基本上学习用 Java 实现的各种算法和数据结构,例如链表、二叉树等。 ..我可以通过哪些方法来巩固在面向对象
我想在网站中添加水平滑动效果。这更像是网站中的“我们是谁”、“我们的技能”、“我们的服务”、“我们的投资组合”:http://markline.org/或者类似于 http://greenacrein
我是一名 C++ 开发人员(主要是 ATL/COM 的东西),直到 2001 年我和我们中的许多人一样转向 C#。从那时起我就没有做过太多 C++ 编程。 关于如何重振我的 C++ 技能,您有什么建议
即使代码必须由 dba 授权或创建,创建表和索引等对象也是必不可少的。有经验的开发人员应该注意哪些其他通常由 dbas 执行的领域? 最佳答案 开发人员有责任尽一切努力使他的代码a)正确并且b)快速。
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
食物语宫保鸡丁 获得方式 1、玩家通过限时食魂召唤活动中抽取的方式获得宫保鸡丁。 2、玩家通过主线关卡有几率掉落不同品质的宫保鸡丁。 3、玩家可以使用100个宫保鸡丁信物兑换宫保鸡丁食魂。
白狼属性 阴阳师白狼40级后,各项属性基本上就是一个输出式神的正常数值,攻击有3000,生命防御会比辅助类的式神低一些,速度暴击都是S。 白狼技能分析 【文射】:普通攻击,白狼射出注入了妖
我需要修改我发布的 Alexa 技能。我熟悉亚马逊在发布技能后自动创建的“开发中”技能版本。我不明白的是我如何迭代我的技能,特别是当我需要同时更改交互模型和链接的 Lambda 函数时? 例如,我可以
我想知道是否可以使用 papertrail 实现以下用例 gem ? 维基百科类型的应用程序,其 wiki 页面登录的用户可以更改/编辑,其中: 版主可以撤消特定更改: 我知道 papertrail
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭10 年前。 Improv
我正在创建 Alexa 技能,我已经编写了几个自定义和默认 intent ,并且它们工作正常。 现在我想写一个后备 intent ,其中我想获得询问/发送到 Alexa 技能的确切语句,有没有一种方法
我正在学习 js 并创建简单的 Alexa 技能。我想更好地理解模板代码,我正在研究 https://ask-sdk-for-nodejs.readthedocs.io 上的文档但我找不到这个问题的答
我在美国和德国成功发表了我的第一项技能。在扩展到更多区域时,我遇到了无法在 DE 中重现的帐户链接问题。 在触发认证之前,是否有在多个国家/地区进行有效测试的最佳实践。到目前为止,我读到你应该更改亚马
设置完所有内容后,我在 Alexa 开发人员中测试技能时遇到此错误 请求技能的响应有问题,然后我将该 json 响应放入 lambda 测试中,得到以下结果 { "errorType": "TypeE
我希望能够通过我的 Alexa 技能运行内置或第三方技能。例如,我希望能够说 “Alexa,开始午睡” 并让 Alexa 关闭所有灯,启动特定的 Tune-In 电台,并设置 30 分钟的闹钟。但是我
我已经在我的技能中添加了 APL 支持,但现在我不明白如何检查设备是否有显示屏并因此支持 APL。在 Node.js 中看起来很简单,但 Python (3.7) 一直让我发疯。我已经尝试过提到的方法
我正在做 Hyperskill 加密 - 解密项目,描述如下,我遇到了问题。例如,如果我尝试加密字母 = a key = 1,则效果很好,输出将是:b。但如果 letter = z, key = 1,
我正在制作一个返回音频但仅持续 x 秒的函数。 如果用户说 给我放一首歌 x 秒 我正在播放歌曲,但需要在 X 秒后取消播放。因此,我的计划是在运行音频之前启动计时器 x 秒。然后,一旦计时器到时,就
我是一名优秀的程序员,十分优秀!