gpt4 book ai didi

ios - Swift Ints 和一些 double 工作但不是所有 double

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

我想做的是提高调用 spawnEnemy() 方法的速率,使用带星号的数字作为 Int 效果很好,但我觉得它进行得太快了,所以我想到了使用 Doubles并使用小数点。但是,如果我进入从 spawnRate 中减去数量的十分之一self.spawnRate=spawnRate - 1.0(我使用除 0 以外的任何值)spawnEnemy() 只会在模拟器中调用一次,然后什么也不会发生。任何意见或建议都会很棒。谢谢!

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var scoreLabel: UILabel!

var points: Int = 0

var tickCount=0.0 // **

var spawnRate=15.0 // Spawn every 15 seconds to start with..... **

var spawnTimer:NSTimer!

override func viewDidLoad() {

super.viewDidLoad()

self.tickCount=self.spawnRate

self.spawnTimer=NSTimer.scheduledTimerWithTimeInterval(0.1, target: self, selector: Selector("tick"), userInfo: nil, repeats: true)

}

func tick() {
if (--tickCount == 0) { // **
self.spawnEnemy()
self.spawnRate=spawnRate - 0.5 // Change this to determine how quickly the spawn rate increases..... **
self.tickCount=self.spawnRate
}
}
func randomPoint() -> CGPoint {
let randomPoint: CGPoint = CGPoint(x:CGFloat(arc4random()%320),y:CGFloat(568-arc4random()%390))
return randomPoint
}

func randomColor() -> UIColor {
let red = CGFloat(drand48())
let green = CGFloat(drand48())
let blue = CGFloat(drand48())
return UIColor(red: red, green: green, blue: blue, alpha: 1.0)
}

func spawnEnemy() {
let enemy: UIButton = UIButton(frame: CGRect(x: 160, y: 160, width: 100, height: 100))
enemy.backgroundColor = randomColor()
enemy.center = randomPoint()
enemy.addTarget(self, action: Selector("buttonPushed:"), forControlEvents: UIControlEvents.TouchUpInside)
self.view.addSubview(enemy)
}
func buttonPushed(sender : UIButton) {
if sender.frame.height < 50 || sender.frame.width < 50 {
sender.frame = CGRectMake(sender.frame.origin.x, sender.frame.origin.y, 50, 50)
sender.backgroundColor = randomColor()
sender.center = randomPoint()
return
}
while sender.backgroundColor != UIColor.blackColor() {
points = points + 1
scoreLabel.textAlignment = .Center
scoreLabel.text = "\(points)"
scoreLabel.backgroundColor = UIColor.blackColor()
sender.backgroundColor = UIColor.blackColor()
}
}
}

最佳答案

我认为正在发生的事情是您正在尝试使用相等运算符测试 double 。问题是总是有一点 complexity in how doubles are stored这使得很难将它们与平等进行比较。相反,你需要做这样的事情:

if (--tickCount <= 0) {

这样你就可以肯定地捕捉到它变为负值,否则它可以直接超过 0 并继续倒计时。

关于ios - Swift Ints 和一些 double 工作但不是所有 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35677907/

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