我正在尝试使用Arduino(C ++)制作一个16x16 LED Snake游戏。 我需要为下一个食物块分配一个随机网格索引。 我所拥有的是蛇占据的指数列表(snakeSquares)。
所以,我的想法是我需要生成一个潜在的foodSquares列表。然后我可以从该列表中选择一个随机索引,并将其中的值用于我的下一个食物广场。
我对此有一些想法,但它们看起来很笨重,所以我一直在寻找一些反馈。我使用Arduino LinkedList.h库代替stdio.h(和random()代替rand()):
生成一个包含整数[0,255]的列表(foodSquares),以便索引对应列表中的值(我不知道快速执行此操作的方法,可能需要使用一个for循环)。
生成snakeSquares列表时,设置foodSquares [i] = -1。然后,遍历foodSquares并删除所有等于-1的元素。
然后,从[0,foodSquares.size() - 1]生成一个随机数randNum,并使下一个食物平方指数等于foodSquares [randNum]。
所以我想我的问题是,这种方法是否有效,是否有更好的方法呢?
感谢。
答案 0 :(得分:1)
不需要更多列表的潜在方法:
答案 1 :(得分:0)
我无法完全理解你的问题,因为其中一些点非常浪费处理器时间(即第1点和第2点)。但是,第一点可以很容易地在n
比例复杂度中解决如下:
for (uint8_t i = 0; i < 256; i++) {
// assuming there is a list of food_squares
food_squares[i] = i;
}
然后到第二点,你必须将每个food_square
设置为-1
,为了什么?无论如何。你可以实现这一点的方法就像VTT所说的那样,我将进一步描述它:
[0..255]
之间取一个随机数。 food_square
(food_square[random_number] = some_value
)中设置食物的位置。