Ios 得分时的随机颜色+;10
我的游戏中有几种颜色:Ios 得分时的随机颜色+;10,ios,swift,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 试试这个颜色功能试试这个可能对你有
class GameScene: SKScene {
let colors = [SKColor.green, SKColor.red, SKColor.blue, SKColor.magenta, SKColor.yellow, SKColor.brown]
我想如果我在游戏中的东西每次得分+10时都会改变颜色(从上面的一个开始)
怎样才能让事情变得简单呢
score += 10
thing.fillColor = .random
试试这个颜色功能试试这个可能对你有帮助 功能定义
func confirmColorChange(score:Int,oldScore:Int)->Bool{
if (score - oldScore) % 10 == 0{
return true
}
return false
}
调用方法,使用循环增量示例。
Swift 4.1及以下版本
var score = 2
var oldScore = score
let colors = [SKColor.green, SKColor.red, SKColor.blue, SKColor.magenta, SKColor.yellow, SKColor.brown]
//Sample Increased for Loop
for i in 0 ..< 100 {
score = score + i
if self.confirmColorChange(score: score, oldScore: oldScore){
let randomIndex = Int(arc4random_uniform(UInt32(colors.count)))
let radomColor = colors[randomIndex] //Set a color where you want
}
oldScore = score
}
var得分=2
var oldScore=分数
let colors=[SKColor.green,SKColor.red,SKColor.blue,SKColor.洋红,SKColor.yellow,SKColor.brown]
//循环的样本增加
对于0..<100中的i{
分数=分数+i
如果self.confirmColorChange(分数:分数,旧分数:旧分数){
设randomIndex=Int(arc4random_统一(UInt32(colors.count)))
让radomColor=colors[randomIndex]//在需要的地方设置颜色
}
oldScore=分数
}
调用方法,使用循环增量示例。
Swift 4.2及以上版本
var score = 2
var oldScore = score
let colors = [SKColor.green, SKColor.red, SKColor.blue, SKColor.magenta, SKColor.yellow, SKColor.brown]
//Sample Increased for Loop
for i in 0 ..< 100 {
score = score + i
if self.confirmColorChange(score: score, oldScore: oldScore){
let radomColor = colors.randomElement() //Set a color where you want
}
oldScore = score
}
var得分=2
var oldScore=分数
let colors=[SKColor.green,SKColor.red,SKColor.blue,SKColor.洋红,SKColor.yellow,SKColor.brown]
//循环的样本增加
对于0..<100中的i{
分数=分数+i
如果self.confirmColorChange(分数:分数,旧分数:旧分数){
让radomColor=colors.randomElement()//在需要的地方设置颜色
}
oldScore=分数
}
我想如果我在游戏中的东西每次得分+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]
当你感到更舒服时,你可以将其中的一些步骤结合起来,这样你就不需要那么多中间变量,但是小步骤将有助于使问题变得小而容易理解
一旦你选择了一种随机的颜色,你需要弄清楚如何使用它来设置背景色。SpriteKit场景是SKScene
,场景显示在SKView
中。如果查看SKScene
的文档,您会发现场景有一个对其显示视图的引用,并且视图(因为它是UIView
的子类)有一个backgroundColor
属性,您可以设置该属性。幸运的是,backgroundColor
需要一个UIColor
,而SKColor
是UIColor
的别名。那么,假设您有一个名为游戏场景
的场景,并且您已经选择了如上所述的新颜色
let view = gameScene.view
view.backgroundColor = newColor
或者只是:
gameScene.view.backgroundColor = newColor
你说你想在分数增加10的时候改变颜色。首先要考虑的是,当分数增加一定数量时,如何做任何事情?分数是如何变化的?希望代码中只有一部分负责更新分数。如果是这样的话,那将是一个插入代码的好地方,这些代码会在分数发生变化时执行应该发生的事情。如果分数总是一次改变一个点,就像在棒球比赛中一样,那么你可以保持非常简单,当分数是10的倍数(或你选择的任何增量)时,只需改变背景颜色即可:
但是,如果分数一次可以增加一分以上,就像足球一样,那么这种简单的策略就行不通了,因为一次改变可能会跳过导致颜色改变的条件。一种处理方法是跟踪上次更改颜色时的分数:
if game.score - game.scoreAtLastColorChange >= 10 {
game.changeColors()
game.scoreAtLastColorChange = game.score
}
我希望这有帮助。继续把问题分解成更小的步骤。填充颜色类型是什么?您遇到了什么问题?非常感谢您的教训!我以后一定会用的。
gameScene.view.backgroundColor = newColor
if game.score % 10 == 0 {
game.changeColors()
}
if game.score - game.scoreAtLastColorChange >= 10 {
game.changeColors()
game.scoreAtLastColorChange = game.score
}