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