2017-07-15 25 views
0


我想用C#做我自己的Snake遊戲。我已經開始了幾次(比如2或3次),但是之間的差距太大了,所以看起來更容易編寫新的代碼,然後嘗試理解現有的代碼(我知道,因此評論存在,但有時我進入編碼的方式,完全忘記評論)。
所以現在我想做最後的嘗試。我對幾乎所有的事情都有一些想法,但我不知道我怎麼能弄清楚蛇的最後一個畫板是什麼!一般來說,蛇身體由許多PictureBox組成,每次它吃最後添加一個PictureBox的食物。

爲了將蛇移動到屏幕上,我想將最後一個PictureBox(在蛇體的末端)移動到蛇的前面,以便它變成蛇頭。正文會由代碼生成,因此要跟蹤我可以使用列表的所有框。但我不知道如何才能找出哪個盒子是最後一個盒子,如果我發現,我怎麼才能將這個盒子移動到蛇的開頭。

我希望你能給的每一個提示,
感謝您花時間閱讀本文! :)如何移動最後的picturebox爲蛇遊戲

+0

如果你想用c#製作視頻遊戲,我會推薦使用類似Unity的東西。 –

+0

我想先嚐試一些沒有引擎的簡單遊戲,然後再嘗試類似Unity或Unreal的東西;) – JDeveloper

回答

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隊列來跟蹤你的蛇。

+0

好吧,我想我通常理解隊列的事情。但是,有沒有一種方法可以按索引獲取物品?例如,我可以抓住「一個」,用「one」這個對象做一些事情,而不是將它們出列並重新排隊,以便它從頭到尾移動?並且通過對象「one」做一些事情,我可以像queue [0] .color那樣直接使用它嗎?或者類似的東西? – JDeveloper

+0

@JDeveloper隊列只支持使用'Dequeue()'函數獲取第一個項目。如果你想訪問所有的項目,最好使用'List 蛇'來握住蛇。你可以用方括號表示'snake [0]'來訪問元素。如果你想將第一個元素移動到列表的後面,你可以執行'snake.Add(snake [0]); snake.RemoveAt(0);' – user3670011

+0

好吧,列表我有點熟悉......目前我沒有可以處理VS的PC來測試它,所以我必須問:我可以用代碼調用PictureBox方法像蛇[0]。 _PictureBoxMethod_? – JDeveloper