【发布时间】:2019-06-26 08:19:51
【问题描述】:
我尝试在有网格板和鱼和逆戟鲸等角色的地方制作项目。我创建了 Animal 父类和两个继承动物的子类。我想用 5% 的逆戟鲸和 35% 的鱼来填充板 (n * m)。如何用逆戟鲸和鱼填充网格?在这里,我尝试用数字填充板子。
class Animal {
}
class Fish: Animal{
}
class Orca:Animal{
}
class Board{
private var content: [[Int?]]
private static func setupForNewGame(width: Int,height: Int)->[[Int]]{
var matrix:[[Int]] = Array(repeating: Array(repeating: 0, count: width), count: height)
let cellCount = width * height
var penguinCount = Double(round(Double(cellCount) * 50.0 / 100.0))
var grampusCount = Double(round(Double(cellCount) * 5.0 / 100.0))
var arr:[Int] = Array(repeating: 0, count: cellCount)
for i in 0...cellCount - 1{
if (penguinCount > 0){
arr[i] = 1
penguinCount = penguinCount - 1
}else if (grampusCount > 0){
arr[i] = 2
grampusCount = grampusCount - 1
}else{
arr[i] = 0
}
}
let shuffledArr = arr.shuffled()
var counter = 0
for i in 0...width - 1{
for j in 0...height - 1{
matrix[i][j] = shuffledArr[counter]
counter = counter + 1
}
}
return matrix
}
}
【问题讨论】:
-
用自定义对象填充二维数组需要check this link
-
注意:
0...width - 1在 Swift 中最好写成0 ..< width。