ios - 分数+10时随机颜色

标签 ios swift

我的游戏中颜色很少:

class GameScene: SKScene {
let colors = [SKColor.green, SKColor.red, SKColor.blue, SKColor.magenta, SKColor.yellow, SKColor.brown]

我希望游戏中的东西每次得分 +10 时都会改变颜色(与上述之一不同)。

如何才能使其变得简单?

score += 10
thing.fillColor = .random

最佳答案

I want if my thing in the game change color (from one of above) every time when score +10.

当你不知道如何做某事时,尝试将其分解为更小的问题。您希望在分数变化时更改为随机颜色,这需要一些较小的事情:

  • 选择随机颜色
  • 设置颜色
  • 当分数增加一定增量时执行某些操作

所以让我们先看第一部分,然后进一步分解。要从数组中选择随机颜色,我们需要:

  • 找出数组中有多少种颜色
  • 选择一个介于 0 和数组大小之间的随机数
  • 获取该数字对应的颜色

当您将其分解为这样的非常小的步骤时,即使您必须在网上搜索一些答案,也不难弄清楚如何编写每一行。执行上述操作的代码可能如下所示:

let colors = [SKColor.green, SKColor.red, SKColor.blue, SKColor.magenta, SKColor.yellow, SKColor.brown]
let numberOfColors = colors.count
let colorIndex = Int.random(in:0 ..< numberOfColors)
let newColor = colors[colorIndex]

如果您使用旧版本的 Swift,则需要使用不同的函数来选择随机数,这将需要一些转换,但它仍然非常简单:

let colors = [SKColor.green, SKColor.red, SKColor.blue, SKColor.magenta, SKColor.yellow, SKColor.brown]
let numberOfColors = colors.count
let colorIndex = Int(arc4random_uniform(UInt32(numberOfColors)))
let newColor = colors[colorIndex]

当您感觉更舒服时,您可以组合其中一些步骤,这样您就不需要那么多中间变量,但小步骤将有助于使问题变得小且易于理解。

选择随机颜色后,您需要弄清楚如何使用它来设置背景颜色。 SpriteKit场景是一个SKScene,场景显示在SKView中。如果您查看 SKScene 的文档,您会发现场景具有对其显示的 View 的引用,并且该 View (因为它是 UIView 的子类) >) 有一个可以设置的 backgroundColor 属性。幸运的是,backgroundColor 需要一个 UIColor,而 SKColorUIColor 的别名。因此,假设您有一个名为 gameScene 的场景,并且您已经选择了上面的新颜色...

let view = gameScene.view
view.backgroundColor = newColor

或者只是:

gameScene.view.backgroundColor = newColor

你说你希望当分数增加 10 时发生这种颜色变化。首先要考虑的是当分数增加一定量时如何做任何事情?分数如何变化?希望您的代码中只有一部分负责更新分数。如果是这样,那么这将是插入代码的好地方,这些代码可以在分数更改时执行应发生的操作。如果分数总是一次改变一分,就像棒球一样,那么您可以保持非常简单,只需在分数为 10 的倍数(或您选择的任何增量)时更改背景颜色:

if game.score % 10 == 0 {
    game.changeColors()
}

但是,如果分数一次可以增加一分以上(就像足球中那样),那么这种简单的策略将不起作用,因为单个更改可能会直接跳过使颜色发生变化的条件。解决这个问题的一种方法是跟踪上次更改颜色时的分数:

if game.score - game.scoreAtLastColorChange >= 10 {
    game.changeColors()
    game.scoreAtLastColorChange = game.score
}

我希望这会有所帮助。只要继续将问题分解为更小的步骤即可。

关于ios - 分数+10时随机颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51758217/

相关文章:

iphone - 如何在 Xcode 4.0.2 或 Xcode 3.2.5 中构建 Xcode 4.2 + ios5.0 beta 应用程序?

ios - 确定 valueForKeyPath 异常的原因

ios - 创建新的xcode项目时找不到基于phonegap的项目模板

ios - 检测 SceneKit 中粒子和节点之间的碰撞

ios - Swift 3 - 从不同的 View Controller 过滤 TableView

ios - 没有这样的文件位置 - 将图像从 Swift 上传到 S3

swift - 如何在 CoreVideo 直播 session 中添加交互式 UIView(例如倒数计时器)

swift - 节省云套件记录到核心数据的最佳实践,获得偶发的运行时错误

ios - 如何创建一个按钮来更改 Swift 中的相机 View ?

ios - 应用程序因暂停动画和 NSInternalInconsistencyException 而崩溃