X、Y 坐标的随机数生成器
Random Number Generator for X,Y Coordinates
我今天在编写代码时偶然发现了我的随机数生成器的问题。我正在尝试制作一个与水果忍者中的生成器非常相似的生成器,我也在 swift 中写作。这是我的代码片段:
var rand_x = arc4random()
var rand_y = arc4random()
node!.position = CGPoint(x: rand_x, y: rand_y)
我的问题是出现错误:
Cannot find an initializer for type 'CGPoint' that accepts an argument list of type '(x: UInt32, y: UInt32)'
有什么解决办法吗?谢谢!
您需要先将 rand_x
和 rand_y
转换为 CGFloat
s。
node!.position = CGPoint(x: CGFloat(rand_x), y: CGFloat(rand_y))
也看看arc4random_uniform
两件事:
- 您可能需要将头寸的最大值限制在某个值,例如屏幕width/height
- arc4random returns 一个 UInt32,CGPoint 的初始化器采用 CGFloats。您需要将 UInt32 转换为 CGFloats
这看起来像:
var rand_x = CGFloat(arc4random_uniform(maxXValue)) // maxXValue is a variable with your maximum possible x value
var rand_y = CGFloat(arc4random_uniform(maxYValue)) // maxYValue is a variable with your maximum possible y value
node!.position = CGPoint(x: rand_x, y: rand_y)
arc4random()
函数 return 类型是 UInt32
,但是 CGPoint
没有初始化器,其中 x
和 y
是 UInt32
.
您可以将 rand_x
和 rand_y
转换为初始化程序的兼容类型(例如 Int
或 CGFloat
),如下所示:
var rand_x = arc4random()
var rand_y = arc4random()
let point = CGPoint(x: Int(rand_x), y: Int(rand_y))
要么你可以对 CGPoint
进行扩展,引入 UInt32
初始值设定项:
extension CGPoint {
init(x: UInt32, y: UInt32) {
self.x = CGFloat(x)
self.y = CGFloat(y)
}
}
请注意 CGPoint
是一个包含两个成员 x
和 y
类型 CGFloat
的结构(这就是为什么我在 CGFloat
在我的初始化程序中)。
我今天在编写代码时偶然发现了我的随机数生成器的问题。我正在尝试制作一个与水果忍者中的生成器非常相似的生成器,我也在 swift 中写作。这是我的代码片段:
var rand_x = arc4random()
var rand_y = arc4random()
node!.position = CGPoint(x: rand_x, y: rand_y)
我的问题是出现错误:
Cannot find an initializer for type 'CGPoint' that accepts an argument list of type '(x: UInt32, y: UInt32)'
有什么解决办法吗?谢谢!
您需要先将 rand_x
和 rand_y
转换为 CGFloat
s。
node!.position = CGPoint(x: CGFloat(rand_x), y: CGFloat(rand_y))
也看看arc4random_uniform
两件事:
- 您可能需要将头寸的最大值限制在某个值,例如屏幕width/height
- arc4random returns 一个 UInt32,CGPoint 的初始化器采用 CGFloats。您需要将 UInt32 转换为 CGFloats
这看起来像:
var rand_x = CGFloat(arc4random_uniform(maxXValue)) // maxXValue is a variable with your maximum possible x value
var rand_y = CGFloat(arc4random_uniform(maxYValue)) // maxYValue is a variable with your maximum possible y value
node!.position = CGPoint(x: rand_x, y: rand_y)
arc4random()
函数 return 类型是 UInt32
,但是 CGPoint
没有初始化器,其中 x
和 y
是 UInt32
.
您可以将 rand_x
和 rand_y
转换为初始化程序的兼容类型(例如 Int
或 CGFloat
),如下所示:
var rand_x = arc4random()
var rand_y = arc4random()
let point = CGPoint(x: Int(rand_x), y: Int(rand_y))
要么你可以对 CGPoint
进行扩展,引入 UInt32
初始值设定项:
extension CGPoint {
init(x: UInt32, y: UInt32) {
self.x = CGFloat(x)
self.y = CGFloat(y)
}
}
请注意 CGPoint
是一个包含两个成员 x
和 y
类型 CGFloat
的结构(这就是为什么我在 CGFloat
在我的初始化程序中)。