Java俄羅斯方塊.ppt_第1頁
Java俄羅斯方塊.ppt_第2頁
Java俄羅斯方塊.ppt_第3頁
Java俄羅斯方塊.ppt_第4頁
Java俄羅斯方塊.ppt_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、項目實戰(zhàn)俄羅斯方塊,主講:賈宗維,程序演示,從什么地方入手,涉及到幾個對象(類) 每個類有什么方法,游戲的顯示面板,GamePanel 類 void display();/ 顯示,方塊,Shape 類 void moveLeft(); / 左移 void moveRight(); / 右移 void moveDown();/ 下移 void rotate(); / 旋轉(zhuǎn)(變形) void drawMe(); / 顯示 自己能定時下移,private class ShapeDriver implements Runnable Override public void run() / TODO A

2、uto-generated method stub while(true) moveDown(); listener.shapeMoveDown(Shape.this); try Thread.sleep(1000); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace(); ,圖形工廠,ShapeFactory 類(圖形工廠) Shape getShape();/ 生產(chǎn)出不同形狀的圖形,Ground,Ground類 void accept(Shape);/ 接受圖形, 把圖形變成

3、障礙物 void drawMe(); / 顯示,類之間的關(guān)系,Shape 定時下落,Controller,處理按鍵事件,處理邏輯,GamePanel,顯示,ShapeFactory 圖形工廠,Ground,創(chuàng)建一個監(jiān)聽器接口,圖形定時下落, 每下落一次后都需要重新顯示 圖形移動和變形后,也需要重新顯示 它又不能直接操控GamePanel,怎么辦呢 ?,Controller,通過事件監(jiān)聽建立聯(lián)系,Shape 定時下落,GamePanel,ShapeListener,處理按鍵事件,觸發(fā)按鍵事件,重新顯示,事件源,事件源,下落后,觸發(fā)事件,shapeMovedDown,狀態(tài)改變 需要重新顯示,Sha

4、peListener,ShapeListener : void shapeMovedDown(Shape);,基本概念: 怎么表示圖形, 障礙物,可以把顯示區(qū)域想象成一個大大表格,一個格子可以代表一個障礙物,幾個連在一起的格子可以組成一個圖形。 怎么區(qū)分格子呢(怎么表示這個格子呢)? 用坐標(biāo),每個格子有它自己的坐標(biāo),左上角的那個格子的坐標(biāo)是 (0,0),基本概念: 怎么表示圖形, 障礙物,y 坐 標(biāo),x 坐標(biāo),重要概念: 怎么表示圖形的狀態(tài),可以用一個 4 4 的方陣表示,每一個圖形都可以有多種狀態(tài)。 如下所示,為什么用44 的方陣表示? 因為最寬的和最高的圖形就是4個寬或4個高(杠子),圖形

5、變形,變形就是顯示下一個狀態(tài),表示圖形的狀態(tài),用一個數(shù)組表示, 左圖用如下數(shù)組表示 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ,圖形的多種狀態(tài),一個圖形可以有多種狀態(tài),左邊的圖形可以這樣表示: 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 1, 0, 0, 0, 1, 0, 0, 1, 1,

6、0, 0, 0, 0, 0, 0 ,圖形的移動,圖形類里面要保存自己的位置信息, 用left 表示圖形到左邊界的距離,top 表示圖形到上邊界的距離 圖形移動就是改變left 和 top 的值,基本概念: 圖形絕對坐標(biāo)和相對坐標(biāo),y 坐 標(biāo),x 坐標(biāo),(0, 0),left,top,圖形的移動,y 坐 標(biāo),x 坐標(biāo),向上移動 top 減 1 向左移動 left 減 1 向下移動 top 加 1 向右移動 left 加 1,top,left,畫圖形,把組成圖形的格子畫出來: 畫方陣中標(biāo)志為1 的格子,標(biāo)志為0 的不畫。 圖形中的格子的在顯示區(qū)域中的位置為: x 坐標(biāo): left + 格子的x 相

7、對坐標(biāo) y 坐標(biāo): top + 格子的y 相對坐標(biāo) (相對坐標(biāo)是格子在方陣中的坐標(biāo)),格子的寬度和高度,像素坐標(biāo) (x, y),矩形(格子)的寬度 CELL_WIDTH,矩形(格子)的高度 CELL_HEIGHT,格子坐標(biāo)和像素坐標(biāo),這個點的像素坐標(biāo)為 x 坐標(biāo): left * 一個格子的寬度 y 坐標(biāo): top * 一個格子的高度,left 是這個格子距左邊界的距離 top 是這個格子距上邊界的距離,圖形的移動或變形,按鍵以后,圖形是否就一定能夠移動或變形? 不一定, 如果下一步的動作會使圖形超出邊界或有的點與障礙物重疊,則不允許圖形做這個動作。,圖形的移動或變形,y 坐 標(biāo),x 坐標(biāo),(0

8、, 0),現(xiàn)在這個狀態(tài), 圖形只可以向左移動。因為向右圖形就超出邊界,向下就會與障礙物重疊,如果下一步的動作是向下,則這個圖形應(yīng)該是變成障礙物,而不是繼續(xù)向下落。,Controller,通過事件監(jiān)聽建立聯(lián)系(完善后),Shape 定時下落,GamePanel,下落前, 詢問一下 是否可以下落,isShapeMoveDownable,(處理完事件后 需要重新顯示),ShapeListener,處理按鍵事件,處理 isShapeMoveDownable 事件(問Ground, 返回結(jié)果),觸發(fā)按鍵事件,重新顯示,事件源,事件源,事件源,下落后,觸發(fā)事件,shapeMoveDown,狀態(tài)改變 需要重

9、新顯示,怎么存儲和表示障礙物,用一個和 顯示區(qū)域的格子 相對應(yīng)的 二維數(shù)組 保存障礙物的位置信息 如果對應(yīng)的位置是障礙物, 則這個數(shù)組中相應(yīng)的元素就為1,不是則為0,怎么把圖形變成障礙物,把屬于圖形的格子對應(yīng)的位置都變成障礙物,判斷時要注意,是指圖形的身體超出邊界或與障礙物重疊,而不是表示這個圖形的 4 4 的方陣,因為方陣中的點并不都是圖形的身體,消除滿行,這一行沒有空白,則這一行就是滿行 滿的那行 上面所有的行 整體下移一行 就是消除這個滿行,判斷游戲是否結(jié)束,如果有的障礙物超出了上邊界(容器滿了),就是游戲結(jié)束 (如果圖形的初始位置為第一行, 則用這個邏輯: 第一行如果有障礙物, 就是游戲結(jié)束),完善后的Ground,Ground類 boolean isMoveable(Shape, action);/ 圖形下一步的動作是否會被允許(邊界,障礙物) void accept(Shape);

溫馨提示

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

評論

0/150

提交評論