俄羅斯方塊Java編寫精髓.ppt
《俄羅斯方塊Java編寫精髓.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《俄羅斯方塊Java編寫精髓.ppt(26頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
項(xiàng)目評(píng)審 俄羅斯方塊 主講人 雷凱組員 沈唯唯 李有寧 田園田亮 尹亮 界面展示 程序運(yùn)行成功后 進(jìn)入游戲界面 如左圖所示 游戲暫停 按下鍵盤按鍵 P pause 游戲進(jìn)入停止?fàn)顟B(tài) 等待用戶按下 C Continue 鍵繼續(xù)游戲 退出游戲 按下鍵盤按鍵 Q Quit 彈出系統(tǒng)提示框 選擇是否要退出游戲 游戲結(jié)束 當(dāng)方框到達(dá)頂端時(shí) Wall 0 4 null 判定游戲結(jié)束 按下 S 可重新初始化界面開始游戲 具體實(shí)現(xiàn) Cell 格子類 Tetromino 四格方塊類 7個(gè)子類 T I O S Z J L 一個(gè)內(nèi)部類 State 存放四個(gè)方塊旋轉(zhuǎn)時(shí)的坐標(biāo)狀態(tài) Tetris 俄羅斯方塊類 extendsJpanel邏輯處理及方法的具體實(shí)現(xiàn) Cell 屬性 row col Image方法 drop 向下降落一個(gè)單位leftMove 向左移動(dòng)一個(gè)單位rightMove 向右移動(dòng)一個(gè)單位 Tetromino Cell cells newCell 4 State states 旋轉(zhuǎn)狀態(tài)Index 旋轉(zhuǎn)下標(biāo)ProtectedclassState 旋轉(zhuǎn)狀態(tài)類 內(nèi)部類 7個(gè)子類7種方塊rotateRight 向右旋轉(zhuǎn)rotateLeft 向左旋轉(zhuǎn)softDrop 下落moveLeft 左移moveRight 右移RandomOne 隨機(jī)生成一個(gè)四格方塊 Tetris paint Graphicsg 重寫繪圖方法paintWall Graphicsg 繪制墻action 通過調(diào)用該方法啟動(dòng)軟件Quit 退出pauseAction 暫停continueAction 繼續(xù)paintTetromino Graphicsg 繪制四格方塊paintNextOne Graphicsg 繪制下一個(gè)方塊paintScore Graphicsg 繪制成績(jī)paintLines Graphicsg 繪制已消除行數(shù)paintPause Graphicsg 繪制暫 繼續(xù)停提示 softDropAction 下落控制方法canDrop 判斷是否能夠繼續(xù)下落landToWall 著陸到墻destroyLines 銷毀的行數(shù)fullCells introw 判斷一行是否滿了deleteLine introw 刪除一行checkGameOver 檢查游戲結(jié)束狀態(tài)moveLeftAction 判斷左移是否出界moveRightAction 判斷右移是否出界rotateRightAction 判斷旋轉(zhuǎn)是否出界outOfBounds 檢查是否出界coincide 判斷是否重合hardDropAction 瞬間下降startAction 開始動(dòng)作流程 簡(jiǎn)單工廠模式實(shí)例化四格方塊T I O S Z J L 田亮 將7個(gè)子類封裝到類Tetromino 在構(gòu)造方法里初始化四格方塊的初始位置 row col 和相對(duì)位置 初始位置 cell 0 0 4 cell 1 0 3 cell 2 0 5 cell 3 1 3 以 L 型四格方塊為例 以編號(hào)為 0 的格子為旋轉(zhuǎn)軸 計(jì)算其他格子的相對(duì)坐標(biāo) states 0 0 0 0 1 0 1 1 1 states 1 0 0 1 0 1 0 1 1 states 2 0 0 0 1 0 1 1 1 states 3 0 0 1 0 1 0 1 1 states 0 states 1 states 2 states 3 旋轉(zhuǎn) 左移 右移 沈唯唯 privateintIndex 10000 表示旋轉(zhuǎn)狀態(tài)下標(biāo) 設(shè)置為10000防止旋轉(zhuǎn)次數(shù)過多而使游戲無法正常進(jìn)行 在Tetromino類中添加內(nèi)部類State屬性 row0 col0 row1 col1 row2 col2 row3 col3以上8個(gè)屬性表示4個(gè)方塊的相對(duì)坐標(biāo) 構(gòu)造方法 publicState introw0 旋轉(zhuǎn) rotateRight 下標(biāo)Index自增rotateLeft 下標(biāo)Index自減States states index states length 當(dāng)前狀態(tài)s為四格方塊旋轉(zhuǎn) index states length 次的狀態(tài) 以cells 0 為旋轉(zhuǎn)軸 根據(jù)初始化的相對(duì)坐標(biāo)cells 1 setRow cells 0 getRow s row1 cells 1 setCol cells 0 getCol s col1 cells 2 setRow cells 0 getRow s row2 cells 2 setCol cells 0 getCol s col2 cells 3 setRow cells 0 getRow s row3 cells 3 setCol cells 0 getCol s col3 左移 右移 moveLeftAction 左移先調(diào)用tetromino moveLeft 如果出界 或者重合再調(diào)用tetromino moveRight 在moveLeft方法中遍歷當(dāng)前對(duì)象cells中所有cell對(duì)象循環(huán)調(diào)用cell leftMove moveRightAction 右移的原理同上 下落 李有寧 softDropAction 一步一步下落if canDrop 為true 檢查當(dāng)前方塊是否能夠繼續(xù)下落 則調(diào)用tetromino softDrop 在softDrop 中遍歷cells對(duì)象調(diào)用cell drop hardDropAction 瞬間下降while canDrop 為true 檢查當(dāng)前方塊是否能夠繼續(xù)下落 則調(diào)用tetromino softDrop 在softDrop 中遍歷cells對(duì)象調(diào)用cell drop 否則調(diào)用方法 landToWall 著陸到墻destroyLines 銷毀行數(shù)checkGameOver 檢查游戲是否結(jié)束 landToWall 著陸到墻Cell cells tetromino cells 遍歷當(dāng)前四格方塊對(duì)象將每一個(gè)格子對(duì)象賦值給墻wall cell getRow cell getCol celldestroyLines 銷毀行數(shù)遍歷每行的格子 如果fullCells row 遍歷當(dāng)前行的各自是否是滿的 為true 調(diào)用deleteLine row 消除這行 lines 最后加成績(jī)this score scoreTable lines scoreTable 為得分表 判斷方法 暫停 繼續(xù) 退出 田園 checkGameOver 檢查游戲是否結(jié)束如果wall 0 4 null成立 調(diào)用timer cancle 關(guān)閉計(jì)時(shí)器 游戲結(jié)束 outOfBounds 出界檢查方法Cell cells tetromino cells 遍歷當(dāng)前四格方塊對(duì)象的每個(gè)格子如果 cell getCol COLS cell getRow ROWS 成立 方塊是否出了長(zhǎng)方形界面 返回true coincide 判斷重合方法Cell cells tetromino cells 遍歷當(dāng)前四格方塊對(duì)象的每個(gè)格子如果 cell getCol 0 將暫停標(biāo)記設(shè)置為true continueAction 繼續(xù)游戲pause false 設(shè)置暫停標(biāo)記為falsetimer newTimer 創(chuàng)建一個(gè)新的計(jì)時(shí)器對(duì)象timer schedule newTimerTask publicvoidrun softDropAction repaint inteval inteval schedule TimerTasktask longdelay longperiod 安排指定的任務(wù)從指定的延遲后開始進(jìn)行重復(fù)的固定延遲執(zhí)行Inteval為間隔時(shí)間800ms 繪圖方法 尹亮 paint Graphicsg 重寫繪圖方法g drawImage background 0 0 null 畫背景g translate 15 15 將圖形上下文的原點(diǎn)平移到當(dāng)前坐標(biāo)系中的點(diǎn) x y 繪制墻 四格方塊 下一個(gè)方塊 成績(jī) 已消除行數(shù) 暫停 繼續(xù)提示如果游戲結(jié)束標(biāo)記為true 繪制游戲結(jié)束的圖片paintWall Graphicsg 繪制墻將長(zhǎng)方形區(qū)域劃分成20行 10列 遍歷每個(gè)方塊對(duì)象 若cell不為空g drawImage cell getImage x 1 y 1 null 圖像大小x 1 y 1是圖形看起來順眼 paintTetromino Graphicsg 繪制四格方塊如果沒有正在下落的方塊就不繪制 否則遍歷四格方塊對(duì)象的四個(gè)小格子并繪制 paintNextOne Graphicsg 繪制下一個(gè)方塊如果沒有正在下落的方塊 就不繪制 否則遍歷隨機(jī)生成的下一個(gè)四格方塊的四個(gè)小格子并繪制 paintScore Graphicsg 繪制成績(jī)paintLines Graphicsg 繪制已消除行數(shù)paintPause Graphicsg 繪制暫停 繼續(xù)提示以上3個(gè)方法均是先設(shè)置字體格式 顏色 位置再繪制 程序啟動(dòng)方法 雷凱 通過靜態(tài)代碼塊將背景圖片 7種方塊圖片和游戲結(jié)束圖片加載進(jìn)來 這會(huì)節(jié)省很多時(shí)間 static Classcls Tetris class background ImageIO read cls getResource image 可以讀取圖片文件到內(nèi)存中的對(duì)象 該靜態(tài)代碼塊需捕捉異常 IOException action 啟動(dòng)軟件調(diào)用startAction 開始動(dòng)作流程 創(chuàng)建鍵盤按鍵監(jiān)聽對(duì)象newKeyAdapter keyPressed KeyEvente 如果有按鍵按下完成時(shí)候 pressed 就會(huì)執(zhí)行VK Q quit 退出VK S startAction 重新開始游戲VK C continueAction 繼續(xù)游戲VK P pauseAction 暫停游戲VK DOWN softDropAction 下落一格VK UP rotateRightAction 旋轉(zhuǎn)VK SPACE hardDropAction 下落到底部VK LEFTmoveLeftAction 左移一格VK RIGHT moveRightAction 右移一格 startAction 開始動(dòng)作流程pause false gameOver false score 0 lines 0 清空墻 遍歷所有行 填充數(shù)據(jù)為null 初始化對(duì)象tetromino nextOne生成隨機(jī)四格方塊 timer newTimer 創(chuàng)建一個(gè)新的計(jì)時(shí)器對(duì)象TimerTasktask newTimerTask publicvoidrun softDropAction repaint 創(chuàng)建一個(gè)新的計(jì)時(shí)器任務(wù) timer schedule task inteval inteval 安排指定的任務(wù)從指定的延遲后開始進(jìn)行重復(fù)的固定延遲執(zhí)行 謝謝觀賞- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 俄羅斯方塊 Java 編寫 精髓
鏈接地址:http://www.820124.com/p-9390078.html