一:整個項目工程目錄預覽如下,
1,ui包下爲遊戲界面實現類,爲View層類對象
2,service包下爲核心控制實現類,爲Control層類對象。control包下爲遊戲配置類以及玩家控制類
3,dto包爲遊戲數據實現類。GameDto.class包含Snake(蛇)對象和Food(食物)以及grade、score、map等數據對象
二:結構分析
- 界面層
- 抽象基類UiBase.class包含:protected void drawLine和protected void drawWindow兩個方法,分別用來繪製遊戲區橫線豎線和區域。
- UiGame.class繼承UiBase.class並實現遊戲區域繪製和橫豎線的繪製以及snake的繪製。
- UiScore.class繼承UiBase.class並實現控制區域繪製和分數、等級繪製。
- JPanelGame.class創建UiGame.class和UiScore.class對象並 安裝鼠標和鍵盤監聽事件。
- 控制層
- 核心服務類Coreservice.class:持有數據對象GameDto.class,並根據玩家控制部分和其他線程 部分來修改遊戲數據對象GameDto
- private GameDto gameDto 持有遊戲數據對象,下面所有對數據操作函數都是通過this對象所持有的GameDto對象來進行的
- private void initSnakeHead()將snake鏈表體放入到二維數組map中去
- public void initFood()啓動食物小方塊產生線程
- public void move()移動snake的方法,玩家控制部分的響應函數
- public void eatFood()移動snake時,喫食物的方法
- public boolean isGameOver()遊戲結束判斷之一,snake碰到自己的身體
- 數據層
- 數據層GameDto.class對象持有
- private boolean[][] gameMap;遊戲區域的二維數組
- public static int score = 0;控制區域需要顯示的分數
- public static int level = 0;控制區域需要顯示的等級
- private Snake snake;鏈表體的snake對象
- private boolean start;多線程監控的開始、暫停標誌位
- private Food foodEntity;食物Food對象