freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于java的俄羅斯方塊的設計和實現(xiàn)畢業(yè)論文-在線瀏覽

2025-05-01 09:45本頁面
  

【正文】 對鼠標單擊、按鍵添加監(jiān)聽事件,編輯相應代碼來實現(xiàn)相應功能。圖 31 為游戲基本流程圖具體闡述游戲的基本流程。 2使用上、下、左、右鍵或 I、 K、 J、 L 鍵控制方塊的變形、下落、向左和向右移動。 4等級增加、方塊下落速度增加,按右側(cè)控制面板或“游戲”菜單內(nèi)的“提高等級”、“降低等級”按鈕,來手動改變游戲等級。 5按右側(cè)控制面板或“控制”菜單內(nèi)的“暫停”可以控制游戲暫停,然后按“繼續(xù)”可以控制游戲繼續(xù)上次游戲。 6當方塊占滿整個窗口,不能再有新方塊下落時,游戲會彈出“ Game Over”的對話框提示游戲結(jié)束。圖 32 為本游戲的系統(tǒng)功能模塊示意圖,如圖所示,本游戲主要有兩大模塊:游戲界面區(qū),游戲控制區(qū)。游戲控制區(qū)分更改顏色、開始、暫停、繼續(xù)、停止、重新開始、提高等級、降低等級、退出等功能模塊。 7 游 戲 界 面 區(qū)創(chuàng) 建 新 游 戲 界 面處 理 玩 家 操 作顯 示 玩 家 操 作 結(jié) 果 圖 33 界面模塊示意圖 圖 24 為游戲控制區(qū)設計示意圖,如圖所示,游戲控制區(qū)模塊分為開始、暫停、繼續(xù)、初始游戲級別設置、初始顏色設置、退出等功能模塊。從面向?qū)ο蟮挠^念出發(fā),本程序主要可分為以下幾個模塊: ? 游戲主界面顯示模塊 ? 方塊及數(shù)據(jù)顯示模塊 ? 方塊移動控制模塊 ? 游戲界面顏色控制模塊 ? 游戲進度、等級控制模塊 分析對象的技巧在于它的功能的擴展性及維護效率。以下該游戲中類的設計: ControlMainGame 類:繼承自 JFrame 類,作為游戲的主類,負責對游戲的主體全局進行控制,連接與指揮各個類的樞紐。 ChangeBlockColor 類:繼承自 JPanel 類, ChangeBlockColor 線程類動態(tài)改變畫布類的方格顏色,畫布類通過檢查方格顏色來體現(xiàn) ChangeBlockColor 方塊的移動情況與消去狀 況。 BlockOperation 類:繼承自 Thread 類,作為操控方塊的類,控制方塊的移動,下落以及變形。為玩家設計制作布局合理、視覺效果良好的界面的重要性就不言而喻了。 9 根據(jù)初步設計,可以確定客戶端上所要用到的 Swing 組件對象有 JFrame 對象、JPanel 對象, JLabel 對象、 JButton 對象、 JMenuBar 對象、 JMenu 對象、 JMenuItem 對象、 JTextField 對象、 JTextArea 對象、 JDialog 對象等,至少十個 Swing 組件對象。 圖 41 游戲主界面截圖 本游戲主界面設計的初始顏色搭配基于對比鮮明的原則,默認背景色為深綠色,左上角設置俄羅斯方塊圖標,得分初始值為 0,等級初始值為 1,最高分記錄初始值為0。 畫布、方塊顯示模塊 10 本游戲中將畫布底色默認設計成深綠色,在方塊下落過程中,根據(jù)顏色的變化識別下落的方塊。本游戲用繼承自JPanel 的 ChangeBlockColor 類控制背景畫布的顯示,用 rows 代表畫布的行數(shù), cols代表畫布的列數(shù),行數(shù)和列數(shù)決定著畫布擁有方格的數(shù)目。 private int rows, cols, score = 0, scoreForLevelUpdate = 0。 private int boxWidth, boxHeight。 = cols。 for (int i = 0。 i++) { for (int j = 0。 j++) { boxes[i][j] = new BlockPaint(false)。 = backColor。//前景色 } //覆蓋 JComponent類的函數(shù),畫組件 // g 圖形設備環(huán)境 11 public void paintComponent(Graphics g) { (g)。 for (int i = 0。 i++) { for (int j = 0。 j++) { (boxes[i][j].isColorBox() ? frontColor : backColor)。 } } } 預覽方塊模塊設計 方塊和數(shù)據(jù)信息是游戲中最基本的功能模塊。定義一個 4x4 方陣,共 16 個小格。 每得到一個新方塊,都是隨機從七種形態(tài)的方塊中選取一種。比如定義 int 型數(shù)組 STYLE 代表 28 中方塊類型, 7 行 4 列,每個元素代表其中一種方塊。剩下的問題就是應該怎么隨機到一對 STYLE 行列值。所以每次要得到新方塊時,只需調(diào)用一次這個方法,得到一個 01 的雙精度浮點數(shù),然后用該數(shù)乘以 7,之后強轉(zhuǎn)成整型,即 可得到 1— 7 的整數(shù),用來控制行。 由此可以組合出多種圖形定義然后用代碼實現(xiàn)下列功能: 1每次執(zhí)行首先為隨機數(shù)產(chǎn)生不同的初值。 12 S T Y L E S 的 下 標長 條 形T 形反 Z 形Z 形7 形反 7 形方 塊 形隨 機 數(shù) 圖 42 隨機產(chǎn)生方塊圖 2隨機選取一個圖形,圖 31 隨機產(chǎn)生方塊圖具體描述用生成的隨機數(shù)控制產(chǎn) 生的圖形。 繪制 4行 4 列的方塊預顯方格,隨機生成預顯示的方塊樣式。 public final static int[][] STYLES = {//分別對應對 7種模型的 28種狀態(tài) {0x0f00, 0x4444, 0x0f00, 0x4444}, // 長條型的四種狀態(tài) {0x04e0, 0x0464, 0x00e4, 0x04c4}, // 39。型的四種狀態(tài) {0x4620, 0x6c00, 0x4620, 0x6c00}, // 反 39。型的四種狀態(tài) {0x2640, 0xc600, 0x2640, 0xc600}, // 39。型的四種狀態(tài) {0x6220, 0x1700, 0x2230, 0x0740}, // 39。型的四種狀態(tài) {0x6440, 0x0e20, 0x44c0, 0x8e00}, // 反 39。型的四種狀態(tài) {0x0660, 0x0660, 0x0660, 0x0660}, // 方塊的四種狀態(tài) }。 ? 長條型的四種狀態(tài) 圖 43 長條型狀態(tài)截圖 ? 39。型的四種狀態(tài) 圖 44 T型狀態(tài)截圖 ? 反 39。型的四種狀態(tài) 圖 45 反 Z型狀態(tài)截圖 ? 39。型的四種狀態(tài) 圖 46 Z型狀態(tài)截圖 14 ? 39。型的四種狀態(tài) 圖 47 7型狀態(tài)截圖 ? 反 39。型的四種狀態(tài) 圖 48 反 7型狀態(tài)截圖 ? 方塊的四種狀態(tài) 圖 49 方塊狀態(tài)截圖 方塊移動、旋轉(zhuǎn)設計 方塊的翻轉(zhuǎn)與移動比較容易實現(xiàn),方 塊移動只需要改變方塊的橫坐標或縱坐標,然后重新繪制方塊即可。 本游戲方塊下落時,進行動態(tài)繪制,實現(xiàn) Cloneable 接口 , 以指示 () 方法可以合法地對該類實例進行按字段復制。當然,在線程中要判定方塊是處于 moving 狀態(tài)還是 pausing狀態(tài)。 } catch (InterruptedException ie) { ()。amp。 //moving是在等待的 100毫秒間, moving沒被改變 }} 當然,在游戲中還要判定方塊移動的邊界問題, 比如,一個方塊在它左邊 正好差一個格子的空間才能夠翻轉(zhuǎn),但是它的右邊恰好有一個格子的空間,這種情況,如果方塊不能夠翻轉(zhuǎn),就不方便用戶操作,如果能夠翻轉(zhuǎn),就會發(fā)生越界,將已經(jīng)存在的方塊擠占掉。 1方塊翻轉(zhuǎn)判定 在兩種情況可能發(fā)生越界,一種是方塊落下去固定住以后,第二種是周圍的空間不允許它進行翻轉(zhuǎn)。 對于第二種情況,在每次方 塊翻轉(zhuǎn)前,必須首先計算出方塊周圍的空間,如果空間允許則翻轉(zhuǎn)。 因為七種方塊是不規(guī)則的,每種方塊要求的翻轉(zhuǎn)空間都是不一樣的,甚至是在它的不同翻轉(zhuǎn)狀態(tài)下,所要求的翻轉(zhuǎn)空間也是不一樣的,首先想到的自然就是為每一種方塊,方塊的每一種狀態(tài)都寫一個判定條件,但是這樣做未免過于麻煩。對于田字形的方塊,只有能夠繼續(xù)下墜,就一定能夠 翻轉(zhuǎn),所以田字型的方塊只要沒有落下,就一直能夠翻轉(zhuǎn)。 16 所以,方塊翻轉(zhuǎn)的判定,要分三種情況,第一種情況是方塊落下去后不能翻轉(zhuǎn);第二種情況是對豎直狀態(tài)出現(xiàn)的長條形的方塊進行翻轉(zhuǎn)判定;第三種情況是對除長條 形和田字形之外的其它五種以橫向占兩個格子的狀態(tài)出現(xiàn)的方塊進行翻轉(zhuǎn)判定。 可以確定的是,無論方塊怎么翻轉(zhuǎn),都處在方塊數(shù)組中,也就是說方塊必定是在游戲地圖中某一 4x4 個格子的空間范圍內(nèi)。 假定方塊數(shù)組的橫縱坐標是 x 和 y,那么,這個位置就是,長條形的方塊翻轉(zhuǎn)后所處的那一行是游戲地圖的第 y行,所占的列是第 x 到 x+3 列,長條形和田字形以外的五種方塊翻轉(zhuǎn)后的所占的行數(shù)是游戲地圖的第 y和第 y+1行,所占的列是第 x到 x+2 列。 2翻轉(zhuǎn)越界糾正 只要方塊翻轉(zhuǎn)后所處的空間足夠,方塊就能夠翻轉(zhuǎn),但是,如 果方塊翻轉(zhuǎn)后所處的空間不足夠,而在它的另一邊卻有足夠的空間呢? 方塊在邊界處時,翻轉(zhuǎn)后不僅可能翻出地圖外,還可能發(fā)生數(shù)組越界,當然,只需要將地圖數(shù)組定義得大一些,就能夠避免數(shù)組越界錯誤,對于方塊越界,如果在它的另一邊有足夠空間,那么,就應該把方塊往另一個方向移動適當?shù)膯挝?,糾正方塊越界錯誤。 17 開 始接 收 到 翻 轉(zhuǎn) 信 息方 塊 是 否 落 下翻 轉(zhuǎn) 后 是 否 有足 夠 空 間翻 轉(zhuǎn) 后 是 否 越界翻 轉(zhuǎn) 越 界 糾 正結(jié) 束否是是不 能 翻 轉(zhuǎn)不 能 翻 轉(zhuǎn)直 接 翻 轉(zhuǎn)是否否 410 方塊翻轉(zhuǎn)處理流程圖 玩家操作鍵 盤實現(xiàn)方塊的移動、旋轉(zhuǎn),代碼引進 ControlKeyListener 類繼承KeyAdapter 類進行鍵盤監(jiān)聽功能的實現(xiàn)。此 類中的方法為空。擴展此類即可創(chuàng)建 KeyEvent 偵聽器并重寫所需事件的方法 ,即是 ControlKeyListener 類。當按下、釋放或鍵入某個鍵時,將調(diào)用該偵聽器對象中的相應方法,并將 KeyEvent 傳遞給相應的方法 。 BlockOperation blockope = ()。 break。 break。 break。 break。}}} 控制面板模塊 菜單欄模塊設計 菜單欄中有“游戲”、“背景”、“控制”、“幫助”四個菜單選項?!氨尘啊边x項又分“前景色”、“背景色”,下分若干種顏色?!皫椭边x項分“游戲幫助”、“關(guān)于”。 19 411 菜單欄“游戲”選項 412 菜單欄“背景”選項 413 菜單欄“控制”選項 414 菜單欄“幫助”選項 1“新游戲”的按鈕功能為實現(xiàn)游戲畫布的重新繪制,類似 reset 的功能。 //讓游戲 “復位 ”到初始狀態(tài) reset()。 } })。 “退出”按鈕控制游戲隨時退出,終止游戲。玩家可根據(jù)個人喜好,更改游戲窗口顏色,方 便,快捷。 5“幫助”按鈕中“游戲幫助”選項,點擊可彈出對話框顯示游戲幫助信息,點擊6“關(guān)于”按鈕顯示與游戲軟件本身相關(guān)信息,具體信息如圖所示: 控制面板按鈕設計 本游戲控制面板中包含得分統(tǒng)計、等級統(tǒng)計、最高分記錄統(tǒng)計等字段, 其中的 TextField 控件均由游戲本身統(tǒng)計給出,玩家不能私自編輯。 以下給出得分、等級更新字段的代碼: //當一行被游戲者疊滿后,將此行清除,并為游戲者加分 // row int, 要清除的行,是由 BlockPaintesGame類計算的 // synchronized設置同步 public synchronized void removeLine(int row) { // 繪制方塊 for (int i = row。 i) { for (int j = 0。 j++) boxes[i][j] = (BlockPaint) boxes[i 1][j].clone()。 // 等級更新 scoreForLevelUpdate += 。} 控制面板中按鈕的功能在 中已給出代碼,在此不再贅述。測試的方法的好壞會直接影響到軟件的好壞,進行軟件測試可以找出其中的錯誤、不足并加以改進,從而得到一個高效、可靠的系統(tǒng)。測試的時間最好找一些與設計系統(tǒng)無關(guān)的人員,或者分析人員。 在程序調(diào)試過程中一定要耐心仔細,一個細微的 錯誤將會導致整個功能不能實現(xiàn)導致浪費很多的時間去修改。例如,命令拼寫錯誤或傳遞給函數(shù)的參數(shù)不正確都將產(chǎn)生錯誤。 2邏輯錯誤 邏輯錯誤通常可能是潛在和難以檢測的。例如,當本應使用小于符號比較數(shù)值,但卻使用了大于符號時,那么將返回不正確的結(jié)果。 本游戲在開發(fā)過程中采用了多種有效措施進行測試以保證軟件質(zhì)
點擊復制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1