我想用C#制作自己的Snake游戏。我已经开始了几次(比如2或3次),但是介于两者之间的间隔太大,所以看起来更容易编写新代码然后尝试理解现有代码(我知道,因此存在评论,但有时候我是编码的方式,完全忘记评论。)所以现在我想做最后的尝试。我对几乎所有的东西都有一些想法,但我不知道如何弄清楚我蛇的最后一个图片框是什么!一般来说,蛇身体由许多PictureBoxes组成,每当它吃掉食物时,最后会添加一个PictureBox。
为了让蛇在屏幕上移动,我想拍摄最后一个PictureBox(在蛇体的末端)并将它移到Snake的前面,这样它就变成了蛇头。身体将由代码生成,因此为了跟踪我可以使用列表的所有框。但我不知道我怎么能找出哪个盒子是最后一个盒子如果我发现了,我怎么能只将这个盒子移动到蛇的开头。
我很感激你能给出的每一个提示,
感谢您抽出宝贵时间阅读本文! :)
答案 0 :(得分:2)
我不知道如何找出最后一个方框,如果我发现了,我怎么才能将这个方框移到蛇的开头。
任何集合(List,Queue,Stack等)或数组都可用于跟踪对象的顺序。您的情况听起来像是最好使用先进先出的集合。队列就是按照这个原则运作的。我将使用字符串来说明它是如何工作的:
Queue<string> queue = new Queue<string>();
queue.Enqueue("one"); //add to queue
//queue is now ["one"]
queue.Enqueue("two"); //queue is now ["one", "two"]
queue.Enqueue("three"); //queue is now ["one", "two", "three"]
string firstString = queue.Dequeue(); //sets string to "one" and removes it from queue
//queue is now ["two", "three"]
queue.Enqueue("four"); //queue is now ["two", "three", "four"]
queue.Enqueue(queue.Dequeue()); //moves first element to the back of the queue
//queue is now ["three", "four", "two"]
Queue支持任何数据类型,您可以声明PictureBox队列以跟踪您的蛇。