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