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

正文內(nèi)容

基于vc的“連珠球”游戲設(shè)計(jì)學(xué)士學(xué)位論文(文件)

2025-07-31 09:11 上一頁面

下一頁面
 

【正文】 用它們。如果使用了某個(gè)特殊處理器的擴(kuò)展功能,你的代碼甚至無法移植到其他同類型的處理器上(比如, AMD 的 3DNow 指令是無法移植到其它奔騰系列的處理器上的 )。目前主流 C++編譯器有 VC, BC, gcc。 同時(shí),客戶端的開發(fā)必須熟悉 windows 的接口 SDK,雖然 windows 有更 專業(yè)的游戲接口 DirectX,但是對(duì) SDK 的熟悉也是必須的。 (一) 鏈表 天津科技大學(xué) 20xx 屆本科生畢業(yè)設(shè)計(jì) 6 在游戲中,鏈表主要應(yīng)用在有大規(guī)模刪除,添加的應(yīng)用上。 (三) 棧和隊(duì)列 棧和隊(duì)列是兩種特殊的線性結(jié)構(gòu),在游戲當(dāng)中,一般應(yīng)用在腳本引擎,操作界面,數(shù)據(jù)判定當(dāng)中。實(shí)現(xiàn)思想:我們規(guī)定在腳本語句中可以使用 “ () ” 嵌套,那么,便有如下的規(guī)律,左括號(hào)和右括號(hào)配對(duì)一定是先有左括號(hào),后有右括號(hào),并且,在嵌套使用中,左括號(hào)允許單個(gè)或連續(xù)出現(xiàn),并與將要出現(xiàn)的有括號(hào)配對(duì)銷解,左括號(hào)在等待右括號(hào)出現(xiàn)的過程中可以暫時(shí)保存起來。我們可以將讀到的左括號(hào)壓入設(shè)定的棧中,當(dāng)讀到右括號(hào)時(shí)就和棧中的左括號(hào)銷解,如果在棧頂彈不出左括號(hào),則表示配對(duì)出錯(cuò),或者,當(dāng)括號(hào)串讀完,棧中仍有左括號(hào)存在,也表示配對(duì)出錯(cuò)。在這里,我們主要研究二叉樹的一種應(yīng)用方式:判定樹。 通過計(jì)算,兩種算法的效率大約是 2:3,很明顯,改進(jìn)的算法在時(shí)間性能上提高不少。 在一個(gè)游戲中,可能包含很多分支情節(jié),在這些分支情節(jié)之間,會(huì)存在著一定的先決條件約束,即有些分支情節(jié)必須在其他分支情節(jié)完成后方可開始發(fā)展,而有些分支情節(jié)沒有這樣的約束。 Visual Studio 是目前最流行的 Windows 平臺(tái)應(yīng)用程序開發(fā)環(huán)境。其中, Visual Basic 和 Visual FoxPro 使用單獨(dú)的開發(fā) 環(huán)境,其他的開發(fā)語言使用統(tǒng)一的開發(fā)環(huán)境。由于微軟公司對(duì)于 Sun 公司 Java 語言擴(kuò)充導(dǎo)致與 Java 虛擬機(jī) 不兼容被 Sun 告上法庭,微軟在后續(xù)的 Visual Studio 中不再包括面向 Java 虛擬機(jī)的開發(fā)環(huán)境。C 是一門建立在 C++和 Java 基礎(chǔ)上的現(xiàn)代語言,是編寫 .NET 框架的語言。而 Visual J++ 也變?yōu)? Visual J。 .NET 框架也升級(jí)到了 。同時(shí)還永久提供免費(fèi)的 Visual Studio Express 版本。預(yù)計(jì)為了保持與 Office 系列 的統(tǒng)一,Visual Studio 9 的名稱為 Visual Studio 20xx。實(shí)際上,如果你會(huì) C 語言,你會(huì)發(fā)現(xiàn) Windows 編程的難度并不比當(dāng)年學(xué)C 語言時(shí)大。 大多數(shù)大型軟件(包括 Windows 自己)都是用 C、 C++編的,所以可以利用的源代碼 特別多。 VC 適合組織大工程( VB 就不行) BorlandC++或 C++Builder 也很不錯(cuò),并不比 VC 差。一個(gè)臭名昭著的例子就是“HelloWorld” 。實(shí)際上,在 Windows 下顯示 “Helloworld”, 最簡單的方法只要 5行就夠了: include“ ” voidWinMain() { MessageBox(NULL,”HelloWorld!”,”MyFirstWindowsApplication”,MB_OK)。 voidCYourView::OnDraw(CDC*pDC) { //??. 其他的代碼 pDCTextOut(100,100,”HelloWorld!”)。 學(xué)語言,與練武道理也差不多。我們這里說的學(xué) VC,只是學(xué)招式,學(xué)招式一個(gè)月差不多就夠了,聰明的兩個(gè)星期就可以掌握。關(guān)鍵要素有三: ? 語法:了解 C 和 C++基本語法,這是比較容易的。嚴(yán)謹(jǐn),嚴(yán)格按照規(guī)范去做,同時(shí)又能發(fā)揮出極大的創(chuàng)造性,才是 語言學(xué)家 的本色。 VC編程中,擁有大的詞匯量就意味著要掌握較多的類、函數(shù)和其他編程組件。 天津科技大學(xué) 20xx 屆本科生畢業(yè)設(shè)計(jì) 11 第二章 需求分析與概要設(shè)計(jì) 第一節(jié) 游戲需求分析 一、 游戲功能需求分析 游戲程序首先是以個(gè)計(jì)算機(jī)程序,所以它應(yīng)該有計(jì)算機(jī)程序的基本功能:開始,退出,保存數(shù)據(jù),讀取數(shù)據(jù)等。 (二) 流暢性。即使是游戲的初玩者,也能玩的游刃有余。其他一些 windows 的熱鍵,如 Alt + F4 將直接作用到窗口上,與游戲程序無關(guān)。 天津科技大學(xué) 20xx 屆本科生畢業(yè)設(shè)計(jì) 12 二. 游戲操作規(guī)則 ( 一 ) 菜單界面 在界面菜單中,鼠標(biāo)移動(dòng)到菜單項(xiàng)上,該項(xiàng)變紅色時(shí)說明該鼠標(biāo)位置為該菜單的有效位置,點(diǎn)擊將觸發(fā)菜單項(xiàng)的效果。 ( 2)有選中彩球時(shí) 選中了某個(gè)彩球后,點(diǎn)擊其他彩球,視為重新選擇。 ( 三 ) 游戲結(jié)束 游戲結(jié)束時(shí)點(diǎn)擊鼠標(biāo)左鍵將返回界面菜單 三. 程序其他功能 ( 一 ) 版本提示 在系統(tǒng)菜單中選擇“ Help” ?“ about”選項(xiàng)時(shí),會(huì)有一個(gè)對(duì)話框彈出,對(duì)話框上記錄了程序的版本信息。但是 太大會(huì)使游戲界面不清楚,太小會(huì)使游戲中的字符顯示不出來。 天津科技大學(xué) 20xx 屆本科生畢業(yè)設(shè)計(jì) 13 玩家想繼續(xù)上次得游戲時(shí),從 save 目錄中讀取信息, 并把 txt 信息轉(zhuǎn)化成游戲信息表現(xiàn)出來 。 二 、 游戲 邏輯設(shè)計(jì) (一)游戲回合 以一次彩球的成功移動(dòng)為一回合。 若沒有通路 ,則視為放棄操作,玩家重新點(diǎn)選彩球 。 否則總得分不變,回合結(jié)束 。而游戲玩家與游戲的交互是持續(xù)不斷的,沒有必要 強(qiáng)調(diào)菜單。當(dāng)鼠標(biāo)移動(dòng)到菜單的其中一個(gè)選項(xiàng)上時(shí),該選項(xiàng)字體變紅,并 向左上方移動(dòng)一個(gè)像素然后重繪,給玩家字體彈起的感覺。 HDC hdc = GetDC(g_hWnd)。 int wId = (wPosY wMenuY) / (wBallSize * )。 = wMenuY + wChooseMenuId * wBallSize * + 20。 SetTextColor(hdc, cOldColor)。 wId = wMenuNum) { GetTextExtentPoint32(hdc, mpMenu[wId].cMenuName, strlen(mpMenu[wId].cMenuName), amp。 if(wPosX wTempX amp。 wPosY wTempY amp。 = wMenuY + wId * wBallSize * 1。rect, DT_CENTER)。 } DeleteDC(hdc)。一般的游戲都會(huì)有自己的游戲記錄文件,如 .save 這樣的形式。在游戲過程中,如果正常退出應(yīng)用程序(即點(diǎn)擊關(guān)閉按鈕,使用菜單關(guān)閉等) , 程序?qū)⒔孬@ WM_CLOSE 消息, 確定保存,然后再退出。如果沒有這 個(gè)文件,則視為玩家選擇了“新游戲”選項(xiàng),游戲重新開始。 HANDLE hFile。 WriteFile(hFile, lpBuffer, nNumOfByte, amp。 } //讀取游戲 bool CGameSys::LoadGame(LPCTSTR lpFileName, LPVOID lpBuffer, DWORD nNumOfByte) { char szPath[50] = save//。 hFile = CreateFile(szPath, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)。 CloseHandle(hFile)。天津科技大學(xué) 20xx 屆本科生畢業(yè)設(shè)計(jì) 18 因?yàn)閷?duì)于游戲來說,并不 是所有的消息都是有效的,都是必須相應(yīng)的。 這時(shí) worl 是相應(yīng)這個(gè)退出操作的,不過它會(huì)有一個(gè)對(duì)話框來提示你。在“連珠球”游戲中 ,對(duì)于這個(gè)地方的處理就是: 鼠標(biāo)消息傳到游戲處理程序中時(shí),計(jì)算鼠標(biāo)點(diǎn)擊的位置,把這個(gè)位置的窗口坐標(biāo)轉(zhuǎn)換成游戲世界的坐標(biāo),如果這次點(diǎn)擊操作發(fā)生在游戲世界之外,則程序不進(jìn)行任何處理,否則游戲程序?qū)Υ瞬僮髯鞒龇磻?yīng)。 游戲程序用一個(gè)無色黑邊的方框作為棋盤,紅、黃、藍(lán)等七中不同顏色的圓形作為棋子。 HDC hdc = GetDC(g_hWnd)。 hOldBrush = (HBRUSH)SelectObject(hdc, hBrush)。 SelectObject(hdc, hOldBrush)。 DeleteDC(hdc)。 HBRUSH hBrush, hOldBrush。 hPen = CreatePen(PS_SOLID, 1, BLACK)。 DeleteObject(hBrush)。 天津科技大學(xué) 20xx 屆本科生畢業(yè)設(shè)計(jì) 20 return true。 //單元格 X 坐標(biāo) 天津科技大學(xué) 20xx 屆本科生畢業(yè)設(shè)計(jì) 21 int wCellPosY。 wCellColor = wColor。 case W_GREEN: return GREEN。 } }。游戲結(jié)束時(shí)讀出原來的最高得分,與本次游戲比較,把較高的那個(gè)當(dāng)做歷史最高得分存入計(jì)算機(jī)中。 //保存棋盤上剩余空位置 vectorCELL_PROPERTY::iterator iter。 i LINK_MAP_SIZE。 cellwCellPosX = i。 } } if(() = 3) { wLinkBallFlag = STATE_OVER。 i 3。 ++i) { iter = () + (rand() % ())。 lpGameDrawBall(iter)。 ++i) { cellwCellPosX = i。 } return true。 這樣的算法其實(shí)很多 , 這里運(yùn)用的便是大名鼎鼎的Dijkstra 算法的一種變相表現(xiàn)形式 。然后把 1 周圍一格,且為 0 的位置置為 2,意思是第二步。 二 、 核心代碼 //路徑尋找 bool CLinkBall::LinkBallFindWay(CELL_PROPERTY cpFrom, CELL_PROPERTY cpTo) { //判斷起終點(diǎn)是否符合條件:起始位置有球,終點(diǎn)沒有 if(lpMap[][] == 0 || lpMap[][] != 0) return false。 for(int i = 0。 ++j) { if(lpMap[i][j] != 0) lpTempMap[i][j] = 1。 int wStepY = 。 wStepX = iterStackwCellPosX。amp。 lpTempMap[wStepX 1][wStepY] == 0) { (CELL_PROPERTY(wStepX 1, wStepY, wAmount))。 lpTempMap[wStepX + 1][wStepY] == 0) { (CELL_PROPERTY(wStepX + 1, wStepY, wAmount))。 lpTempMap[wStepX][wStepY 1] == 0) { (CELL_PROPERTY(wStepX, wStepY 1, wAmount))。 lpTempMap[wStepX][wStepY + 1] == 0) { (CELL_PROPERTY(wStepX, wStepY + 1, wAmount))。 //沿著標(biāo)記找最短路徑 ()。 wStepX = iterStackwCellPosX。amp。 wAmount。 wAmount。 } (())。 } if(wStepY + 1 LINK_MAP_SIZE amp。 } if(wStepY 1 = 0 amp。 } if(wStepX + 1 LINK_MAP_SIZE amp。 } if(wStepX 1 = 0 amp。 wAmount = lpTempMap[wStepX][wStepY] + 1。 天津科技大學(xué) 20xx 屆本科生畢業(yè)設(shè)計(jì) 25 (cpFrom)。 } } int wAmount = 1。 ++i) { for(int j = 0。 //暫時(shí)保存位置的堆棧 vectorCELL_PROPERTY::iterator iterStack。 最后,如果終點(diǎn)位置有值則停止計(jì)算 ,并從終點(diǎn)開始 ,按順序把數(shù)字放入棧中,求得最短路徑?!斑B珠球”游戲是這樣尋找最短路徑的: 首先把當(dāng)前棋盤復(fù)制一個(gè)副本 ,其中有彩球的位置置為 1,意思是無法通過 ,其他位置為 0。 每次試圖移動(dòng)一個(gè)彩球時(shí)都會(huì)調(diào)用一次尋路算法 。 cellwCellColor = lpNextColor[i 11]。 } for(i = 11。 lpMap[iterwCellPosX][iterwCellPosY] = lpNextColor[i]。 } } //初始化這一回合球的位置 for(i = 0。 天津科技大學(xué) 20xx 屆本科生畢業(yè)設(shè)計(jì) 23 retur
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1