Вы можете определить 2-мерный массив, чтобы указать, где монета должна быть, например,
var coinRow = [[Int]]()
coinRow.append([0,1,1,1,1,1,1,0]) // '0' means 'No coin here'
coinRow.append([1,1,1,1,1,1,1,1]) // '1' means 'put coin here'
coinRow.append([0,1,1,1,1,1,1,0])
Затем обработайте каждую монету «площадь» в качестве 3x8 сетки так, заданной отправного расположение в нижнем левом углу, как (0,0), сделайте следующее:
let coinStart = CGPoint(0,0)
coinPos = coinStart
for row in 0...2 { // Iterate over all rows
for column in 0...7 { // and all columns
if coinRow[row][column] == 1 { // Should there be a coin here?
putCoin(at: coinPos) // yes - draw one
}
coinPos.x += coin.width + coinHorizontalSeparation // next coin location
}
coinPos.y += coin.height + coinVerticalSeparation // Position to next row
coinPos.x = coinStart.x // Reset position to start of row
}
Вы Wouldn 't фактически начать с (0,0), поэтому установите coinStart по мере необходимости. Если группы монет отображаются в регулярном шаблоне, вы можете вычислить coinStart и сделать код, который генерирует блок монет, функцию, которую вы вызываете, передавая значение coinStart в качестве параметра.
Вы можете объяснить бит-маска? или сделать его проще? – cooldood
@YannaiHarel - Я изменил битмаску на другой массив для простоты. –
Вы @SteveIves: должен использовать двумерный массив 'Bool', а не' Int' –