gpt4 book ai didi

swift - 更好的方式来写这个比较

转载 作者:搜寻专家 更新时间:2023-11-01 07:05:28 25 4
gpt4 key购买 nike

我为使用“更好”表示歉意,但这正是我真正需要的。

我正在编写一个“河流”生成算法,我需要进行大量比较。我想知道是否有更好的方法来编写我必须进行的所有比较。

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)
}
}

基本上,“Rain”是一个 perlin HeightMap,我用它来确定我的 tileMap 中的降雨量。这些 if 语句正在检查 fullMap 中的 8 个相邻图 block (满足高降雨量标准)并确定最低值,然后以河流的形式设置水图 block 。

这种方法非常低效,因为我将继续在这些 if 语句中写入 if 语句,以检查之后的每个相邻图 block 。这将是一大堆代码。有没有更好的方法来检查 tileMap 中特定图 block 周围的每个相邻图 block 以减少我的代码大小?

最佳答案

由于您正在查看数字 ±1,因此您可以使用两个范围循环:

outerLoop:
for dc in -1...1 {
for dr in -1...1 {
if dr == 0 && dc == 0 {
continue
}
if Rain.value(atPosition: vector_float2(Float(columns+dc),Float(rows+dr))) == 0.9 {
fullMap.setTileGroup(tileDef4, forColumn: columns, row: rows)
break outerLoop
}
}
}

关于swift - 更好的方式来写这个比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48324976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com