【问题标题】:Swift - generate random Integer between 0.1 and 0.6Swift - 生成 0.1 到 0.6 之间的随机整数
【发布时间】:2015-08-13 17:58:42
【问题描述】:

我在 Swift 尝试生成介于 0.1 和 0.6 之间的随机数时遇到问题

我想在一个简单的游戏中引入微延迟,让它看起来 iPhone 在响应之前必须“思考”。

我找到了各种 sn-ps 来生成一个随机数(没有一个显示如何做十进制数)。

我找到了一个可以延迟的 sn-p(如果我硬编码它可以工作的数字)

我正在尝试使用此代码开始生成一个随机数,将其除以 10 将 6 变为 0.6 ..

// delay before playing
let lower : UInt32 = 1
let upper : UInt32 = 6
let delayTime = arc4random_uniform(upper - lower) + lower

delayTime = delayTime / 10
let delay = delayTime * Double(NSEC_PER_SEC)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))

dispatch_after(time, dispatch_get_main_queue()) {
    self.aiTurn()
}

Xcode 告诉我这一行

delayTime = delayTime / 10

不能分配给 'let' 值 'delayTime' - 所以显然我不能将 delayTime 的值除以 10

Xcode 还告诉我这一行

let delay = delayTime * Double(NSEC_PER_SEC)

二元运算符 * 不能应用于“UInt32”和“Double”类型的操作数

我知道我正在混合 Int、UInt32、Int64 和 Doubles - 但我不知道如何让自己摆脱这种情况 - 非常感谢任何帮助

谢谢

【问题讨论】:

  • 您不能分配给“let”,您需要将其设为“var”。在进行除法之前,请确保您的数字是双倍的。
  • 好的 - 很抱歉这个菜鸟问题 - 但是一个人如何“使”一个数字加倍?
  • 哦....(头撞桌子)..

标签: ios swift time int delay


【解决方案1】:

好的,这是工作代码 - 感谢 @mireke 的帮助

// delay before playing
    var lower : UInt32 = 1
    var upper : UInt32 = 6
    var delayTime = arc4random_uniform(upper - lower) + lower
    var delayTimer = Double(delayTime) / 10
    var delay = delayTimer * Double(NSEC_PER_SEC)
    var time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
    dispatch_after(time, dispatch_get_main_queue()) {
        self.aiTurn()
    }

【讨论】:

    猜你喜欢
    • 2013-04-23
    • 1970-01-01
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多