我基本上试图做这个人想要做的事情,但是使用Swift:
Declaring a random amount of objects in c++
我对编程很新,对Swift来说很新,所以我对如何做一些事情有点模糊。基本上,我只是想宣布一个随机数量的敌人,我的玩家必须编织并在他击中其中一个时进行注册。我一直在寻找答案的每个地方,要么这是一个非常愚蠢的问题,所以愚蠢没有人需要把它放在互联网上,或者Sift太新了,因为它不是别人的问题。我猜这是一个愚蠢的问题,但不管我是怎么想出来的。
感谢。
答案 0 :(得分:0)
Swift数组是动态的,至少是用var array
声明的可变类型
因此,只要有足够的对象,就可以向对象添加对象。
例如:
var objects = [String]()
//let numberOfObjects = arc4random_uniform(10) // between 0 and 9
let numberOfObjects = arc4random_uniform(5) + 5 // between 5 and 9
for i in 0..<numberOfObjects {
let object = String()
objects.append(object)
}
println("we have \(countElements(objects)) objects")
答案 1 :(得分:0)
也许我太过密集而无法理解这个问题,但在我看来,简单地声明一个NSMutableArray会做你想做的事情:
let myArray:NSMutableArray = NSMutableArray()
您可以随意添加或删除对象。
在任何给定的循环中,您可以删除所有对象,然后使用随机数生成器添加一个随机数量的对象,如果这是您要执行的操作。
我对另一个答案的补充评论是,我会在生成随机数的语句中明确键入cast:
var randomNumber:Int = Int(arc4random_uniform(UInt32(5)))
答案 2 :(得分:0)
以下是使用简单Enemy类的示例:
class Enemy : NSObject {
override init() {
super.init()
}
}
let range = (5, 20)
let numEnemies = Int(arc4random_uniform(UInt32(range.1 - range.0) + 1) + UInt32(range.0))
var enemyArray = [Enemy]()
for i in 0..<numEnemies {
enemyArray.append(Enemy())
}
答案 3 :(得分:0)
您需要数组中随机数量的对象。假设:
class MyObject {}
并且你有一个对象数量的上限:
let theObjectLimit = 10
然后您只需创建一个随机数量的MyObject
新的不同实例:
let theObjects = (1...arc4random_uniform(theObjectLimit)).map {
_ -> MyObject in return MyObject ()
}
当学习像Swift这样具有第一类函数(也就是闭包)的语言时,你会希望尽可能使用像map
和reduce
这样的函数 - 尤其是迭代。