目前,我的蛇游戏只有一种食物在随机坐标下产卵,当蛇头碰到它时,它会消失并在另一个坐标下产卵。我想同时添加多个食物,被碰到的食物会消失并产卵到其他地方,但其他食物会留在原地。我正在为蛇和食物使用坐标的链接列表。这对蛇来说很好,因为它只需要添加到头部并移除最后一个坐标,但它对食物的效果不太好。食物颗粒分散在网格周围,所以蛇可以触摸到其中的任何一个,无论它们是头部、中间的某个地方还是尾部。如果它只是一种食物,它将是food=new Coordinate((,它在网格中为它分配了一个随机坐标,但在链表中有多个食物,我不知道如何识别哪些食物被触摸过,这样我就可以让那一个消失并重生。
您可以拥有2个lists
。一个给蛇,一个给食物。然后你可以搜索食物列表,找到与蛇头坐标相同的食物(如果有的话(。
然而,蛇的"正确"数据结构将是Queue
(尾巴将是第一个元素,头部将是最后一个元素(,而食物的数据结构则是Hashmap
。这样你就可以在O(1(复杂度时间内找到食物。也就是说,如果Food
点的数量会很多。如果没有,list
就可以正常工作。