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

正文內(nèi)容

基于j2me的連連看游戲開(kāi)發(fā)(編輯修改稿)

2025-06-10 20:34 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 可以看出, A、 B 如果要通過(guò) 3 條直線相連,則必須有 C、 D 兩個(gè)拐點(diǎn),如果確定下 C、 D,問(wèn)題就基本上解決了。 由于矩陣的行列數(shù)量不是很多,我采用遍歷的方法掃描是否存在 C、 D 這樣的通路,如果存在,則進(jìn)一步判斷, A、 B 兩點(diǎn)是否存在到達(dá) CD 的通路 AC 和 BD,如果三次判斷都成立,則判斷可連。 消除這兩個(gè)單元格時(shí),只需要將兩個(gè)單元格的值置為 1 即可。 游戲類(lèi)的設(shè)計(jì) 整 個(gè)游戲共由 6 個(gè)類(lèi)組成,如圖 38 所示是游戲的類(lèi)結(jié)構(gòu)。游戲的 LLKMIDlet類(lèi)負(fù)責(zé)保持 display 對(duì)象,顯示游戲畫(huà)布并開(kāi)啟游戲線程: MainMenu 類(lèi)用來(lái)顯示游戲菜單; LLKCanvas 類(lèi)負(fù)責(zé)顯示游戲畫(huà)布; LLKMatrix 類(lèi)保持了一個(gè)矩陣數(shù)組,并且可以判斷兩個(gè)單元格是否可連; TimeTask 類(lèi)用來(lái)計(jì)時(shí),如果玩家超出指定時(shí)間沒(méi)有完成任務(wù),則游戲失?。?GameWinCanvas 類(lèi)用來(lái)顯示游戲勝利界面。 畢業(yè)設(shè)計(jì) 15 圖 38 類(lèi)結(jié)構(gòu) 主類(lèi)和菜單 MainMenu 類(lèi) 游戲的主類(lèi)為 LLKMIDlet 類(lèi),該類(lèi)比 較簡(jiǎn)單,主要功能為顯示游戲菜單,以及創(chuàng)建和顯示游戲畫(huà)布。 它控制著整個(gè)程序的運(yùn)行,并且可以通過(guò)相應(yīng)函數(shù)從程序描述文件中獲取相關(guān)的信息。該類(lèi)中擁有可以管理程序的創(chuàng)建、開(kāi)始、暫停(手機(jī)中很可能有正在運(yùn)行程序卻突然來(lái)電的情況,這時(shí)應(yīng)進(jìn)入暫停狀態(tài)。)、結(jié)束的函數(shù)。 矩陣 LLKMatrix 類(lèi) LLKMatrix 類(lèi)實(shí)現(xiàn)了游戲矩陣,包括矩陣的隨機(jī)生成、自動(dòng)重排和判斷是否消除等部分。矩陣用一個(gè)整形數(shù)組保持。 LLKMatrix 類(lèi)的核心算法為 judge(),該方法判斷兩個(gè)位置的元素是否符合“二折”規(guī)則,即是否能夠相 連并消除。 連連看的規(guī)則是連接兩個(gè)位置的連線出現(xiàn)的轉(zhuǎn)折不超過(guò)兩個(gè),因此可能出現(xiàn)多種不同的情況。根據(jù)不同的情況返回不同的得分,復(fù)雜程度越高,得分也越高,游戲中定義了下面 3 個(gè)分?jǐn)?shù): 10, 20, 30。 為了便于玩家識(shí)別,兩個(gè)單元格連接時(shí)會(huì)用線條顯示。這些線條分別用不同變量標(biāo)識(shí),連接線條和變量的對(duì)應(yīng)關(guān)系如圖顯示: 圖 39 連接線條和變量的對(duì)應(yīng)關(guān)系 為了增強(qiáng)游戲趣味性和難度,方塊會(huì)朝指定方向運(yùn)動(dòng),例如上升、下降、向中間靠攏、向四角發(fā)散。自動(dòng)的組合可能產(chǎn)生新的連接可能,也會(huì)讓原來(lái)可連的單元格相互錯(cuò)開(kāi),玩家在連接 某些單元格時(shí)也應(yīng)當(dāng)考慮周邊的變化情況。重排方式按照當(dāng)前關(guān)卡,包括不進(jìn)行重排,共有 12 種方式。 這有方塊向下運(yùn)動(dòng);方塊上方向上下方向下運(yùn)動(dòng);方塊左方往下,右方往上;方塊向左靠攏;方塊上方向左,下方向右;方塊左方向左,右方向右;方塊上方向上,下方向下;方塊上下向中間靠攏;方塊左右向中間靠攏等以上組合。 游戲畫(huà)布 LLKCanvas 類(lèi) LLKCanvas 類(lèi)用于顯示游戲畫(huà)布,并相應(yīng)鍵盤(pán)事件。 LLKCanvas 類(lèi)的構(gòu)造函數(shù) 畢業(yè)設(shè)計(jì) 16 用于初始化游戲參數(shù)和游戲資源,包括定時(shí)器、根據(jù)級(jí)別設(shè)置矩陣尺寸,以及創(chuàng)建游戲尺寸。 游 戲資源包括游戲中使用到的聲音文件和圖片文件。 計(jì)時(shí)功能用于游戲計(jì)時(shí),計(jì)時(shí)器初始值為 0,共用 360s;玩家按下暫停鍵,計(jì)時(shí)停止;當(dāng)玩家在 360s 時(shí)間內(nèi)沒(méi)有贏得游戲,則顯示游戲失敗畫(huà)面。 屏幕繪制包括游戲勝敗、游戲暫停和游戲進(jìn)行畫(huà)面。繪制游戲畫(huà)面包括繪制背景、矩陣、連線、提示邊框、提示信息等。 當(dāng)玩家按下 *鍵時(shí),暫停游戲,游戲當(dāng)前處于暫停狀態(tài),玩家按下 FIRE 鍵則重新激活游戲。當(dāng)玩家按下 鍵時(shí),如果還有提示道具,則顯示提示框;如果玩家按下9 鍵時(shí),則重新排列矩陣;玩家按下 7 鍵,則調(diào)整音量。 FIRE 是功能鍵,按下 是確定的意思。如果玩家在單元格上按下 FIRE,則選中此單元格,玩家利用方向鍵在其他的單元格上選中時(shí),則判斷兩個(gè)單元格是否能夠相消。 玩家每過(guò)一關(guān),道具都加 1 如果玩家通過(guò) 12 關(guān),則顯示勝利屏幕。 定時(shí)器和游戲勝利屏幕 TimeTask 類(lèi)用來(lái)實(shí)現(xiàn)一個(gè)可以調(diào)度的任務(wù)。 GameWinCanvas 類(lèi)用來(lái)繪制游戲勝利結(jié)束畫(huà)面。 當(dāng)玩家順利過(guò)關(guān)時(shí),將顯示游戲勝利屏幕。如果玩家通過(guò)初等或者中級(jí)難度的游戲?qū)⒗L制“過(guò)關(guān)了,恭喜!”圖片:如果玩家通過(guò)高級(jí)難度的游戲,將繪制“打通關(guān)了,真厲害?。 眻D片,在游戲上方,同時(shí)以 “走馬燈”的形式繪制“你贏了,真棒”圖片。 GameWinCanvas 類(lèi)主要是加載游戲圖片,是屬于 GameCanvas 畫(huà)布類(lèi)。該類(lèi)包括屏幕的線程,屏幕繪制及鍵盤(pán)處理,加載圖片包括難度等級(jí)圖片、恭喜圖片“過(guò)關(guān)了,恭喜!”、勝利圖片“你贏了,真棒!”。在這過(guò)程中,要設(shè)置圖片的縱坐標(biāo),圖片寬度,線程每次循環(huán)的時(shí)間等。在加載圖片時(shí),先要獲取圖片寬度再創(chuàng)建可變圖片,圖片背景要設(shè)置為黑色,繪制圖片。包括圖片及提示信息,處理現(xiàn)實(shí)過(guò)程中玩家出發(fā)的鍵盤(pán)事件。 畢業(yè)設(shè)計(jì) 17 4 游戲的實(shí)現(xiàn) 主類(lèi)與菜單類(lèi)的實(shí)現(xiàn) 在程序啟動(dòng) startApp()方法中,將顯示游戲菜單。 exit()方法用來(lái)退出游戲,當(dāng)用戶(hù)界面在游戲菜單中選擇退出游戲時(shí)調(diào)用。 startGame()方法根據(jù)菜單選擇的難度級(jí)別創(chuàng)建并顯示游戲畫(huà)布。 setCurrent() 函數(shù) 用來(lái) 顯示背景介紹窗口。當(dāng)玩家點(diǎn)擊 確定 后將調(diào)用(mainmenu)以顯示游戲菜單 MainMenu。 圖 41 LLKMIDlet 處理流程圖 MainMenu 類(lèi)用來(lái)顯示游戲菜單,該類(lèi)繼承了 的 GameCanvas 類(lèi)。菜單中的“游戲設(shè)置”、“游戲說(shuō)明”、“關(guān) 于游戲”都用圖片實(shí)現(xiàn),直接貼圖覆蓋,如圖所示。 如果玩家選擇“開(kāi)始游戲”,則調(diào)用主類(lèi)的 startGame()方法顯示游戲畫(huà)布。 畢業(yè)設(shè)計(jì) 18 圖 42 MainMenu 流程圖 菜單類(lèi)的構(gòu)造函數(shù)主要用來(lái)設(shè)置屏幕屬性和加載圖片資源。主意:本游戲調(diào)用了GameCanvas 類(lèi)的 setFullScreenMode()方法將屏幕設(shè)置成全屏。加載圖片資源后繪制框架圖片和菜單。 畢業(yè)設(shè)計(jì) 19 圖 43 MainMenu 類(lèi)函數(shù)構(gòu)造流程圖 當(dāng)顯示游戲畫(huà)布時(shí),自動(dòng)調(diào)用 paint()方法,該方法調(diào)用 flushGraphics()方法,該方法將緩沖內(nèi) 容刷新到屏幕上。 菜單的繪制有 drawMenu()方法實(shí)現(xiàn),該方法在指定位置繪制菜單圖片,并且按照當(dāng)前的選擇在選項(xiàng)上繪制紅色方框。當(dāng)前選擇的選項(xiàng)由 selected 變量標(biāo)識(shí),該變量在玩家發(fā)生鍵盤(pán)輸入時(shí)更改。 游戲有 3 個(gè)難度,分為“簡(jiǎn)單”、“中級(jí)”、“高等”。玩家進(jìn)入難度選擇菜單之后,可以使用方向鍵改變當(dāng)前難度,當(dāng)前難度用 level 變量標(biāo)識(shí),并在當(dāng)前難度的位置上繪制紅色方框。玩家按下確認(rèn)鍵 FIRE 確認(rèn) , 可以通過(guò)方向鍵改變當(dāng)前難度。 主菜單界面的繪制和難度設(shè)置流程基本相同:繪制背景圖片 ∕ 難度圖片 — 設(shè)置顏色為紅色 — 繪制紅色方框。 游戲的操作說(shuō)明和關(guān)于都是用圖片來(lái)實(shí)現(xiàn),當(dāng)玩家選擇“操作說(shuō)明”或者“關(guān)于游戲”選項(xiàng)時(shí),在指定位置繪制說(shuō)明或關(guān)于圖片。 drawHelp()和 drawAbout()方法分別用來(lái)顯示操作說(shuō)明和關(guān)于。 玩家通過(guò)方向鍵改變菜單的各個(gè)狀態(tài)。菜單中按照“菜單”、“游戲設(shè)置”、“關(guān)于游戲”、“操作說(shuō)明”分為四種狀態(tài),分別用靜態(tài)整型常量標(biāo)識(shí)。 畢業(yè)設(shè)計(jì) 20 當(dāng)處于“菜單”狀態(tài)時(shí),玩家通過(guò)方向鍵改變選項(xiàng),當(dāng)前選擇的選項(xiàng)用 selected標(biāo)識(shí),當(dāng)玩家按下確認(rèn)鍵后,則進(jìn)入相應(yīng)的游戲選項(xiàng)。 當(dāng)玩家選擇“難度設(shè)置”選項(xiàng)時(shí),則進(jìn)入難度選 擇菜單,玩家可以用方向鍵改變當(dāng)前難度,當(dāng)前難度用 level標(biāo)識(shí)。 當(dāng)玩家選擇“操作說(shuō)明”和“關(guān)于游戲”時(shí),則顯示游戲相關(guān)說(shuō)明,玩家按下任意鍵返回菜單。當(dāng)玩家選擇“退出游戲”時(shí),則退出游戲。 圖 44 鍵盤(pán)輸入流程圖 矩陣 LLKMatrix類(lèi)的實(shí)現(xiàn) LLKMatrix 類(lèi)的結(jié)構(gòu)函數(shù)根據(jù)指定的矩陣尺寸和圖案數(shù)量初始化圖形矩陣。由于連連看的圖案必須成對(duì)出現(xiàn),所以圖案總數(shù)必須是偶數(shù)。 initMatrix()方法先按順序填充矩陣數(shù)組,然后隨機(jī)交換任意兩個(gè)位置。 首先創(chuàng)建矩陣,接著按照單元格圖片索引生成的有 規(guī)律的矩陣,隨機(jī)變換矩陣,如果不存在可連單元格,則重新變換。 shuffleMatrix()方法隨機(jī)交換種子矩陣的元素,生成一個(gè)隨機(jī)矩陣。 clearTrace()方法用于對(duì)矩陣內(nèi)容重新整理,小于 1 的元素將被重置為 1。 find()方法將遍歷矩陣,然后判斷是否存在兩個(gè)可以相連的元素,判斷過(guò)程由 judge()方法完成。 LLKMatrix 類(lèi)維護(hù)了一個(gè)數(shù)組矩陣,因此也提供了設(shè)置和獲取矩陣內(nèi)容的外部接口,如果指定位置超出矩陣范圍則返回 1。 getRest()方法用來(lái)獲取當(dāng)前剩余圖案的數(shù) 畢業(yè)設(shè)計(jì) 21 量,如果圖案被消除,則將相應(yīng) 的矩陣內(nèi)容設(shè)置為 1。 連連看的核心算法是連線不超過(guò)兩個(gè)轉(zhuǎn)折,該方法的形參為兩個(gè)位置,分別為 x和 y,以及 xx 和 yy。如下圖所示。 圖 45 連線流程圖 由于游戲畫(huà)布對(duì)左上角的位置定義為( 1, 1),而矩陣內(nèi)容是以( 0,0)開(kāi)始的,所以應(yīng)先將游戲畫(huà)布傳遞過(guò)來(lái)的形參相應(yīng)減 1。如果兩個(gè)位置重合或者指定位置超出了矩陣范圍,則直接返回 0; 如果兩個(gè)位置的圖案不相同或者其中任何一個(gè)位置為空,也直接返回 0。 單元格的連接分為直接連接、出現(xiàn)一個(gè)轉(zhuǎn)折、兩橫一豎情況、連通路徑在左 ∕ 右側(cè)外部情況、兩豎一橫情況、連通路徑在上 ∕ 下方情況。 首先進(jìn)行檢測(cè)的是兩個(gè)可以直線相連的圖案,這是最直接最明顯的連接方式,包括縱向和橫向兩種。 畢業(yè)設(shè)計(jì) 22 圖 46 縱向相連 縱向直接相連時(shí),兩個(gè)位置的 x 坐標(biāo)相同,即 x=xx。從上方格向下方格讀取中間方格的圖案搜引,如果中間為空(搜引為 1)或者直接相鄰,那么判斷為可以使用直線相連。 橫向直線相連時(shí),兩個(gè)位置的 y 坐標(biāo)相同,即 y=yy,如圖所示。從左方格向右方格讀取中間方格的圖案搜引,如果中間為空( 索引 為 1)或者直接相鄰,那么判斷為可以使用直線相連。 圖 47 橫向相連 如果 xxx , yyy,那么 ( x, y)在( xx, yy)的左上方,首先判斷出項(xiàng)一個(gè)轉(zhuǎn)折的情況,可能有兩種情況, 如 48 圖 所示。 圖 48 可能出現(xiàn)的連接情況(一) 如果 xxx, yyy,那么 (x, y), (xx, yy)的左下方,判斷出現(xiàn)一個(gè)轉(zhuǎn)折的情況,同樣可能有兩種情況,如圖 49 所示。 畢業(yè)設(shè)計(jì) 23 圖 49 可能出現(xiàn)的連接情況(二) 下面檢測(cè)另外一種連接可能, 如 410 圖 所示雖然連接情況個(gè)不同,但是可以總結(jié)出它們都是兩橫一豎,并且所連接單元格都不是在矩陣的外邊緣。 對(duì)于這種可能,可以先檢測(cè)兩個(gè)單元格在矩陣?yán)锸欠翊嬖诳v向連通路徑,如果存在 ,繼續(xù)檢測(cè)橫向,并根據(jù)橫向路徑向路徑的方向,判斷是屬于圖中哪種具體情況。 圖 410 矩陣內(nèi)部存在縱向連通路徑的可能情況 在檢測(cè)過(guò)程中使用了兩個(gè)中間變量 y1 和 y2 來(lái)檢測(cè)縱向連通路徑,其中 y2 取 y和 yy 中的較大值, y1 取 y和 yy 中的較小值。 上面的檢測(cè),默認(rèn)兩個(gè)單元格位于矩陣內(nèi)部,并且縱向連通路徑在矩陣內(nèi)部,但還有一種情況,就是連通路徑在矩陣外,需要對(duì)這種情況獨(dú)立檢測(cè)。 圖 411 連通路徑在矩陣左外或右外側(cè)的情況 檢測(cè)原理是分別對(duì)兩個(gè)單元格向左方尋路,如果能夠到達(dá)矩陣外放(也就是說(shuō),該單元格目前 是該行最左側(cè)圖案),則判斷為存在如圖所示的情況,兩個(gè)單元格可連。 與此類(lèi)似,連通路徑在矩陣右外側(cè)的情況也需要進(jìn)行獨(dú)立檢測(cè),如上圖所示。 畢業(yè)設(shè)計(jì) 24 橫向連通路徑也可能在矩陣外面,如圖所示,是連通路徑在矩陣上方外面和下方外部的情況。 圖 412 連通路徑在矩陣上方或下方的情況 如果以上情況均不存在,則無(wú)法消除所選單元格,返回 0 分。 單元格向下墜落,如果存在空白,則用上方單元格填充該空白,運(yùn)動(dòng)軌跡類(lèi)似自由落體,單元格自由下落由 dropdown()方法實(shí)現(xiàn),該方法選取每一列從上往下檢測(cè),如果檢測(cè)到空白區(qū)域,則用該單元格 的上方單元格往下填充,而最上方的單元格內(nèi)容設(shè)置為空白。 方塊左方往下,右方往上。這種運(yùn)動(dòng)方式,將整個(gè)矩陣分為兩半,作半矩陣按照下落方式自動(dòng)重排,右半矩陣按照上升方式自動(dòng)重排, leftdownrightup()方法用來(lái)實(shí)現(xiàn)方塊左方往下,右方往上的運(yùn)動(dòng)左邊向下,右邊向上 運(yùn)動(dòng) , 該方法將矩陣分為兩半,然后分別使用 raiseui()和 dropdown()方法中的代碼。 單元格自動(dòng)向左靠攏。 goleft()方法實(shí)現(xiàn)了方塊向左靠攏的運(yùn)動(dòng),單元格向左自動(dòng)填充空白區(qū)域,該方法選取每一行從右向左檢測(cè),如果出現(xiàn)空格,則用該空格右 側(cè)的單元格填充,并且該行最右邊的單元格設(shè)置為空白。 矩陣上半部分的單元格向左靠攏,下半部分的單元格向右靠攏。 upleftdownright()方法實(shí)現(xiàn)了上方單元格自動(dòng)向左填充,下方單元格自動(dòng)向右填充。 方塊上方向上,下方向下。矩陣分為上下兩部分,上方單元格向上填充,下方單元格向下填充,
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1