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

正文內(nèi)容

基于vc的“連珠球”游戲設(shè)計學(xué)士學(xué)位論文-資料下載頁

2025-06-27 19:22本頁面
  

【正文】 turn false。ReadFile(hFile, lpBuffer, nNumOfByte, amp。dwReadSize, NULL)。CloseHandle(hFile)。return true。}第三節(jié) 輸入輸出一、輸入功能介紹“連珠球”游戲是單一的鼠標(biāo)輸入,所以處理鼠標(biāo)消息就可以了。程序在 WinPro 回調(diào)函數(shù)中截獲鼠標(biāo)點擊的消息,然后把這個消息送往游戲控制的相關(guān)函數(shù)進行消息篩選。因為對于游戲來說,并不是所有的消息都是有效的,都是必須相應(yīng)的。這點是與其他應(yīng)用程序可能有所不同的地方。在其他應(yīng)用程序中,用戶的每個操作,只要是程序關(guān)心的,天津科技大學(xué) 2022 屆本科生畢業(yè)設(shè)計18程序就會進行處理,哪怕是不太符合情理的。比如說,使用 word 時,你沒有保存已編輯的文件,但是點擊了退出按鈕。這時 worl 是相應(yīng)這個退出操作的,不過它會有一個對話框來提示你。而在游戲中,因為是十分強調(diào)玩家與計算機交互的,因此會假設(shè)玩家有可能進行一些“無意義”的操作。就像兩個人在開玩笑一樣,對話產(chǎn)生了,但是并沒有產(chǎn)生實質(zhì)上的事件?;谝陨显?,回調(diào)函數(shù)截獲的函數(shù)需要進行再判斷,判斷玩家的操作是不是“有意義”的。在“連珠球”游戲中,對于這個地方的處理就是:鼠標(biāo)消息傳到游戲處理程序中時,計算鼠標(biāo)點擊的位置,把這個位置的窗口坐標(biāo)轉(zhuǎn)換成游戲世界的坐標(biāo),如果這次點擊操作發(fā)生在游戲世界之外,則程序不進行任何處理,否則游戲程序?qū)Υ瞬僮髯鞒龇磻?yīng)。二、輸出功能介紹游戲之所以受歡迎,主要一方面就在于它豐富多彩的輸出形式。一般的游戲輸出包括:聲音,畫面,文字等等。在“連珠球”游戲中,輸出的形式主要是圖形和文字。游戲程序用一個無色黑邊的方框作為棋盤,紅、黃、藍等七中不同顏色的圓形作為棋子。通過點擊移動棋子時,程序會迅速的在移動路徑上繪制彩色棋子,再繪制無色方框遮擋住,直到終點。這樣便能造成棋子移動的動畫效果。三、核心代碼//繪制彩球bool CGameSys::DrawBall(LPCELL_PROPERTY lpBall){if(lpBall == NULL)return false。HDC hdc = GetDC(g_hWnd)。HBRUSH hBrush, hOldBrush。HPEN hPen, hOldPen。hBrush = CreateSolidBrush(lpBallcBallColor())。hOldBrush = (HBRUSH)SelectObject(hdc, hBrush)。hPen = CreatePen(PS_SOLID, 1, lpBallcBallColor())。hOldPen = (HPEN)SelectObject(hdc, hPen)。Ellipse(hdc, wBallSize * (lpBallwCellPosX) + wGameX + wBallSize / 10, wBallSize * (lpBallwCellPosY) + wGameY + wBallSize / 10, 天津科技大學(xué) 2022 屆本科生畢業(yè)設(shè)計19wBallSize * (lpBallwCellPosX + 1) + wGameX wBallSize / 10, wBallSize * (lpBallwCellPosY + 1) + wGameY wBallSize / 10)。SelectObject(hdc, hOldBrush)。DeleteObject(hBrush)。SelectObject(hdc, hOldPen)。DeleteObject(hPen)。DeleteDC(hdc)。return true。}//繪制方塊bool CGameSys::DrawRect(LPCELL_PROPERTY lpRect){if(lpRect == NULL)return false。HDC hdc = GetDC(g_hWnd)。HBRUSH hBrush, hOldBrush。HPEN hPen, hOldPen。hBrush = CreateSolidBrush(WRITE)。hOldBrush = (HBRUSH)SelectObject(hdc, hBrush)。hPen = CreatePen(PS_SOLID, 1, BLACK)。hOldPen = (HPEN)SelectObject(hdc, hPen)。Rectangle(hdc, wBallSize * (lpRectwCellPosX) + wGameX, wBallSize * (lpRectwCellPosY) + wGameY, wBallSize * (lpRectwCellPosX + 1) + wGameX, wBallSize * (lpRectwCellPosY + 1) + wGameY)。SelectObject(hdc, hOldBrush)。DeleteObject(hBrush)。SelectObject(hdc, hOldPen)。DeleteObject(hPen)。DeleteDC(hdc)。return true。天津科技大學(xué) 2022 屆本科生畢業(yè)設(shè)計20}第四節(jié) 游戲總體介紹一、游戲界面布局游戲主要進行的場所是程序窗口中心由 10*10 個白色方塊組成的棋盤,棋盤右邊有3 個白色方格用于顯示下一回合將出現(xiàn)在棋盤上的顏色。整體布局如圖 32 所示:圖 32 “連珠球”游戲界面二、游戲?qū)崿F(xiàn)機制介紹棋盤用一個二維數(shù)組來保存,某位子沒有彩球時,對應(yīng)數(shù)組位置為 0,有彩球時對應(yīng)數(shù)組位置為該彩球的顏色值。顏色值宏定義在頭文件中:define W_BLACK 0define BLACK RGB(0,0,0)當(dāng)對單個格進行計算時,把該格內(nèi)容賦給一個結(jié)構(gòu)體:typedef struct _CELL_PRORERTY{int wCellPosX。 //單元格 X 坐標(biāo)int wCellPosY。 //單元格 Y 坐標(biāo)天津科技大學(xué) 2022 屆本科生畢業(yè)設(shè)計21int wCellColor。 //單元格顏色代碼_CELL_PRORERTY(int wX = 0, int wY = 0, int wColor = 0){wCellPosX = wX。wCellPosY = wY。wCellColor = wColor。}//把顏色代碼轉(zhuǎn)換為顏色COLORREF cBallColor(){switch(wCellColor){case W_BLACK:return BLACK。case W_YELLEW:return YELLEW。case W_RED:return RED。case W_GREEN:return GREEN。case W_BLUE:return BLUE。case W_PINK:return PINK。default:return WRITE。}}。}CELL_PROPERTY, *LPCELL_PROPERTY。第五節(jié) 游戲回合一、回合功能介紹天津科技大學(xué) 2022 屆本科生畢業(yè)設(shè)計22每個回合的開始,程序搜索整個棋盤,找到其中的空白,即沒有彩球的位置,然后在其中隨機找出三個位置,把上個回合確定的三種顏色的值放到數(shù)組中,接著重繪這三個位置,造成彩球突然出現(xiàn)的效果。如果本回合不能正常開始,即棋盤中剩余位置不足三個,則視為游戲結(jié)束。游戲結(jié)束時讀出原來的最高得分,與本次游戲比較,把較高的那個當(dāng)做歷史最高得分存入計算機中。同時清空游戲記錄。二、核心代碼//游戲回合開始bool CLinkBall::LinkBallBoutStar(){srand((unsigned)time(NULL))。vectorCELL_PROPERTY vLeaveCell。 //保存棋盤上剩余空位置vectorCELL_PROPERTY::iterator iter。LPCELL_PROPERTY cell = (LPCELL_PROPERTY)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(CELL_PROPERTY))。int i, j。//刷新剩余位置for(i = 0。 i LINK_MAP_SIZE。 ++i){for(j = 0。 j LINK_MAP_SIZE。 ++j){if(lpMap[i][j] != 0)continue。cellwCellPosX = i。cellwCellPosY = j。cellwCellColor = 0。(*cell)。}}if(() = 3){wLinkBallFlag = STATE_OVER。LinkBallGameOver()。天津科技大學(xué) 2022 屆本科生畢業(yè)設(shè)計23return false。}//初始化下一回合的顏色if(lpNextColor[0] == 0){for(i = 0。 i 3。 ++i){lpNextColor[i] = rand() % 5 + 1。}}//初始化這一回合球的位置for(i = 0。 i 3。 ++i){iter = () + (rand() % ())。iterwCellColor = lpNextColor[i]。lpMap[iterwCellPosX][iterwCellPosY] = lpNextColor[i]。lpNextColor[i] = rand() % 5 + 1。lpGameDrawBall(iter)。(iter)。}for(i = 11。 i 14。 ++i){cellwCellPosX = i。cellwCellPosY = 3。cellwCellColor = lpNextColor[i 11]。lpGameDrawBall(cell)。}return true。}第六節(jié) 尋路計算一、尋路分析尋路計算可以說是“連珠球”游戲的核心。每次試圖移動一個彩球時都會調(diào)用一次尋路算法。因為要以動畫的形式把路徑表示出來,所以算法要求:如果有通路則返回天津科技大學(xué) 2022 屆本科生畢業(yè)設(shè)計24true,并記錄最短路徑,沒有則返回 false。這樣的算法其實很多, 這 里 運 用 的 便 是 大 名 鼎鼎 的 Dijkstra 算 法 的 一 種 變 相 表 現(xiàn) 形 式 。Dijkstra 算 法 雖 然 能 找 出 最 短 路 徑 , 但 是 必 須 遍 歷 一 遍 , 效 率 上 不 盡 如 人 意 ?!斑B 珠 球 ”游 戲 是 這 樣 尋 找 最 短 路 徑 的 : 首 先 把 當(dāng) 前 棋 盤 復(fù) 制 一 個 副 本 , 其 中 有 彩球 的 位 置 置 為 1, 意 思 是 無 法 通 過 , 其 他 位 置 為 0。 然 后 把 起 始 點 置 為 1, 意 思 為 第一 步 。 然 后 把 1 周 圍 一 格 , 且 為 0 的 位 置 置 為 2, 意 思 是 第 二 步 。 以 此 類 推 , 把3,4,5 等 數(shù) 字 記 錄 到 棋 盤 的 副 本 上 。 最 后 , 如 果 終 點 位 置 有 值 則 停 止 計 算 , 并 從 終 點開 始 , 按 順 序 把 數(shù) 字 放 入 棧 中 , 求 得 最 短 路 徑 。 如 果 無 法 給 終 點 賦 值 , 則 說 明 沒 有通 路 。二、核心代碼//路徑尋找bool CLinkBall::LinkBallFindWay(CELL_PROPERTY cpFrom, CELL_PROPERTY cpTo){//判斷起終點是否符合條件:起始位置有球,終點沒有if(lpMap[][] == 0|| lpMap[][] != 0)return false。vectorCELL_PROPERTY vStepStack。 //暫時保存位置的堆棧vectorCELL_PROPERTY::iterator iterStack。//復(fù)制游戲地圖int lpTempMap[LINK_MAP_SIZE][LINK_MAP_SIZE]。for(int i = 0。 i LINK_MAP_SIZE。 ++i){for(int j = 0。 j LINK_MAP_SIZE。 ++j){if(lpMap[i][j] != 0)lpTempMap[i][j] = 1。elselpTempMap[i][j] = 0。}}int wAmount = 1。 //從起點開始移動步數(shù)int wStepX = 。int wStepY = 。天津科技大學(xué) 2022 屆本科生畢業(yè)設(shè)計25lpTempMap[wStepX][wStepY] = wAmount。(cpFrom)。//在復(fù)制的棋盤上做標(biāo)記while(!()){iterStack = ()。wStepX = iterStackwCellPosX。wStepY = iterStackwCellPosY。wAmount = lpTempMap[wStepX][wStepY] + 1。if(wStepX == amp。amp。 wStepY == ){break。}if(wSte
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1