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

正文內(nèi)容

基于visualc實(shí)現(xiàn)的單機(jī)版俄羅斯方塊游戲的設(shè)計(jì)-----畢業(yè)論文(編輯修改稿)

2024-12-18 15:01 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 ,需要通知所有 這些關(guān)聯(lián)的視圖進(jìn)行更新重繪 , 而 Document 類對(duì)象就擁有通知所有視圖重繪的這樣的一個(gè)功能函數(shù)。對(duì)于UpdateAIIViews() 函數(shù)實(shí)現(xiàn)對(duì)各個(gè)視圖類對(duì)象對(duì)數(shù)據(jù)顯示的更新是通過(guò)文檔類內(nèi)部CPtrlist 類型的成員變量 m_viewList 來(lái)維護(hù)和管理所有相關(guān)聯(lián)的視圖對(duì)象 , 如圖 所示。 Document 本科生畢業(yè)論文 6 圖 變量 m_viewList 視圖對(duì)象 而對(duì)于該文檔關(guān)聯(lián)視圖的增添 ,與將 DocumentTemplte 文檔模板添加到模板類表一樣 , 也是有相應(yīng)的處理函數(shù) ,對(duì)于文檔模板在模板管理列表的添加是在 App 類的 Initlnstance()里面使用 AddDocTemplate() 函數(shù)去實(shí)現(xiàn) ,而對(duì)于視圖在視圖列表的添加 , 可以使用 Document 類對(duì)象的成員函數(shù) AddView() 去實(shí)現(xiàn)。 當(dāng)與文檔類關(guān)聯(lián)的視圖類收到文檔類通過(guò) UpdateAIIViews() 函數(shù)發(fā)出的更新重繪通知后 , 會(huì)觸發(fā)視圖類的 OnUpdate() 函數(shù)的實(shí)現(xiàn)。 3 俄羅斯游戲分析和總體設(shè)計(jì) m_viewList pView_1 pView_2 pView_3 pView_4 View_4 View_3 View_2 View_1 本科生畢業(yè)論文 7 俄羅斯方塊 游戲 功能描述 對(duì)于俄羅斯方塊 游戲 ,其功能描述如下 : 游戲開始 ,游戲區(qū)域上方不斷地出現(xiàn)預(yù)定義形狀的下墜物件 。 下墜物件可以通過(guò)旋轉(zhuǎn)改變其顯示形態(tài) ,并且不斷地往下墜 , 直到它接觸到游戲區(qū)域底部或其他之前已經(jīng)累疊起的下墜物件。當(dāng)一個(gè)下墜物件到達(dá)底部后 ,其 位置則確定下來(lái)并占有該空間的位置區(qū)域。 當(dāng)游戲區(qū)域的某一行被下墜物件完全填充 ,則消除該行的所有下墜物 ,壘在其上的物件將掉下代替該行空間。 游戲的結(jié)束是以 下墜物件的頂部到達(dá)游戲區(qū)域頂部作為判斷依據(jù) ,表示裝滿溢出。并且在某一瞬間 ,下一個(gè)下墜物件的形態(tài)在游戲區(qū)域的右上方有預(yù)先提示 ,同時(shí)每抵消一行空間積分自增 100。 游戲 規(guī)則 分析 首先 ,在 游戲 開始后 檢查當(dāng)前的下墜物是否已經(jīng)到了底部 ,如果不是的話就將下墜物到了該定時(shí)器間隔的時(shí)間后整體往下移動(dòng)一個(gè)單位 ,否則 ,進(jìn)行到達(dá)底部后的操作。對(duì)于到達(dá)底部后的操作 ,可以分成以下幾個(gè)步驟來(lái)處理。 (1)先對(duì)進(jìn)行到底部后的所有可以抵消的行進(jìn)行銷行處理。 (2)生成一個(gè)新的 “ 下一個(gè)下墜物 ”, 這個(gè)下墜物的形態(tài)需要隨機(jī)地生成。 (3)在將舊的 “ 下一個(gè)下墜物 ” 置換成新的下一個(gè)下墜物 ,并在屏幕右上方顯示。 (4)將當(dāng)前的 “ 下墜物 ” 換成以前產(chǎn)生的舊的 “ 下一個(gè)下墜物 ”, 并且馬上使用。由于在這個(gè)過(guò)程中已經(jīng)重新使用了一個(gè)新的下墜物件 ,在剛使用時(shí)并且還沒有下降前 ,應(yīng)該判斷它是否已經(jīng)不可以下降到底部 (也就是說(shuō) ,在方塊己經(jīng)堆砌到接近游戲區(qū)域頂部的時(shí)候 ,下墜物件一旦被使用 ,就已經(jīng)到達(dá)了底部 ),如果是剛好到達(dá)底部則實(shí)行銷行檢測(cè)和操作 , 并且判斷頂部 (第一行 )的某些區(qū)域是否已經(jīng)被占用了 ,是則表示游戲已經(jīng)觸發(fā)結(jié)束的標(biāo)志時(shí)間 ,應(yīng)該進(jìn)入游戲結(jié)束狀態(tài)。 (5)在前 面判斷為到達(dá)底部后 ,進(jìn)行銷行檢測(cè)與操作。 (6)在下墜物到達(dá)底部的同時(shí) ,判斷是否已經(jīng)到達(dá)了游戲的頂部 ,是則表示游戲結(jié)束 ,進(jìn)行游戲結(jié)束的資源釋放與數(shù)據(jù)環(huán)境清理工作 整個(gè)流程如圖 所示。 本科生畢業(yè)論文 8 圖 流程圖 開始 到達(dá)低部 “下一個(gè)下墜物” “下 一個(gè)下墜物” “下一個(gè)下墜物”用作當(dāng)前下墜物 到達(dá)頂部, 游戲結(jié)束 結(jié)束 到達(dá)低部 本科生畢業(yè)論文 9 4 俄羅斯方塊游戲的實(shí)現(xiàn) 俄羅斯方塊 游戲 設(shè)計(jì) 的實(shí)現(xiàn) ,主要包括 游戲 核心數(shù)據(jù)的抽象與設(shè)計(jì) 、 操作方法的抽象與設(shè)計(jì) 、 及 流程的設(shè)計(jì) 與實(shí)現(xiàn) 等 。 下面將對(duì)這幾個(gè)部分作具體的設(shè)計(jì)。 游戲 核心數(shù)據(jù)的抽象與 設(shè)計(jì) 在抽象出方法和屬性前 ,先來(lái)分析一下整個(gè)游戲的具體實(shí)現(xiàn) 。 首先 , 游戲有開始、暫停、 結(jié)束等操作接口 ,而在游戲過(guò)程中 ,隨著用戶的按鍵交互 ,會(huì)出現(xiàn)方塊的形態(tài)變化 、 方塊 快 速下墜、安放該下墜物件、銷毀填滿的行、產(chǎn)生下一將要出現(xiàn)的方塊等功能。 這里 ,先分析游戲的特點(diǎn) ,把整個(gè)游戲的核心數(shù)據(jù)結(jié)構(gòu)提取出來(lái) ,再根據(jù)數(shù)據(jù)結(jié)構(gòu)的特點(diǎn)提取出核心功能模塊的關(guān)聯(lián) ,然后對(duì)這些功能一一進(jìn)行細(xì)化 ,從而完成整個(gè) 游戲的設(shè)計(jì) 。 下面就來(lái)分析整個(gè)游戲的整體狀況 ,如圖 所示。 圖 游戲內(nèi)部方塊 從如圖 所示可以看到 ,游戲區(qū)域可以看作是由許多個(gè)等面積的小方塊構(gòu)成的大面積區(qū)域。而這些區(qū)域的狀態(tài)只有 2 種 ,被下墜物占據(jù)和空閑 (沒有被下墜物占據(jù) ),因此 ,對(duì)于 整個(gè)游戲區(qū)域的數(shù)據(jù) ,用一塊空間來(lái)標(biāo)識(shí)即可。其狀態(tài)只有兩種 :被占據(jù) 1 和空閑 0。這塊空間的分配 ,可以采用動(dòng)態(tài)分配的方式或者靜態(tài)分配的方式去實(shí)現(xiàn) ,至于數(shù)據(jù)結(jié)構(gòu)的選擇 ,可以是鏈表、隊(duì)列或者數(shù)組等 ,我 這里選擇靜態(tài)分配并劃分一個(gè)足夠大的二維數(shù)組的方式來(lái)實(shí)現(xiàn) ,如下所示。 //in file: define MAX_ROW 100 //地圖的最大行數(shù) define MAX_COL 100 //地圖的最大列數(shù) ??? //in file: class:Cskyblue_RectView //內(nèi)部存取數(shù)據(jù)結(jié)構(gòu) int m_stateMap[MAX_ROW][MAX_COL] 從上述代碼可以看到 ,在視圖類對(duì)象里面分配了一個(gè)存儲(chǔ)游戲區(qū)域地圖狀態(tài)的二維數(shù)組 ID_stateMap成員變量 ,并定義其最大行數(shù)和列數(shù)都為 100(當(dāng)然 ,實(shí) 際可能并不需要那么本科生畢業(yè)論文 10 大 ,只是先分配好足夠的地圖空間以供使用而已 )。同時(shí) ,還應(yīng)該預(yù)先定義該區(qū)域的兩種 狀態(tài)值: define MAP_state_empty 0 //空(未被占據(jù)) define MAP_state_not_empty 1 //被占據(jù) 整個(gè)游戲區(qū)域的地圖設(shè)計(jì)好后 ,再來(lái)看看具體的下墜物 ,通過(guò)分析它們的特性 ,還可以抽象出一些物件來(lái)。在每個(gè)下墜物在下墜的過(guò)程中 ,總是占有地圖中的某一塊區(qū)域 ,那么怎樣表達(dá)這些下墜物的形態(tài)和它們占有的位置關(guān)系呢 ?在此 ,先來(lái)看看它們的基 本類型 ,然后進(jìn)行歸納分析 ,其基本類型如圖 所示。 圖 方塊基本類型 從圖 ,這些下墜物的 形狀一共有 7種 ,對(duì)于這些形態(tài)各異的下墜物間存在一個(gè)最基本的共性 ,就是它們占有的位置空間是一樣的 ,都是 4個(gè)小方塊區(qū)域。對(duì)于它們?cè)谀骋凰查g的位置標(biāo)識(shí) ,我們可以采用一個(gè) 4x2 的小數(shù)組標(biāo)識(shí)出來(lái) ,如圖 。 圖 方塊位置標(biāo)識(shí) 也就是說(shuō) ,用 4個(gè)存儲(chǔ)單位空間存儲(chǔ)當(dāng)前下墜物的每一子塊的位置來(lái)對(duì)整 個(gè)下墜物件的位置進(jìn)行標(biāo)識(shí) ,而每個(gè)存儲(chǔ)空間的大小就是一個(gè)點(diǎn)的坐標(biāo)值 (x,y),于是就有如下定義。 //in file : //用于保存當(dāng)前方塊的動(dòng)態(tài)位置, 4 個(gè)小方塊分別在大數(shù)組中的存放位置為先左后右, //每一列又遵循先上后下的原則 Int ActiveStatus[4][2]。 //存入下一個(gè)要出現(xiàn)的方塊形狀的數(shù)組 Int NextStatus[4][2]。 在上述代碼中 ,分配了一個(gè)整型的二維數(shù)組 ActiceStatus[][]來(lái)存儲(chǔ)每個(gè)下墜物的 4 個(gè)子方塊的坐標(biāo)位置 ,其實(shí)在游戲過(guò)程中 ,變動(dòng)的下墜物件除了當(dāng)前用戶正在操控的下墜物件外 ,項(xiàng)目程序的 右上方還需要顯示出下一個(gè)下墜物件的形狀 。 也就是說(shuō) ,在游戲過(guò)程中 本科生畢業(yè)論文 11 的某一瞬間 ,除了需要記錄當(dāng)前用戶正在控制的下墜物狀態(tài)外 ,還需要記錄預(yù)先隨機(jī)生產(chǎn)出來(lái)的下墜物件狀態(tài) ,于是代碼中多了一個(gè) NextStatus[][]數(shù)組成員變量 ,用以存儲(chǔ)下墜物的形態(tài)。還有一個(gè)問題沒有解決 ,這些形狀各異的下墜物件 ,雖然都是由 4個(gè)小方塊構(gòu)成 ,但是對(duì)于它們的編號(hào)還沒有一定的規(guī)律 ,因此需要人為地定下一些規(guī)則 ,而這個(gè)規(guī)則就是 :編號(hào)從下墜物的左邊起往右編排 ,而在同一列的方塊中 ,則從上往下的順序開始編號(hào)它們的對(duì)應(yīng)關(guān)系 如圖 。 圖 方塊類型對(duì)應(yīng)位置標(biāo)識(shí) 如圖 所示的兩個(gè)不同的下墜物 ,每個(gè)方塊按照從左到右的方式進(jìn)行編號(hào) ,并且在編號(hào)過(guò)程中對(duì)于同一列的方塊實(shí)行從上到下進(jìn)行編號(hào) ,而該方塊所在游戲區(qū)域的位置坐標(biāo) 則 存儲(chǔ)在下標(biāo)與編號(hào)所對(duì)應(yīng)的 ActiceStatus[][]二維數(shù)組的每個(gè)單位里面 ,如 : ActiceStatus[0][0] 和 ActiceStatus[0][1]則是第 0 號(hào)方塊的橫坐標(biāo) X 和縱坐標(biāo) Y。 ActiceStatus[2][0] 和 ActiceStatus[2][1]則是第 2號(hào)方塊的橫坐標(biāo) X和縱坐標(biāo) Y。 至此 ,可以實(shí)現(xiàn)下墜物件的位置標(biāo)識(shí)了 ,那么對(duì)于某一下墜物的形態(tài)特性又怎么標(biāo)識(shí)呢 ?可以使用這樣的方法 :用一個(gè)宏去標(biāo)識(shí) ,第 1 位的數(shù)值變化范圍為 1~ 7, 用于標(biāo)識(shí)下墜物的種類 (7 種 ),第 2位標(biāo)識(shí)該種類下墜物的不同形態(tài) ,不同的下墜物 ,如 “ 田 ” 字形的下墜物只有 1種形態(tài) ,所以沒有第 2位 ,其他的不同形態(tài)則從 1~ 4(最多有 4種形態(tài) )按順序標(biāo)識(shí)即可 ,如第 2種下墜物的第 3 種形態(tài) ,其宏標(biāo)識(shí)為 23,如圖 所示。 0 1 2 3 2 0 3 1 本科生畢業(yè)論文 12 下墜物編號(hào): 4 狀態(tài)編號(hào): 1 2 3 4 形狀宏標(biāo)識(shí) 41 42 43 44 圖 方塊變形表示 操作方法的抽象與設(shè)計(jì) 當(dāng)完成整個(gè)游戲的基本核心數(shù)據(jù)的表達(dá)并進(jìn)行抽象與設(shè)計(jì)后 ,接下來(lái) ,就可以根據(jù)游戲的特性對(duì)核心的基本操作方法進(jìn)行抽象 ,進(jìn)而實(shí)現(xiàn)這些功能。下面將著重分析游戲過(guò)程中的實(shí)現(xiàn)細(xì)節(jié) ,以便抽象出基本的操作功能。 首先是游戲開始 ,應(yīng)該有個(gè)事件觸發(fā)游戲的開始 ,譬如菜單欄選項(xiàng)等 ,相應(yīng)地 ,也可以 類推出游戲暫停與游戲結(jié)束等操作功能。 游戲開始后 ,產(chǎn)生一個(gè)下墜物件 ,并且在右上角生成下墜物件的基本形態(tài) ,因此有隨機(jī)物件產(chǎn)生這個(gè)操作 。 在游戲過(guò)程中 ,方塊會(huì)自動(dòng)隨著時(shí)間的推移而向下移動(dòng) ,因此有向下移動(dòng)的操作 。 在游戲過(guò)程中 ,用戶可以通過(guò)按鍵對(duì)下墜物的功能進(jìn)行操作 ,如變形操作、加速下降操作、向左移動(dòng)操作、向右移動(dòng)操作等。上面說(shuō)到的幾點(diǎn)大多是從與
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1