




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 業(yè)主家裝工程合同范本
- 單位新員工試用期合同范本
- 中型汽車買賣合同范例
- 湖北2025年01月中國共產(chǎn)黨宣恩縣委員會組織部(湖北)2025年公開選調(diào)2名工作人員(第二次)筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 廚房廚師用工合同范本
- 鹵味材料轉(zhuǎn)讓合同范本
- 劇團演員聘用合同范本
- 廚房家電購銷合同范本
- 農(nóng)用肥采購合同范本
- 雙方自愿離婚合同范本
- 生物-湖北省鄂東新領(lǐng)先協(xié)作體2025屆高三下學(xué)期2月調(diào)考(二模)試題和答案
- 6 千人糕 教學(xué)設(shè)計-2023-2024學(xué)年語文二年級下冊統(tǒng)編版
- 社會問題(第三版)課件匯 向德平 第1-7章 社會問題概述 - 人口問題
- 深圳2025年廣東深圳市公辦中小學(xué)招聘事業(yè)單位工作人員178人筆試歷年參考題庫附帶答案詳解
- 7 鹿角和鹿腿 第二課時 公開課一等獎創(chuàng)新教學(xué)設(shè)計
- 2025屆高考化學(xué)二輪復(fù)習(xí):晶胞的相關(guān)性質(zhì)及計算(含解析)
- 2025年陜西延長石油集團礦業(yè)公司招聘筆試參考題庫含答案解析
- 英語-廣東省廣州市2024-2025學(xué)年高一上學(xué)期期末檢測卷(一)試題和答案
- 社會學(xué)概論課件
- 外科學(xué)總論--創(chuàng)傷ppt
- 舉世無雙的建筑師
評論
0/150
提交評論