gpt4 book ai didi

swift - 检查 Int 中所有值的最佳方法

转载 作者:行者123 更新时间:2023-11-28 10:19:26 27 4
gpt4 key购买 nike

我不知道是否有更好的方法,我的解决方案有效但似乎重复。

我有一个在 SpriteBuilder 中使用图标表示的生命指示器,这些被设置为不可见,然后在源代码中我实现了以下代码:

    lives = 3 // this is reduced or increased within game
if (lives == 5) {
lifeIcon1.visible = true
lifeIcon2.visible = true
lifeIcon3.visible = true
lifeIcon4.visible = true
lifeIcon5.visible = true
} else if (lives == 4) {
lifeIcon1.visible = true
lifeIcon2.visible = true
lifeIcon3.visible = true
lifeIcon4.visible = true
} else if (lives == 3) {
lifeIcon1.visible = true
lifeIcon2.visible = true
lifeIcon3.visible = true
} else if (lives == 2) {
lifeIcon1.visible = true
lifeIcon2.visible = true
} else if (lives == 1) {
lifeIcon1.visible = true
}

这工作正常,但似乎重复,如果我想在以后将生命增加到 5 个以上,则很难扩展。

有什么建议吗?

最佳答案

假设您想在减少生命值时将visible设置为false,您可以使用如下代码:

let lifeIcons = [lifeIcon1, lifeIcon2, lifeIcon3, lifeIcon4, lifeIcon5]

...

for (index, lifeIcon) in lifeIcons.enumerate() {
lifeIcon.visible = index < lives
}

或者如果你喜欢使用闭包:

lifeIcons.enumerate().forEach{$1.visible = $0 < lives}

(这里$1是迭代中的当前生命图标,$0是那个图标的索引)

这里的关键点是使用一个数组,而不是多个变量来跟踪您的生活图标。然后您可以遍历此数组,使用元素的索引以确定它们是哪个图标。 enumerate() 用于创建带有索引的元素对的惰性序列。

在这种情况下,我们可以将元素的索引与当前的生命数进行比较。因为索引是从 0 开始的,所以我们可以检查给定的索引是否小于当前的生命数,以确定它是否应该可见。

关于swift - 检查 Int 中所有值的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37033761/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com