swift - 有没有更简洁的方法来使用变量选择元组的一部分?
问题描述
我正在开发一个游戏,其中角色的几个参数由难度级别决定。例如,老板的大小将从简单到普通到困难增加。我知道我可以使用 if 语句和 switch 语句来做到这一点,这些语句嵌套或排列在彼此之上,有 1000 行代码(我可能最终会为 3 个难度级别的近 20 个老板提供十几个参数(等待添加更多...),但我想以更易于阅读、更简洁的方式使用元组来完成它。我认为这应该很容易,但我真的很难让它像错误一样工作表示元组没有成员难度级别:
let difficultyLevel = 0 //0 for easy, 1 for normal, 2 for hard
let bossOneScale = (CGFloat, CGFloat, CGFloat) = (0.3, 0.6, 0.9)
bossScale = bossOneScale.difficultyLevel
然后我在代码的主要部分中创建敌人时引用 bossScale,它会根据传递的难度值具有正确的大小。
我知道我可以通过以下方式轻松做到这一点:
switch bossNumber {
case 1:
if difficultyLevel = .easy {bossScale = 0.3)
else if difficultyLevel == .normal {bossScale = 0.6)
else if difficultyLevel == .hard {bossScale = 0.9)
case 2:...
我只是认为考虑到使用元组将获得多长时间会更容易阅读,但我不确定如何为元组下标以使用变量获得我想要的值......
谢谢!
解决方案
您可以使用元组和枚举进行一些外围操作以供参考,包括命名元组(因此您可以引用 as bossOneScale.easy
)和具有关联值的枚举(也就是将值存储在枚举中:)let damageMultiplier = .easy(0.3)
。但是这些似乎在这里没有帮助,因为您仍然必须切换才能访问所有这些。
如果您希望能够使用 int 变量访问值,为什么不使用好的 ol' 数组:
let difficultyLevel = 0 //0 for easy, 1 for normal, 2 for hard
let bossOneScale: [CGFloat] = [0.3, 0.6, 0.9]
bossScale = bossOneScale[difficultyLevel]
推荐阅读
- python - 使用 Peewee 库进行批量更新
- reportportal - ReportPortal“通知”发件人字段显示为灰色
- javascript - 使用 Ant Media Server 的 Rest Api 时,如何解决“Access-Control-Allow-Origin”问题?
- shell - 将批量 Msol 用户添加到 Msol 组
- python-3.x - 使用 Python 3 错误创建 virtualenv
- html - Reactjs - onClick 在单击视频时有效,但在单击视频控制器时无效?
- java - 使用 dropwizard 轮询 SQS
- hibernate - 休眠manyToOne FK不保存
- angular - 如何在从for循环中获取值时将值从html传递到打字稿
- ios - 如何获取表格视图单元格每一行中字符串文本的高度?