java貪吃蛇演示稿_第1頁(yè)
java貪吃蛇演示稿_第2頁(yè)
java貪吃蛇演示稿_第3頁(yè)
java貪吃蛇演示稿_第4頁(yè)
java貪吃蛇演示稿_第5頁(yè)
已閱讀5頁(yè),還剩19頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、javajava貪吃蛇貪吃蛇 設(shè)計(jì) 涉及到的類 個(gè)各類所涉及到的方法GamePanel類 GamePanel 類 void display();/ 顯示Snake類 void move(); / 移動(dòng)(走一步) void changeDirection(); / 改變方向 void eatFood(); / 吃食物(身體變長(zhǎng)) boolean isEatBody();/ 蛇是否吃到了自己的身體 void drawMe(); / 顯示自己定時(shí)移動(dòng)Food類 boolean isSnakeEatFood(Snake);/ 判斷蛇是否吃到了食物 void drawMe();/ 顯示Ground類 b

2、oolean isSnakeEatRock(Snake);/ 蛇是否吃到石頭 void drawMe();/ 顯示各個(gè)類之間的關(guān)系Ground Food Snake定時(shí)移動(dòng) controller處理按鍵事件處理邏輯事件 Controller Game panel重新顯示Controller通過(guò)事件監(jiān)聽建立聯(lián)系Snake定時(shí)移動(dòng)MainFrame移動(dòng)后, 觸發(fā)事件snakeMovedSnakeListener處理按鍵事件狀態(tài)改變需要重新顯示觸發(fā)按鍵事件重新顯示事件源事件源SnakeListener void snakeMoved(Snake); 總的包與類 為了方便查看定義不同的包 game包括

3、GameOptionPanel,MainFrame類 Controller包括controller類 Entities包括food ground snake類 Listeners包括GameListener,SnakeListener接口 Util包括global類 View包括GamePanel類怎么表示蛇, 食物, 石頭 可以把顯示區(qū)域想象成一個(gè)大大表格, 其中的一個(gè)格子可以代表一個(gè)食物或一塊石頭, 幾個(gè)連在一起的格子就代表一條蛇 怎么區(qū)分格子呢(怎么表示這個(gè)格子呢)? 用坐標(biāo),每個(gè)格子有它自己的坐標(biāo),左上角的那個(gè)格子的坐標(biāo)是 (0,0)怎么表示蛇, 食物, 石頭食物(0, 0)(1, 0

4、)石頭(0, 1)石頭蛇頭(1, 2)蛇身(2, 2)蛇身(3, 2)石頭石頭石頭石頭y 坐標(biāo)x 坐標(biāo)0123456789012345蛇怎么移動(dòng) 蛇向前移動(dòng)一步,可以看作是蛇頭前面增加了一個(gè)節(jié)點(diǎn),蛇的尾巴上少了一個(gè)節(jié)點(diǎn) (即去尾,加頭)去掉去掉蛇頭蛇頭移動(dòng)前新頭新頭原來(lái)的第二節(jié)原來(lái)的蛇頭移動(dòng)后用什么數(shù)據(jù)結(jié)構(gòu)存放蛇的身體節(jié)點(diǎn) 分析: 要區(qū)分蛇頭和蛇尾巴,這就要求這個(gè)數(shù)據(jù)結(jié)構(gòu)是有序的,還要(經(jīng)常的)訪問(wèn)第一個(gè)和最后一個(gè)節(jié)點(diǎn), 所以 LinkedList 最合適,因?yàn)樗?getFirst() , getLast()方法 和 removeLast() 方法蛇的移動(dòng)方向蛇下一步移動(dòng)到哪兒, 是由方向來(lái)

5、控制的。 用什么表示方向呢? 在這里我們用 int 型的常量表示 根據(jù)原蛇頭和方向計(jì)算新蛇頭的坐標(biāo) (2, 1) (1, 2)蛇頭(2, 2) (3, 2) (2,3)y 坐標(biāo)x 坐標(biāo)0123401234向上移動(dòng)y 坐標(biāo)減 1向左移動(dòng)x 坐標(biāo)減 1向下移動(dòng)y 坐標(biāo)加 1向右移動(dòng)x 坐標(biāo)加 1 格子的寬度和高度像素坐標(biāo)(x, y)矩形(格子)的高度CELL_HEIGHT矩形(格子)的寬度CELL_WIDTH格子坐標(biāo)和像素坐標(biāo)格子坐標(biāo)(2,1)這個(gè)點(diǎn)的像素坐標(biāo)為x 坐標(biāo): 格子的寬度 * lefty 坐標(biāo): 格子的高度 * toptop= 1left= 2left 是這個(gè)格子距左邊界的距離top

6、是這個(gè)格子距上邊界的距離關(guān)于方向關(guān)于方向, 有兩個(gè)要注意地方有兩個(gè)要注意地方1. 相反方向相反方向2. 無(wú)效方向無(wú)效方向 什么是相反方向什么是相反方向和和上一次移動(dòng)的方向上一次移動(dòng)的方向相反的方向即為相反相反的方向即為相反方向方向如果輸入的是相反方向則應(yīng)該忽略如果輸入的是相反方向則應(yīng)該忽略( (判斷相反方向時(shí)應(yīng)該注意方向的有效性判斷相反方向時(shí)應(yīng)該注意方向的有效性) ) 在蛇的這一次移動(dòng)之后和下一次移動(dòng)之前這個(gè)時(shí)間間隔內(nèi)輸入了多個(gè)方向, 只有最后一個(gè)是有效方向, 其余的都為無(wú)效方向無(wú)效方向蛇蛇頭頭向向上上移移動(dòng)動(dòng)蛇移動(dòng)一次的時(shí)間間隔之內(nèi)無(wú)效方向相反方向無(wú)效方向蛇移動(dòng)后可能出現(xiàn)的三種情況 l1. 吃到食物l2. 吃到石頭l3. 吃到自己的身體(什么都沒吃到) 吃到了什么?比坐標(biāo)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論