適合大學(xué)生做的java項(xiàng)目 Java編寫貪吃蛇游戲的大體思路是什么?
Java編寫貪吃蛇游戲的大體思路是什么?對(duì)于代碼和jar包,我有一個(gè)大概的想法:首先,我需要在畫布上畫一個(gè)塊,就是蛇頭,但是蛇會(huì)長大,所以我需要用一個(gè)東西來存儲(chǔ)蛇,可以用array,ArrayList
Java編寫貪吃蛇游戲的大體思路是什么?
對(duì)于代碼和jar包,我有一個(gè)大概的想法:首先,我需要在畫布上畫一個(gè)塊,就是蛇頭,但是蛇會(huì)長大,所以我需要用一個(gè)東西來存儲(chǔ)蛇,可以用array,ArrayList,LinkedList等等(我更喜歡LinkedList)。雖然我們說的是蛇,但它實(shí)際上是一個(gè)塊的X和Y坐標(biāo),蛇畫出來之后,蛇就可以移動(dòng)了。這需要一個(gè)線程和move()方法使其連續(xù)移動(dòng)。蛇移動(dòng)但沒有方向。在這個(gè)時(shí)候,我們需要一個(gè)方法,使它有方向。但我們應(yīng)該注意相反的方向。我們不能改變方向(也就是說,我們不能使用它,如果我們按下了)。蛇有方向,可以移動(dòng),但當(dāng)它到達(dá)邊緣,它不能使它出界和結(jié)束游戲,下一步是有食物。食物容易做。用一個(gè)隨機(jī)數(shù)來處理它。注意食物不能放在界外。當(dāng)有食物時(shí),蛇會(huì)吃掉它。這時(shí),有必要用一種方法來吃食物。吃完后,讓蛇長出一塊,食物就會(huì)重新出現(xiàn)。蛇會(huì)長大的,但是它能碰到自己的身體我們要做一個(gè)方法讓它相遇并結(jié)束游戲,所以做了最初步的想法。
接下來,有一些細(xì)節(jié)。
java編程貪吃蛇游戲的原理和用到了哪些內(nèi)容知識(shí),能講解一下嗎?
將蛇身體的每個(gè)塊視為一個(gè)對(duì)象(對(duì)象存儲(chǔ)塊的坐標(biāo)和相關(guān)信息),作為節(jié)點(diǎn)存儲(chǔ)在線性列表中,然后設(shè)置一個(gè)變量來標(biāo)記蛇的方向(可以通過按鍵進(jìn)行更改)。大多數(shù)人將每個(gè)節(jié)點(diǎn)與所指向的下一個(gè)節(jié)點(diǎn)相等,讓頭部節(jié)點(diǎn)改變位置,實(shí)現(xiàn)轉(zhuǎn)彎和移動(dòng)。該算法的復(fù)雜度太高(O(n))。實(shí)際上,只需要兩個(gè)步驟就可以插入頭節(jié)點(diǎn)和刪除尾節(jié)點(diǎn)。新插入的頭部節(jié)點(diǎn)的位置根據(jù)蛇的當(dāng)前方向確定。