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

正文內(nèi)容

windowsphone游戲開發(fā)畢業(yè)設計-資料下載頁

2024-11-24 08:58本頁面

【導讀】俄羅斯方塊是一個老幼皆宜的小游戲。它的核心是各種不同類型的方塊,方。塊由四塊正方形的色塊組成,然后存儲在一個數(shù)組的四個元素中。生不同七種類型的方塊,然后程序根據(jù)這七種方塊堆疊成各種不同的模型。據(jù)清除,并增加相應的積分。求分析、概要設計、詳細設計,整個開發(fā)過程貫穿軟件工程的知識體系。計實現(xiàn)了一個WindowsPhone上可運行的俄羅斯方塊游戲。掌握等知識,測試運行良好,實現(xiàn)了預期的功能。

  

【正文】 時候,首次出現(xiàn) 1 的那列的橫坐標為 0,而方塊數(shù)組的橫坐標肯定已經(jīng)小于 0 了。 假定我們以 x 記錄方塊數(shù)組的橫坐標,以 j 記錄方塊不 能移動時,方塊數(shù)組中首次出現(xiàn) 1 的那列,當方塊不能移動時, x+j 的值必定是等于 0 的。 同理,當方塊到達右邊界不能移動時,我們可以從方塊數(shù)組的右邊開始檢測,記錄下首先出現(xiàn) 1 的那列的值,這個時候, x+j 一定是等于 14 的。 當方塊落下后,方塊同樣不能再移動。這又分為兩種情況,一種是要墜下的地方還沒有方塊,這個時候,只要可以記錄下方塊數(shù)組中最后出現(xiàn) 1 的那一行,假定那是第 i 行,這樣,只要 y+i 等于 24,就可以認定方塊已經(jīng)落到游戲地圖的底部,不能再繼續(xù)下落。 [6] 當要方塊下邊或者左右有方塊時,可以確定下邊有方塊的那一格 在游戲地圖中的縱坐標是橫坐標或縱坐標是 x+j+1 或者 y+i+1,假定那一格的縱坐標坐標或者橫坐標為 y 或 x,那么游戲地圖數(shù)組中 [x+j+1][y]或者 [x][y+i+1]這個元素的值必定是 2。 綜合以上幾種情況,我們可以列出方塊移動條件判定表,如表 51 所示: 表 51 方塊移動條件判定表 1 2 3 4 5 6 7 8 是否有阻隔 T T T T T T T F 條 x+j=0||gamearea[y+i][x+j+1]=2 T F T T T F T 件 x+j=14||gamearea[y+i][x+j1]=2 F T F T F T T y+i=24||gamearea[y+i+1][x+j]=2 F F F F T T T 動 左移動 √ √ √ 作 右移動 √ √ √ √ 下移動 √ √ √ √ √ 方塊的翻轉(zhuǎn) 大多數(shù)的俄羅斯方塊游戲的翻轉(zhuǎn)判定條件都比較簡單,即方塊處在邊界處時就不能再翻轉(zhuǎn),因為這種時候翻轉(zhuǎn)會發(fā)生數(shù)組越界錯誤。試想一下,當方塊移動到邊界處,甚至還沒有到邊界處時,就不能再翻 轉(zhuǎn)了,無疑會給操作帶來大大地不方便性。 方塊翻轉(zhuǎn)的另一個問題就是,當方塊下落過程中,左右兩邊都有方塊,周圍的空間不能再容許它翻轉(zhuǎn),往往很多游戲沒有注意到這一點,這就導致,方塊翻轉(zhuǎn)之后把原來存在的方塊給擠掉了,這個問題本質(zhì)上也是翻轉(zhuǎn)越界。 為了解決以上問題,游戲設計中應該增加一個對于方塊能否翻轉(zhuǎn)的判定以及翻轉(zhuǎn)越界糾正功能。 ? 方塊翻轉(zhuǎn)判定 長春理工大學本科畢業(yè)設計 21 如上所述,在兩種情況下一種是方塊落下去固定住以后,第二種是周圍的空間不允許它進行翻轉(zhuǎn)。 第一種情況好辦,只要參考方塊落下去后不能夠再移動的判定即可。 對于第二種情況,在每次方 塊翻轉(zhuǎn)前,必須首先計算出方塊周圍的空間,如果空間允許則翻轉(zhuǎn),否則,不能翻轉(zhuǎn)。 這里面又出現(xiàn)一個棘手的問題,因為七種方塊是不規(guī)則的,每種方塊要求的翻轉(zhuǎn)空間都是不一樣的,甚至是在它的不同翻轉(zhuǎn)狀態(tài)下,所要求的翻轉(zhuǎn)空間也是不一樣的,首先想到的自然就是為每一種方塊,方塊的每一種狀態(tài)都寫一個判定條件,然后根據(jù)當前的 blocktype 和 turnstate 值,選擇哪種判定條件進行判定,但是這樣做未免過于麻煩。 根據(jù)觀察,不難發(fā)現(xiàn),七種形態(tài)的方塊,長條形的方塊如果以橫條的形態(tài)下落,則只有能夠下落,就能翻轉(zhuǎn),如果以豎條的形態(tài)下 落,那么它翻轉(zhuǎn)后所處的位置必須要有 4x1 個格子的空間才能夠翻轉(zhuǎn);對于田字形的方塊,只有能夠繼續(xù)下墜,就一定能夠翻轉(zhuǎn),所以田 字 型的方塊只要沒有落下,就一直能夠翻轉(zhuǎn);而其它五種形態(tài)的方塊,又有一個共同點,就是它們都有兩種翻轉(zhuǎn)狀態(tài)橫向占三個格子的空間,豎直方向占兩個空間,另外兩種翻轉(zhuǎn)狀態(tài)橫向占兩個格子的空間,豎直方向占三個格子空間,如果他們是以橫向占三個格子的狀態(tài)下落,那么只要能下落,就一定能夠翻轉(zhuǎn),如果是以橫向兩個格子的狀態(tài)下落,那么在翻轉(zhuǎn)后,周圍必須要有 3x2 個格子的空間。 所以,方塊翻轉(zhuǎn)的判定,要分三種情況 。第一種情況是方塊落下去后不能翻轉(zhuǎn);第二種情況是對豎直狀態(tài)出現(xiàn)的長條形的方塊進行翻轉(zhuǎn)判定;第三種情況是對除長條形和田字形之外的其它五種以橫向占兩個格子的狀態(tài)出現(xiàn)的方塊進行翻轉(zhuǎn)判定。 何種情況下方塊能夠翻轉(zhuǎn)的問題解決了,接下來,我們就應該解決方塊翻轉(zhuǎn)后所處的位置的問題了,因為只有事先知道方塊翻轉(zhuǎn)后所處的位置,才能夠?qū)δ莻€位置的空間范圍進行判定,判定它是否能夠容納方塊。 可以確定的是,無論方塊怎么翻轉(zhuǎn),都處在方塊數(shù)組中,也就是說方塊必定是在游戲地圖中某一 4x4 個格子的空間范圍內(nèi)。 方塊數(shù)組在游戲地圖中的坐標是確 定的,不確定的是方塊翻轉(zhuǎn)后到底處在方塊數(shù)組的哪個位置,為了解決這個問題,我們可以限定方塊在方塊數(shù)組中的存儲原則是靠左、靠上,這樣,無論翻轉(zhuǎn)怎么翻轉(zhuǎn),方塊數(shù)組中第一行和第一列都是有方塊的,這樣也就確定了方塊在方塊數(shù)組中的位置,也就可以得知方塊翻轉(zhuǎn)后在游戲地圖中的位置了。 假定方塊數(shù)組的橫縱坐標是 x 和 y,那么,這個位置就是,長條形的方塊翻轉(zhuǎn)后所處的那一行是游戲地圖的第 y 行,所占的列是第 x 到 x+3 列,長條形和田 長春理工大學本科畢業(yè)設計 22 字形以外的五種方塊翻轉(zhuǎn)后的所占的行數(shù)是游戲地圖的第 y 和第 y+1 行,所占的列是第 x 到 x+2 列。 所以,如果 以上空間有空格子,方塊就能夠翻轉(zhuǎn)。 據(jù)此,我們可以列出方塊翻轉(zhuǎn)的條件判定表,如表 52 所示: 表 52 方塊翻轉(zhuǎn)條件判定表 1 2 3 4 5 6 7 8 落下 T F F F F F F F 田字形方塊 T 所 長條形方塊 1x4 形態(tài) T T 有 4x1 形態(tài) T 條 其它五種 2x3 形態(tài) T T 件 方塊 3x2 形態(tài) T 第 y行, x、 x+3 列空 T F 第 y、 y+1 行 x、 x+2列空 T F 所有 翻轉(zhuǎn) √ √ √ √ √ 動作 不能翻轉(zhuǎn) √ √ √ ? 翻轉(zhuǎn)越界糾正 由上述判定表可以看出,只要方塊翻轉(zhuǎn)后所處的空間足夠,方塊就能夠翻轉(zhuǎn),但是,如果方塊翻轉(zhuǎn)后所處的空間不足夠,而在它的另一邊卻有足夠的空間呢? 比如,一個方塊在它左邊正好差一個格子的空間才能夠翻轉(zhuǎn),但是它的右邊恰好有一個格子的空間,這種情況,如果方塊不能夠翻轉(zhuǎn),就不方便用戶操作,如果能夠翻轉(zhuǎn), 就會發(fā)生越界,將已經(jīng)存在的方塊擠占掉。要想實現(xiàn)翻轉(zhuǎn)又不發(fā)生越界,那么,就應該在方塊翻轉(zhuǎn)后把它往右邊移動一個格子,然后再繪制方塊,這樣,方塊就不會擠占掉其它已經(jīng)固定住的方塊了。 同樣,方塊在邊界處時,翻轉(zhuǎn)后不僅可能翻出地圖外,還可能發(fā)生數(shù)組越界,當然,只需要將地圖數(shù)組定義得大一些,就能夠避免數(shù)組越界錯誤,對于方塊越界,如果在它的另一邊有足夠空間,那么,就應該把方塊往另一個方向移動適當?shù)膯挝?,糾正方塊越界錯誤。 結(jié)合上述判定表,可以列出方塊翻轉(zhuǎn) 越界糾正判定表,如表 53 所示: 長春理工大學本科畢業(yè)設計 23 表 53 方塊翻轉(zhuǎn) 越界糾正判定表 落下 T F F F F F F F F F F 田字形方塊 T 長條形方塊 1x4 形態(tài) T T T T 所 4x1 形態(tài) T 有 其它五種 2x3 形態(tài) T T T T 條 方塊 3x2 形態(tài) 件 第 y行, x、 x+3 列空 T F F F 第 y、 y+1 行 x、 x+2列空 T F F F 另一邊有足夠空間 T F T F 翻轉(zhuǎn) √ √ √ √ √ 所有 不能翻轉(zhuǎn) √ √ √ √ 動作 翻轉(zhuǎn)越界糾正 √ √ 長春理工大學本科畢業(yè)設計 24 方塊翻轉(zhuǎn)處理的流程圖 如圖 53 所示: 開 始收 到 翻 轉(zhuǎn) 信 息方 塊 是 否 落 下 是翻 轉(zhuǎn) 后 是 否 有足 夠 空 間否不 能 翻 轉(zhuǎn)否是翻 轉(zhuǎn) 后 是 否 越界直 接 翻 轉(zhuǎn)否翻 轉(zhuǎn) 越 界 糾 正式結(jié) 束 圖 53 方塊翻轉(zhuǎn)處理流程圖 滿行消除 C圖形類中提供了一個方法, copyArea(int x, int y, int width, int height, int dx, int dy),這個方法的作用是將組建的某一區(qū)域復制到由 dx和 dy指定的水平距離和垂直距離所在的區(qū)域。利用這個方法,可以消除滿行。 那么,當方塊落下去后,如何判斷有行需要消除呢? 長春理工大學本科畢業(yè)設計 25 如概要設計中所述 ,游戲地圖中有方塊的區(qū)域可以用 2 表示,當方塊落下去后,判斷某一行是否全部為 2,如果全為 2,即表示這一行已滿,需要消除,這個時候,就可以利用 copyArea 這個方法將這一行消去了。 消去一行后,要繼續(xù)向下檢測,如果下一行是滿行,消除,否 則再往下檢測,一直將落下的方塊所占的行數(shù)全部檢測完為止。 假定,以豎直狀態(tài)落下一個長條形的方塊,很顯然,方塊一共占據(jù)了四行。這時候,應該從長條形的方塊占據(jù)的第一行開始檢測,不管期間是否有消行,都必須將長條形的方塊所占據(jù)的四行全部檢測完為止。并且記錄下消去的行數(shù),方塊消行完成后,增加相應積分。 但是,這里面又會遇到一個問題,因為并不是所有方塊所占的行數(shù)都一樣,方塊落下后到底該檢測多少行呢?考慮到方塊落下后最多占據(jù)四行,以及計算機運算的高速性,可以設定每一次方塊落下后都往下檢測四行。 方塊消行的流程圖如圖 54 所示: 長春理工大學本科畢業(yè)設計 26 開 始方 塊 落 下檢 測 第 一 行是 否 消 行 消 去 該 行是否檢 測 下 一 行 , 獲 取行 數(shù) 及 填 充 狀 態(tài)是 否 消 行 消 去 改 行是否是 否 為 第 四 行否是統(tǒng) 計 所 消 行 數(shù) , 增加 相 應 分 數(shù)結(jié) 束 圖 54 方塊消行流程圖 升入下一關 當游戲分數(shù)達到一定值后,游戲?qū)詣舆M入下一關。升入高一級別的關卡后,游戲難度會隨之增加,表現(xiàn)在方塊下落的速度會加快,旋轉(zhuǎn)方塊出現(xiàn)的幾率會提高,在游戲的底部會生成一定數(shù)量的小正方形方塊。 ? 升入下一關 每一次消行增加得分后,檢查游戲的分數(shù)是否達到設定的值,如果達 到設定值,則游戲關數(shù) 提升 1,這個時候應該立即結(jié)束當前關卡的游戲,提示用戶過關 長春理工大學本科畢業(yè)設計 27 信息,當用戶確認后,重新初始化游戲,進入下一關進行游戲。 ? 加快方 塊下落速度 可以用一個變量記錄當前游戲的關數(shù),假定定義整型變量 level 代表游戲的關數(shù),每一次,分數(shù)達到設定值后, level 要自加 1,重新初始化游戲時,應該根據(jù)這個 level 得到新的定時器休眠時間值,方塊下落的速度也就隨之改變了。 ? 提升旋轉(zhuǎn)方塊出現(xiàn)的幾率 同樣,旋轉(zhuǎn)方塊幾率的提高也可以用如上方法得到一個新的旋轉(zhuǎn)方塊控制線程休眠時間值,旋轉(zhuǎn)方塊出現(xiàn)的幾率也將隨之提高。 ? 在游戲底部隨機生成一定數(shù)量的小正方形塊 障礙物的隨機生成也比較容易實現(xiàn)。本游戲的游戲地圖是 25 行 x15 列,一共 25x15 個單位格子,可以依據(jù)游 戲地圖大小設定小正方形塊的生成規(guī)則是,隨機生成的小正方形塊占據(jù)的行數(shù)是當前的游戲關卡數(shù),總共生成的小正方形格子的數(shù)量是行數(shù) x7。 就如上面隨機生成數(shù)值范圍 0 到 6 的 blocktype 值,這里應該隨機生成數(shù)值范圍 0 到 14 的橫坐標值,每一行都應該生成七個這樣的橫坐標值,一行生成完之后再繼續(xù)往上一行,直到把所要求的行數(shù)全部填充指定數(shù)量的隨機小方塊為止。 需要注意的是,每一次隨機出 0 到 14 的橫坐標值時,也應該隨機出一個新顏色,用來繪制當前的隨機方塊,否則,隨機出的方塊將只有一種顏色,這個顏色將可能是黑色。 長春理工大學本科畢業(yè)設計 28 相應的 流程如圖 55 所示: 開 始分 數(shù) 達 到 設 定 值L e v e l自 加 1 , 結(jié) 束當 前 游 戲 并 提 示 用戶 以 過 關用 戶 確 認 過 關 根 據(jù) 新 的 le v e l得 到 新 的 定 時 器 值 ,新 的 旋 轉(zhuǎn) 塊 線 程 休 眠 值 , 隨 機 生 成相 應 數(shù) 量 的 小 方 塊 格 子重 新 初 始 化 游 戲結(jié) 束 圖 55 通關流程圖 長春理工大學本科畢業(yè)設計 29 第 6 章 游戲測試 測試的意義及注意事項 軟件測試是軟件工程中及其重要的一個環(huán)節(jié),目的是保證軟件
點擊復制文檔內(nèi)容
公司管理相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1