gpt4 book ai didi

ios - 得分+10时随机颜色

转载 作者:搜寻专家 更新时间:2023-11-01 06:58:52 26 4
gpt4 key购买 nike

我的游戏中颜色很少:

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.

当您不知道如何做某事时,请尝试将其分解为更小的问题。当分数改变时,您想更改为随机颜色,这需要做几件小事:

  • 随机选择一种颜色
  • 设置颜色
  • 当分数增加一些 delta 时做一些事情

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

  • 算出数组中有多少种颜色
  • 在零和数组大小之间选择一个随机数
  • 得到那个数字对应的颜色

当你把它分解成像这样的非常小的步骤时,即使你必须在线搜索一些答案,也不难弄清楚每一行的写法。执行上述操作的代码可能如下所示:

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/

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