Я извиняюсь за использование «лучше», но это серьезно то, что мне нужно.
Я пишу алгоритм генерации «рек», и мне нужно сделать кучу сравнений. Мне было интересно, есть ли лучший способ записать все сравнения, которые я должен сделать.
if Rain.value(atPosition: vector_float2(Float(columns),Float(rows))) == 1.0 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
if Rain.value(atPosition: vector_float2(Float(columns - 1),Float(rows + 1))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns - 1),Float(rows))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns - 1),Float(rows - 1))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns),Float(rows - 1))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns + 1),Float(rows - 1))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns + 1),Float(rows))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns + 1),Float(rows + 1))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
if Rain.value(atPosition: vector_float2(Float(columns),Float(rows + 1))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
}
}
По сути, «Дождь» — это Perlin HeightMap, которую я использую для определения количества осадков в моей tileMap. Эти операторы if проверяют 8 смежных плиток на полной карте (которые соответствуют критериям высокого уровня осадков) и определяют наименьшее значение, а затем устанавливают плитку воды в виде реки.
Этот метод невероятно неэффективен, так как я собираюсь продолжать писать операторы if в эти операторы if, чтобы после этого проверять каждую соседнюю плитку. Это будет огромный кусок кода. Есть ли лучший способ проверить каждую соседнюю плитку вокруг определенной плитки в tileMap, чтобы уменьшить размер моего кода?