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

正文內(nèi)容

五子棋游戲程序設(shè)計(jì)與開發(fā)-在線瀏覽

2025-02-08 01:33本頁面
  

【正文】 質(zhì)上還是目標(biāo)開發(fā)需求比較低,加上具有成熟的軟硬件環(huán)境,所以在軟硬件的支出上比較低。當(dāng)開發(fā)完實(shí)際運(yùn)行后,將很大程度上提高,在為使用者帶來便利的同時(shí),也為的進(jìn)一步推廣創(chuàng)造了條件。從經(jīng)濟(jì)角度考慮,此。 綜上所述,此項(xiàng)目在技術(shù)、經(jīng)濟(jì)上是完全可行的。 ist 鏈表用于存儲(chǔ)棋子顯示信息,二維數(shù)組用于存儲(chǔ)棋盤十字交叉點(diǎn)信息。在畫圓示例中,主要通過兩個(gè)系統(tǒng)消息驅(qū)動(dòng)程序執(zhí)行,即 WM_LBUTTONDOWN 和WM_POINT。 //鼠標(biāo)坐標(biāo) x Y HIWORD lParam 。 //系統(tǒng)刷新函數(shù) 在鼠標(biāo)單擊左鍵的消息中,定義了 X 與 Y 兩個(gè)變量,分別用來存儲(chǔ)當(dāng)前鼠標(biāo)光標(biāo)在屏幕上的縱橫坐標(biāo)點(diǎn)。 InvalidateRect 函數(shù)用來傳遞到WM_POINT 消息模塊。 Ellipse 函數(shù)是繪制橢圓圖形的API 函數(shù),其中, HDC 是當(dāng)前窗口的句柄, X Y30 與 X+ Y+30 兩個(gè)坐標(biāo)點(diǎn)在窗體上確定了一個(gè)矩形區(qū)域,矩形區(qū)域的內(nèi)切圓就是顯示出來的結(jié)果。 圖 Ellipse 函數(shù)示意圖 通過上面的方法就可以在窗體上利用鼠標(biāo)在指定區(qū)域畫出一個(gè)圓圈,此實(shí)例是五子棋程序設(shè)計(jì)的基本思路。在此思想的指導(dǎo)下,就可以通過棋子結(jié)構(gòu)的屬性信息,以及棋盤十字交叉點(diǎn)中的屬性進(jìn)行程序的設(shè)計(jì)與開發(fā),使其滿足五子棋的要求與功能。通過這個(gè)階段的工作將劃分出組成系統(tǒng)的物理元素――程序、文件、數(shù)據(jù)庫、 人工過程和文檔等等,但是每個(gè)物理元素仍然處于黑盒子級(jí),這些黑盒子里的具體內(nèi)容將在以后仔細(xì)設(shè)計(jì)。 開始游戲模塊,主要是開始游戲與設(shè)置開始游戲的方式―雙人游戲與重新開始。 系統(tǒng)幫助模塊,主要是對系統(tǒng)進(jìn)行的進(jìn)一步的功能介紹、版本信息、程序說明等文字介紹性的信息,幫助游戲玩家進(jìn)一步對五子棋游戲程序的了解。 文件組織結(jié)構(gòu) 歡樂五子棋的文件組織結(jié)構(gòu)如下圖 所示。 詳細(xì)設(shè)計(jì) 棋盤類設(shè)計(jì) 在五子棋游戲設(shè)計(jì)與開發(fā)的過程中,首先需要解決一個(gè)問題,那就是如何將棋子下到棋盤相應(yīng)的十字交叉點(diǎn)上? 想要解決這個(gè)問題,我們首先需要建立一個(gè)自定義數(shù)據(jù)結(jié)構(gòu),棋子的結(jié)構(gòu)體( struct Chess),用來定義黑白棋子的相關(guān)屬性及信息。有了棋子類型的結(jié)構(gòu),我們就可以構(gòu)建一個(gè) 19*19 規(guī)格的棋盤,這個(gè)棋盤我們可以通過一個(gè)類來封裝。 這個(gè)二維數(shù)組當(dāng)然是上面已經(jīng)說明的棋子類型,以后在棋盤上下過的棋子都會(huì)標(biāo)記在這個(gè)二維數(shù)組中。棋子和棋盤的確立,使得我們解決上面的疑問變得很容易。如圖 所示: 圖 棋盤類示意圖 程序初始化設(shè)計(jì) 程序初始化就是將棋盤上所有十字交叉點(diǎn)的落子標(biāo)志 Tag,顏色標(biāo)識(shí) color,位置信息 Seat 進(jìn)行初始化。如圖 所示: 圖 棋盤初始化示意圖 判斷勝負(fù)算法 五子棋中勝負(fù)的判斷規(guī)則很簡單,因?yàn)槲遄悠逵纸小拔暹B珠”,顧名思義就是五個(gè)相同顏色的棋子哪一方玩家先連成一串,則為勝利。在程序中我們可以通過每下一步棋,對棋盤進(jìn)行一次遍歷,以便檢測在這四個(gè)方向上有沒有顏色標(biāo)識(shí)相同的五個(gè)棋子連在一起,如果有,則返回相應(yīng)結(jié)果。如圖 所示: 圖 勝負(fù)判斷示意圖 能夠取得游戲勝利的四個(gè)方向,如圖 所示: 圖 勝負(fù)判斷方向示意圖 悔棋功能設(shè)計(jì) 悔棋功能的實(shí)現(xiàn)分為二部分,首先是如何悔棋之后,使前一步棋子消失;然后是如何實(shí)現(xiàn)悔棋之后進(jìn)行該棋子初始化。具體流程圖,如圖 所示: 圖 悔棋功能流 程圖 第二個(gè)問題,如何實(shí)現(xiàn)悔棋之后的初始化。以便實(shí)現(xiàn)棋子位置信息和顏色信息的初始化操作。 //利用 LIST 存取 棋子信息,實(shí)現(xiàn)悔棋功能 ?... 中實(shí)現(xiàn)邏輯功能: 在 WM_LBUTTONDOWN 單擊鼠標(biāo)左鍵下棋的消息中: InitChessB_back [i][j] 。 //將棋子二維坐標(biāo) i 值存入二維數(shù)組第一列 xArray[px][1] j。 //存完之后 px 后移 else px 0。i 17。j 17。 iter! InitChessB 。amp。 else if iter GetTag 1 amp。 iter GetColos 2 //繪制白色棋子 BitBlt bufferDC, iter , iter , 20, 19, hdcMem,cxSource20, 0, SRCCOPY 。 //定義一個(gè)全局窗口句柄 HACCEL hAccel。 //定義一個(gè)菜單句柄 static int over 0。 //當(dāng)前實(shí)例句柄 HDC hdc。 i 17。 j 17。 chessboard[i][j]. 22* i+1 +91。 chessboard[i][j].colos 0。hInstance,HWND amp。 //判斷勝負(fù)函數(shù) 說明: judge 方法,傳入當(dāng)前實(shí)例句柄與窗體句柄,每下一步棋子都會(huì)調(diào)用 judge 方法進(jìn)行勝負(fù)判斷。 消息機(jī)制和主界面實(shí)現(xiàn) 消息機(jī)制說明 消息機(jī)制是 windows 程序中核心內(nèi)容, windows 各種窗口程序正是通過各種消息事件來傳遞信息,在五子棋中主要包含了鼠標(biāo)單擊 事件,按鈕點(diǎn)擊事件,菜單選擇事件以及各種窗體消息 WindowsMessage 消息: WM_COMMAND、 WM_CREATE、WM_LBUTTONDOWN、 WM_POINT 系統(tǒng)消息,通過這些消息 windows 系統(tǒng)給窗口發(fā)送這些消息,以便執(zhí)行相應(yīng)的操作。 主界面設(shè)計(jì) ( 1)棋盤界面的設(shè)計(jì) 五子棋小游戲中棋盤界面采用的是一張 BMP格式的資源圖片,如圖 23所示,它包括了棋盤界面與棋子樣式,這張圖片在窗口創(chuàng)建時(shí) WM_CREATE 整體加載到程序中,相關(guān)代碼: hBitmap LoadBitmap hInstance, LPCTSTR IDB_BITMAP1 。相關(guān)代碼如下: BitBlt bufferDC, 0, 75, cxSource20, cySource, hdcMem, 0, 0, SRCCOPY 。 五子棋游戲程序的棋盤界面素材如下圖 所示: 圖 棋盤素材效果圖 ( 2)游戲菜單的設(shè)計(jì) 五子棋游戲中的菜單設(shè)計(jì)采用傳統(tǒng) Windows 窗體下拉菜單風(fēng)格,如下圖 所示。 程序游戲菜單設(shè)計(jì)如下圖 所示: 圖 菜單效果圖 ( 3)記分牌與狀態(tài)欄設(shè)計(jì) 為了增加游戲的可玩性與實(shí)用性在主界面中加入了狀態(tài)欄與積分牌區(qū)域,狀態(tài)欄主要是顯示當(dāng)前游戲狀態(tài)包括目前游戲所進(jìn)行的局?jǐn)?shù)和提示由哪一方進(jìn)行下棋操作,以及顯示每一局游戲的結(jié)果;記分牌則記錄了雙方玩家目前的勝負(fù)情況。邏輯上是通過建立 2 個(gè)表示黑方勝利局?jǐn)?shù)和白方勝利局?jǐn)?shù)的變量 blackWin和 whiteWin分別在一方獲勝之后進(jìn)行 自加累計(jì),然后通過 itoa 將整形裝換為字符串,用 TextOut 顯示在窗口上,總局?jǐn)?shù)顯示則是通過將 winBlack 和 winWrite 加起來得到總局?jǐn)?shù),界面效果如下圖 所示: 圖 狀態(tài)欄和記分牌效果圖 5 測試與運(yùn)行分析 程序測試 與開發(fā)過程類似,測試過程也必須分步驟進(jìn)行,每個(gè)步驟在邏輯上是前一個(gè)步驟地繼續(xù)。因此,大型軟件系統(tǒng)的測試的基本層次主要有: ( 1)單元測試 單元測試的用例從單元詳細(xì)設(shè)計(jì)中導(dǎo)出。 ( 2)集成測試 在這個(gè)測試步驟中所發(fā)現(xiàn)的往往是概要設(shè)計(jì)的錯(cuò)誤。一般來說,系統(tǒng)測試是功能性測試,不是結(jié)構(gòu)性測試。實(shí)現(xiàn)人與電腦對弈。 結(jié) 論 通過畢業(yè)設(shè)計(jì)對大學(xué)四年所學(xué)知識(shí)體系,進(jìn)行了一次很好的歸納總結(jié)。都是在不斷完善和改進(jìn)的過程中進(jìn)行的。從如何用鼠標(biāo)將圓圈圖案畫到屏幕上,到如何判斷勝負(fù),從如何傳遞一個(gè)指針,到如何向窗口發(fā)送一個(gè)消息,解決了各種各樣的問題,使我對Windows 程序設(shè)計(jì)有了更加深刻理解和認(rèn)識(shí)。即使是對于 一個(gè)并不大的程序,代碼的組織都是非常重要的,因?yàn)檫@關(guān)系到日后的維護(hù)以及擴(kuò)展。但是對于系統(tǒng)的架構(gòu),卻完全是自己的事情,幾千上萬行的代碼需要通過合適的方法組織起來,使程序員編寫代碼更加有條理,更加符合軟件工程的標(biāo)準(zhǔn),這才是最重要的。 感謝我的導(dǎo) 師李忍?hào)|老師,您認(rèn)真的指導(dǎo)使得我能完成畢業(yè)設(shè)計(jì)。 感謝我的 C++老師楊和平老師,在您的教授下讓我掌握了 C++語言以及常用的數(shù)據(jù)結(jié)構(gòu),將我領(lǐng)進(jìn)代碼世界。 感謝 231 宿舍的所有兄弟,尤其是曹銘和王亮,謝謝你們在我離校期間為我所作的一切。 感謝 Rockstar Games 公司,你們的 Grand Theft Auto: Vice City 伴我度過 了下班后的無聊時(shí)光。 //棋點(diǎn)坐標(biāo) int tag。 //黑白標(biāo)志 void settag int n tag n。 int GetTag return tag。 。 //棋盤初始化 void ReInit 。hInstance,HWND amp。 //判斷勝 負(fù) Chess chessboard[19][19]。 //利用 LIST 存取棋子信息,實(shí)現(xiàn)悔棋功能 。 i 17。 j 17。 chessboard[i][j]. 22* j+1 +91。 chessboard[i][j].color 0。hInstance,HWND amp。 int j。 i 15。 j 15。amp。amp。amp。amp。 else if chessboard[i][j].color 2 amp。 chessboard[i][j+1].color 2 amp。 chessboard[i][j+2].color 2 amp。 chessboard[i][j+3].color 2 amp。 chessboard[i][j+4].color 2 return 2。 i 15。 j 15。amp。amp。amp。amp。 else if chessboard[i][j].color 2 amp。 chessboard[i+1][j].color 2 amp。 chessboard[i+2][j].color 2 amp。 chessboard[i+3][j].color 2 amp。 chessboard[i+4][j].color 2 return 2。 i 15。 j 15。amp。amp。amp。amp。 else if chessboard[i][j].color 2 amp。 chessboard[i+1][j+1].color 2 amp。 chessboard[i+2][j+2].color 2 amp。 chessboard[i+3][j+3].color 2 amp。 chessboard[i+4][j+4].color 2 return 2。 i 19。 j 15。amp。amp。amp。amp。 else if chessboard[i][j].color 2 amp。 chessboard[i1][j+1].color 2 amp。 chessboard[i2][j+2].color 2 amp。 chessboard[i3][j+3].color 2 amp。 chessboard[i4][j+4].color 2 return 2。 include BOOL InitApplication HINSTANCE hInstance 。 LRESULT CALLBACK WndProc HWND,UINT,WPARAM,LPARAM 。 //About 窗口函數(shù)聲明 HWND hWnd。 //強(qiáng)制轉(zhuǎn)歡 TEXT HACCEL hAccel。 //聲明 InitChessBoard對象 int WINAPI WinMain HINSTANCE hInstance,HINSTANCE hPrevInstance ,PSTR szCmdLine,int iCmdShow MSG msg。 if !InitInstance hInstance, iCmdShow return FALSE 。msg, NULL, 0, 0 //主消息循環(huán) if !TranslateAccelerator hWnd, hAccel, amp。msg 。msg 。//等價(jià)于 return 0。//窗口對象 //初始化窗口類 CS_HREDRAW | CS_VREDRAW。 0。 hInstance。 LoadCursor NULL,IDC_ARROW 。//hBr NULL。 return
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1