貪吃蛇遊戲Java實現 原

簡介:

    週五在天碼營看到一個java-snake的學習任務,地址https://course.tianmaying.com/java-snake。看了挺有意思,然後就花了幾個小時按照其描述給實現了,因很多地方都是僞碼,或者中文描述。所以 寫起來也挺有意思,會讓你自己去考慮細節代碼實現。

 

項目:

    相信大家好多人都玩過這個遊戲,在看到怎麼實現的邏輯,自己在之前還從未去考慮。寫完了小遊戲,把幾個遊戲的小細節給大家描述下。蛇的身體結構是個LinkedList<Node>,其中Node是棋盤Grid上面的點,非像素點;

    1,蛇的移動:首先根據移動方向和Snake的head生成一個新的Node,然後把node添加到頭部,最後把尾部給刪除。就完成了snake的一次移動;

    2,吃到食物:上一步生成的新頭部節點和當前棋盤上的一個food節點比較,如果是同一個節點。則再把剛纔幹掉的尾部給添加上去即可;

    3,邊界檢查:碰到邊界,也就是Direction方向上的0或者width-1。如果當前head是這個,next時候就失敗了。遊戲game over;還有一種是碰撞自身,其實拿到新生成的node遍歷對比Snake的body即可。也可以維護一個表格覆蓋情況,其實覺得還是對比body比較簡單些;

    4,分層設計:任務的分層還是很好的,Grid,Snake,Node,Direction的基礎類,其中Snake的移動,食物生成都是在Grid處理。GameView負責具體Grid裏面對象的打印。蛇就是遍歷body然後畫N個矩形;KeyListener就是監聽鍵盤事件,然後改Grid裏面的Direction即可。

    5,貪吃蛇詳細代碼地址見:https://github.com/iruimeng/gluttonous-snake,碰撞自身沒寫;可能有未測得到的bug,但是已經可以正常玩了。

    還有就是看到的輕拍磚。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章