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

正文內(nèi)容

基于vc的俄羅斯方塊游戲系統(tǒng)設(shè)計與開發(fā)-預(yù)覽頁

2024-12-14 15:02 上一頁面

下一頁面
 

【正文】 傳統(tǒng)的 Windows應(yīng)用程序的開發(fā)使用 API 函數(shù)。 編程,都是在 Visual C++ 環(huán)境下采用基本 MFC的 Windows編程方法。此外, MFC 還提供一個應(yīng)用程序來發(fā)模型,此模型被稱為文檔 \視圖模型。 在構(gòu)架類視圖中有 MFC 基本架構(gòu)組合 : App(應(yīng)用程序 )類、Document(文檔 )類、 View(視圖 )類、 Frame(框架 )類和用于提示關(guān)于作 者的對話框 CAboutDlg類 。其實 ,所有的程序也是采用同樣的方法去實現(xiàn) , MFC 機制巧妙地利用了Application 類去封裝實現(xiàn)了這樣的效果功能 ,每個 CWinApp類對象實體都代表應(yīng)用程序本身 ,它是基本的 Application Class(應(yīng)用程序類 ),其封裝了 Windowsbased 應(yīng)用程序的初始化、運行、 Message 映射和終止等功能。當(dāng) Windows 調(diào)用 WinMainO 時 (在 MFC 應(yīng)用程序中 ,不必親自調(diào)用 WinMainO,因為機制已經(jīng)對它封裝好 ,當(dāng)應(yīng)用程序啟動時會由框架自動調(diào)用 ),這個 Object 已經(jīng)可用了 ,并且該 Object是全局的。 InitInstance(): 此函數(shù)對文檔模板 (Document Template)進(jìn)行創(chuàng)建和初始化 ,即在這過程中伴隨著 Document、 View 和 Frame 的創(chuàng)建。 當(dāng)用戶從 CWinApp派生一個 Application Class 時 ,必須重寫成員函數(shù) InitInstance() 去創(chuàng)建應(yīng)用程序的 Main Window Objecto Windows 允許同時運行同一個應(yīng)用程序的多個 “ Copy” , 而且該應(yīng)用程序的每個 Instance 包括第一個的都會被初始化 ,而初始化時都會用到被 Override 了的 InitInstance() 函數(shù)所提供的信息。 (二)文檔 — 視圖機制 文檔對視圖的管理。而這些用于顯示不同性質(zhì) 的 圖像視圖類也可以通 過 GetDocument()來獲取其所對應(yīng)的 Document 文檔數(shù)據(jù)。在 MFC 的文檔 視圖 框架結(jié)構(gòu)中 ,一個文檔的內(nèi)部對象的構(gòu)成往往是固定的 ,在這種情況下 ,寫到文件中的對 象在文件中的布局也是固定的。 (四)文檔 視圖的關(guān)聯(lián) 視圖與文檔和窗口的關(guān)聯(lián)和協(xié)調(diào)工作可以從視圖類對象的 OnDraw() 函數(shù)開始 ,找出關(guān)聯(lián)的物件與關(guān)系。 而對于該文檔關(guān)聯(lián)視圖的增添 ,與將 DocumentTemplte 文檔模 板添加到模板類表一樣 , 也是有相應(yīng)的處理函數(shù) ,對于文檔模板在模板管理列表的添加是在 App類的 Initlnstance()里面使用 AddDocTemplate() 函數(shù)去實現(xiàn) ,而對于視圖在視圖列表的添加 , 可以使用 Document 類對象的成員函數(shù) AddView() 去實現(xiàn)。 表 功能 簡介 順時針旋轉(zhuǎn) 順時針旋轉(zhuǎn)轉(zhuǎn)塊 逆時針旋轉(zhuǎn) 逆時針旋轉(zhuǎn)轉(zhuǎn)塊 繪制轉(zhuǎn)塊 指定畫板上繪制轉(zhuǎn)塊 擦除矩形 指定畫板上擦除矩形 右移動 右移動轉(zhuǎn)塊 左移動 左移動轉(zhuǎn)塊 下移動 下移動轉(zhuǎn)塊 丟下轉(zhuǎn)塊 在畫板上丟下轉(zhuǎn) 塊 計分 根據(jù)用戶消去的行數(shù)計分 作為玩家,玩家可以控制難度,查看幫助等,對于操作性的需求如下: 玩家可以自己來控制方塊下落的速度。 將整體界面分為三部分:左側(cè)半部分用來存放俄羅斯方塊,是游戲的活動區(qū),用戶操作的圖形變化在這個主界面區(qū)完成。如 下 圖 : 圖 (方塊)需求 良好的方塊形狀設(shè)計,繪制七種常見的基本圖形(長條形、 Z字形、反 Z形、田字形、 7字形、反 7形、 T字型),各個方塊要能實現(xiàn)它的變形,可設(shè)為順時針或逆 時針變形,一般為逆時針。 如 下 圖 : 圖 (二) 算法分析 對于方塊在某一瞬間的位置標(biāo)識,我們采用一個 42 的小數(shù)組標(biāo)識出來 ,即用 4個存儲單位空間存儲當(dāng)前下墜物的每一子塊的位置,也就是說,用 4個存儲單位空間存儲當(dāng)前下墜物的每一子塊的位置來對整個下墜物件的位置進(jìn)行標(biāo)識,而每個存儲空間的大小就是一個典的坐標(biāo)值 (x,y),而每個方塊按照 從左到右的方式進(jìn)行編號,并且在編號過程中對于同一列的方塊實行從上到下進(jìn)行編號 。 俄 羅斯方塊流 程如下 : (x0,y0) (x1,y1) (x2,y2) (x3,y3) 2 3 0 1 (x0,y0) (x1,y1) (x2,y2) (x3,y3) 0 1 2 3 12 圖 到達(dá)底部 游戲結(jié)束 到達(dá)底部 結(jié)束 銷行操作 生成下一個下墜物 將新生的下墜物代替舊的 “下一 個下墜物 “ 將舊的 “下一個下墜物 ”用作當(dāng)前 下墜物 銷行操作 游戲結(jié)束處理 下降一個單位 開始 13 五 、 俄羅斯方塊游戲的 實現(xiàn) (一) 窗體 設(shè)計 窗體的 設(shè)計 , 包括 工具欄的實現(xiàn),按鈕長度、寬度、數(shù)目、圖標(biāo)的設(shè)置,文字的設(shè)置 等。 CString str。 //設(shè)置按鈕數(shù)為 6 (NULL,4)。 (AfxGetApp()LoadIcon(IDI_ICON_PAUSE))。img)。 //順序增添按鍵的圖標(biāo) (AfxGetApp()LoadIcon(IDI_ICON_START))。 ().SetImageList(amp。 (0, 開始 )。 (2, 結(jié)束 )。 //設(shè)置按鈕的大小 ((), CSize(32,32))。m_wndToolBar)。而判斷是否已經(jīng)到達(dá)了底部,可以通過當(dāng)前下墜物件所對應(yīng)的接觸面的方塊位置為被占用狀態(tài)來確定,利用數(shù)組記錄 1~ 7種下墜物的 1~ 4種形態(tài)的接觸面信息。 如圖 : 圖 是 否 堆積方塊,判斷接觸面狀態(tài)及是否得分 判斷是否 過關(guān) 關(guān)數(shù)增加,游戲速度將變快 。 x1 = ActiveStatus[0][0]。 //是否為底部的判斷 //是 1則 到達(dá)游戲區(qū)域的底部 //是 2則 與接觸面正下方的小方塊區(qū)域為被占用狀態(tài) if (x1=m_iRow1 || x2=m_iRow1 || x3=m_iRow1 || x4=m_iRow1) m_isBottom = TRUE。 //根據(jù)編號獲取 ActiveStatus中該小方塊的整下方的 坐標(biāo) xx=ActiveStatus[x][0]+1。 默認(rèn) 用戶游戲空間有 12 行, 10列,每次判斷銷行時從最低行開始判斷是否 十列都被俄羅斯方塊填滿,填滿則清楚該行然后循環(huán)判斷。 int m_iMuch=0。 for (j=0。k0。 //第 1行清零 18 for (j=0。 } } if (m_iMuch0) { m_iPerformance += m_iMuch * m_iMuch * 100。 //刷新分?jǐn)?shù)區(qū)域 CRect rect1 (m_iStartY+320,m_iStartX+180,m_iStartY+440, m_iStartX+200)。 } } } (五) 中斷操作流程的實現(xiàn) 在對正常游戲流程實現(xiàn)后,接下來將進(jìn)行用戶按鍵中斷流程的實現(xiàn)。 break。 break。 } 該函數(shù)體只對某些按鍵功能進(jìn)行截獲與響應(yīng),它們對應(yīng)不同的功能模塊,分別是向左移動的左鍵 VK_LEFT,向右移動的右鍵 VK_DOWN,變形的向上鍵 VK_UP。接下來,要將游戲區(qū)域中的數(shù)據(jù)映射到屏幕上。 xx2=x2。 yy2=y2。 yy1=y11。 yy4=y4+2。 yy1=y1+1。 yy4=y42。 yy2=y21。 yy4=y41。 void CSkyblue_RectView::DrawGame(CDC *pDC) { int i,j。rect)。 pDCSelectObject(m_pBlackPen)。 pDCLineTo(m_iStartY+300, m_iStartX +i*m_iLarge)。 pDCLineTo(m_iStartY+i*m_iLarge, m_iStartX+360)。i++) for (j=0。 nW = m_iLarge4。 } } //顯示游戲區(qū)域及游戲級別的漢字描述 if (!m_bGameEnd) 22 { pDC SetBkColor(BLACK)。 pDC TextOut(m_iStartY+320, m_iStartX+280, 游戲級別: )。 pDC SetBkColor(BLACK)。 pDC SetTextColor(WHITE)。k4。 y = m_iStartX+i*30 +2+30。m_memRectDC,m_iBlockSytle*30,0,SRCCOPY)。對于這些畫刷和畫筆的使用 ,也要預(yù)先準(zhǔn)備好 ,所以在繪圖資源初始化和釋放函數(shù)中 ,也要添加它們的創(chuàng)建和釋放 。 24 六 、 游戲 功能測試 對于編寫好的游戲軟件,需要進(jìn)行各種測試來保證軟件的正常運行,常見的測試手段包括 黑盒測試和白盒 測試, 軟件測試主要工作內(nèi)容是驗證和確認(rèn),驗證是保證軟件正確地實現(xiàn)了一些特定功能的一系列活動,即保證軟件做了你所期望的事情。 (一) 游戲 圖像功能測試 當(dāng)游戲在進(jìn)入正常啟動后會進(jìn)入其初始界面,在初始界面上顯示開始,操作、選項、設(shè)置和幫助等幾個按鈕,初始界面如下圖 : 圖 當(dāng)選擇選項 按鈕時, 用戶可以根據(jù) 顯示操作的提示頁 進(jìn)行音樂、游戲級別的設(shè)置 如下圖 : 圖 25 在主界面選擇設(shè)置按鈕則可以顯示設(shè)置游戲區(qū)域的大小、游戲的級別和方塊的樣式 , 通過點擊組合框來調(diào)整, 如下圖 圖 當(dāng)選擇幫助 按鈕時, 用戶可以根據(jù) 顯示 提示的內(nèi)容,用戶可以很輕松的對游戲進(jìn)行操作 如下圖 : 圖 當(dāng)選擇游戲開始時, 就進(jìn)入游戲的主界面,如圖主界面分為以下三部分,主游戲窗口,右上角的下一個方塊窗口和游戲的分?jǐn)?shù)級速度窗口。 28 七 、結(jié)束語 通過此次完整的游戲設(shè)計實現(xiàn)過程,學(xué)習(xí)了游戲開發(fā)的各個步驟,從游戲的需求設(shè)計,概要設(shè)計,到游戲的流程設(shè)計,詳細(xì)設(shè)計,最后代碼實現(xiàn),測試。最終給通過完整的編碼完成了畢設(shè),其中對劃分好的模塊進(jìn)行了白盒測試,保證了單元功能的正確,對于最后的整體軟件進(jìn)行了黑盒測試從而保證了用戶狀態(tài)下的正確運行。時間雖短,卻讓我受益匪淺,對 吉 老師的感激之情無法用言語來表示。我們一起學(xué)習(xí)、 一起生活、一起奮斗,你們的支持是對我的最大的鼓舞。 [11] 王正軍 .Visual C++程序設(shè)計 .北京:人民郵電出版社, 20
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1