gpt4 book ai didi

c# - 如何使用数学来创建更高效​​的代码?

转载 作者:行者123 更新时间:2023-11-30 22:57:20 26 4
gpt4 key购买 nike

我的数学很糟糕,但我正在努力改变它。我讨厌编写丑陋、低效的代码。我目前正在开发一个小型爱好游戏,我需要能够计算相邻的瓷砖。我决定不使用 x,y 坐标,而是每个图 block 都有一个唯一的 ID。我有以下功能代码,但是我正在努力寻找一种方法让它不那么难看:

this.AdjacentTiles = new int[8];
this.AdjacentTiles[0] = (id - 9) - 1;
this.AdjacentTiles[1] = (id - 9);
this.AdjacentTiles[2] = (id - 9) + 1;
this.AdjacentTiles[3] = (id - 1);
this.AdjacentTiles[4] = (id + 1);
this.AdjacentTiles[5] = (id + 9) - 1;
this.AdjacentTiles[6] = (id + 9);
this.AdjacentTiles[7] = (id + 9) + 1;

我知道可以在一个简洁的 for 循环中计算出所有这些,但我就是不知道如何计算。我不一定想要被喂食,因为就像我说的,我正在努力提高自己,我只需要一些指导。

非常感谢。

最佳答案

数学 相对简单,有类似(伪代码)的内容:

index = 0
for row = -1 to 1 inclusive: # prev/this/next row
for col = -1 to 1 inclusive: # prev/this/next col
if row != 0 or col != 0: # ignore current cell
array[index++] = id + row * 3 + col

这会将元素设置为您需要的。但是,您可能想要考虑极端情况,例如当 id 位于最左侧的列中时。在这种情况下,左边没有相邻的单元格,除非您创建了一个边缘为空的数组。

关于c# - 如何使用数学来创建更高效​​的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53734768/

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