【正文】
業(yè)設(shè)計過程中,她對我的畢業(yè)設(shè)計給予悉心的指導(dǎo),從開題到系統(tǒng)設(shè)計,從程序開發(fā)到論文的寫作,糾正了我的許多不成熟的想法,給我提出了許多建議,更在程序開發(fā)中遇到的最困難的時候給予開導(dǎo),給我繼續(xù)完成設(shè)計的信心。 經(jīng)過這段時間的學(xué)習(xí)與實踐,使我對游程的發(fā)展及現(xiàn)狀有了更深刻的認(rèn)識,并對Visual C++ 軟件有了一定程度的了解,學(xué)習(xí)了 Visual C++ 的相關(guān)知識及如何利用 Visual C++ 編譯程序,特別是以前從未接觸過的 MFC 應(yīng)用程序,從了解到學(xué)習(xí),再到最后的使用,我的收獲是不可用語言表達(dá)的。此游戲的隨機(jī)性做的不是很完美,所以在初級、中級和高級被調(diào)用之前都有刷新地圖的函數(shù)做保證,這也導(dǎo)致了代碼量很大。測試過程表明此游戲的功能基本正常,運行過程基本沒有問題。到測試后期,即使找到了錯誤,然而付出了過高的代價。比如有些游戲需要虛擬光驅(qū)的支持,但是有很多玩家用戶并不知道什么是虛擬光驅(qū)以及使用方法,所以制作好的游戲程序必須附有這些必要的軟件以及詳細(xì)的使用方法。如何能在浩如煙海的程序元素中找到有錯誤的那個元素,這是調(diào)試過程中最關(guān)鍵的技術(shù)問題。 在適當(dāng)時刻應(yīng)予以提示操作,在此游戲中應(yīng)做以下關(guān)鍵性提示操作:提示和重列道具是有次數(shù)限制的,當(dāng)提示和重列道具使用完后要有對話框提示,以避免玩家出現(xiàn)疑惑。打入的命令可以有不同方式,但每一條命令的解釋是清楚的,唯一的。它與認(rèn)知學(xué)、人機(jī)工程學(xué)、心理學(xué)等學(xué)科領(lǐng)域有密切的聯(lián)系 。判斷選中的方塊與前一方塊是否為同一方塊,并且不與上一次選定的方塊為同一方塊,然后才跳到下一步對兩個選定的方塊是否可以抵消的流程中去。還有一種情況就是當(dāng)游戲沒有進(jìn)行完的情況,當(dāng)時間都消耗盡或者已無生 命點數(shù)時出現(xiàn)死局時,即游戲地圖中沒有一組可以消除的方塊,則游戲結(jié)束,都應(yīng)給予提示游戲結(jié)束的原因,在計數(shù)器中添加相應(yīng)的數(shù)值進(jìn)行跟蹤,當(dāng)計數(shù)器也就是進(jìn)度條到達(dá)底線時,在游戲結(jié)束函數(shù)中采用觸發(fā)模式對游戲進(jìn)行終止,對無生命點數(shù)的判斷也采用相同的原理來實現(xiàn)。左通就是選定的兩個方塊的連線之間有其它方塊阻礙,但是通過它的左側(cè)可以將它們無障礙的連通,從而不構(gòu)成垂直折點的效果,而兩個 折點了連通方式中的其中一個類似的情況是,線的連通起碼要偏移一個方塊的距離來形成連通。而對于游戲區(qū)域的繪制 ,則通過設(shè)備環(huán)境中的圖形物件群的調(diào)用進(jìn)行直接繪制。 對于游戲區(qū)域,被抽象成一個有坐標(biāo)位置屬性平面,平面上零散地分布著若干小方塊,在繪制地圖的類中添加地圖數(shù)據(jù)成員變量,用于記錄動態(tài)分配出來的一維數(shù)組沈陽航空工業(yè)學(xué)院北方科技學(xué)院畢業(yè)設(shè)計(論文) 18 地圖空間的首地址,對于地圖中的某個小方塊的類型,可以用一個整型的 ID 來進(jìn)行識別。若成功則函數(shù)返回 TRUE,否則返回 FALSE。流程圖如圖 和圖 所示。這樣,初級、中級和高級就可區(qū)分開來了。游戲算法模塊,包括游戲的連接判斷算法以及游戲勝利判斷的算法。 系統(tǒng)的重點難點 此程序的重點是鼠標(biāo)的交互功能。作為一個設(shè)備接口,它可以使得開發(fā)人員在將信息輸出于屏幕或打印機(jī)之時無需考慮具體的目標(biāo)輸出的硬件特性,只需調(diào)用 GDI 庫的一些方法進(jìn) 行操作即可,而具體的繪圖工作由特定的設(shè)備驅(qū)動來完成,從而使開發(fā)人員能輕松地在不同的硬件中做圖像繪制輸出。如果通過初級、中級后進(jìn)入高級,并且地圖中的所有小方塊都被消除,則證明游戲已經(jīng)勝利,如果打破記錄,會彈 出提示。所選定的兩個方塊如果通過折點的方式連接,那么對于折點來說,每個折點必定有且至少有一個坐標(biāo)是和其一個目標(biāo)點是相同的,即折點必定在兩個目標(biāo)點所在的 X 方向或 Y 方向的直線上。至此,游戲地圖的設(shè)計完畢。 沈陽航空工業(yè)學(xué)院北方科技學(xué)院畢業(yè)設(shè)計(論文) 10 圖 功能模塊圖 算法 設(shè)計 游戲地圖數(shù)據(jù)的設(shè)計 對于整個游戲區(qū)域,可以把它看作一個是由信息顯示區(qū)域和圖案方塊游戲區(qū)域組成的地圖。 選項模塊中下分為提示子模塊、重列子模塊、暫停子模塊、音樂子模塊、音效子模塊以及積分榜子模塊。大致說來, Platform SDK 是以 Microsoft C/C++編譯器為核心(不是 Visual C++,看清楚了),配合 MASM,輔以其他一些工具和文檔資料。所以不要把Developer Studio 當(dāng)成 Visual C++, 它充其量只是 Visual C++的一個殼子而已。 雖然微軟公司推出了 Visual C++.NET(Visual C++),但它的應(yīng)用的很大的局限性,只適用于 Windows 2020,Windows XP 和 Windows 。 需求分析 關(guān)于連連看的功能描述如下:運行游戲并自動進(jìn)行初始化工作,將游戲區(qū)域上方作為信息顯示區(qū)域,并且通過菜單功能進(jìn)行操控,菜單功能包括初級、中級和高級可供選擇,暫停和退出游戲功能,提示和重列功能以及積分榜功能。因此所有在 Win32API 基礎(chǔ)上的應(yīng)用程序都是 Win32 應(yīng)用程序。在游戲過程中,我們不斷重復(fù)上面描述的功能,直到游戲的勝利結(jié)束。 操作可行性分析 連連看游戲 ,只要將相同 圖案 的兩張 方塊用 三根以內(nèi)的直線連在一起就可以消除,規(guī)則簡單容易上手。對于 菜單的制作通過默認(rèn)的框架結(jié)構(gòu)即可實現(xiàn),然后通過框架改造達(dá)到要求的條件??尚行苑治龅慕裹c是:要站在咨詢的 立場上;要有多種替代方案;對各種方案作經(jīng)濟(jì)比較;決定最佳投資時間和投資規(guī)模;提出可能實施的具體措施;著眼于資源的有效利用;站在中立客觀立場上得出結(jié)論。 ⑷ 選擇兩個圖案相同的方塊,并以不超過兩個轉(zhuǎn)彎的連線將它們連接起來,便可以消除這對方塊,每一局里玩家需要在規(guī)定的時間內(nèi)消除所有的方塊,當(dāng)完成任務(wù)后,才能進(jìn)入下一關(guān)卡 。同時,它還能為勝利者提供嶄新的畫面和音樂享受。 與單機(jī)游戲日漸衰落正相反的是 , 網(wǎng)絡(luò)游戲方興未艾 , 遍地開花 。改造成網(wǎng)絡(luò)游戲增強(qiáng)了該游戲的競技性,把原先單人在規(guī)定時間內(nèi)完 成游戲改變成了玩家間相互制約,相互競爭,可以多人組隊合作完成游戲,增強(qiáng)了游戲的技巧性、競技性、合作性。連連看游戲軟件在Windows 環(huán)境下用 VC++ 工具,基于 MFC 框架設(shè)計開發(fā),可以實現(xiàn)初始化界面,用戶使用鼠標(biāo)點擊 兩張相同圖案的 小方塊進(jìn)行 消除 , 并有多種地圖樣式和道具 選擇,豐富了游戲的娛樂性。 關(guān)鍵詞 : 連連看;單機(jī)游戲;游戲開發(fā) 沈陽航空工業(yè)學(xué)院北方科技學(xué)院畢業(yè)設(shè)計(論文) II Abstract Started from 2020, the game took one industry already gradually to accept for the Chinese populace, it brought before the economic efficiency and the social efficiency were people, has not estimated that when played takes one very important entertainment method is accepted by the populace, the game industry already was doomed to be able to bring the huge economic efficiency. Looked again and again the game is a section of classics small game, the simplicity of operator, suits all plays the family. Looked again and again the game software under the Windows environment with the VC++ tool, based on the MFC frame design development, may realize the initialization contact surface, the user use mouse clicks on two same designs the dice to carry on eliminates, and has many kinds of map styles and the stage prop choice, has enriched game39。 課題意義 開發(fā)連連看游戲程序的目的是為了滿足人們休閑的需要,在緊張工作之余休閑類的小游戲能夠給人帶來最大程度的放松,也可以增進(jìn)人們之間的交流,溝通,通過游戲還可以 認(rèn)識更多的朋友,也可以到達(dá)跨省、跨市,甚至跨國間人們互相娛樂的目的,而且小游戲還不會浪費計算機(jī)過多的資源,不像大型游戲占資源和牽扯精力,可謂工作娛樂兩不誤。這種 “ 游戲 ” 花樣繁多,但其特點都是利用計算機(jī)軟件事先設(shè)計好的 “ 分析 ” 、 “ 判斷 ” 能力反過來與人較量。在兩張想同圖片所能連通的所有路徑中,如果存在一條轉(zhuǎn)彎點不多于兩個的路徑,就可以消去;如果沒有,則不予處理。 ⑺ 每過一關(guān)時,生命點數(shù)、提 示點數(shù)都會增加,游戲自動統(tǒng)計玩家成績 。 Developer Studio 包含了一個文本編輯器、資源編輯器、工程 編譯工具、一個增量連接器、源代碼瀏覽器、集成調(diào)試工具以及一套聯(lián)機(jī)文檔( MSDN)。 經(jīng)濟(jì)可行性分析 開發(fā)本程序首先需要計算機(jī)一臺,奔騰 3 以上 CPU, 256MB 以上內(nèi)存 , 40G 以上硬盤即可以,大約五千元左右。多樣式的地圖,使玩家在各個游戲水平都可以尋找到挑戰(zhàn)的目標(biāo),長期地保持游戲的新鮮感。 分析結(jié)論 以上對于開發(fā)此程序分別從技術(shù)角度、經(jīng)濟(jì)角度和操作性角度進(jìn)行了全面的分沈陽航空工業(yè)學(xué)院北方科技學(xué)院畢業(yè)設(shè)計(論文) 6 析,技術(shù)上使用 Microsoft Visual C++ 進(jìn)行開發(fā),通過網(wǎng)絡(luò)下載回收成本,游戲畫面美觀、操作性強(qiáng),適合所有人不同年齡段的玩家進(jìn)行娛樂。這個類庫不光封裝了大多數(shù)的 GUI 系統(tǒng)對象和數(shù)據(jù)結(jié)構(gòu),還為開發(fā)者提供了開發(fā)框架,使原本復(fù)雜繁瑣的Windows 開發(fā)(尤其使界面開發(fā))變得非常簡單。 對于資源的需求,圖片資源必不可少,游戲中的小 方塊是一組圖片資源,選用兩組圖案和排列完全相同但是背景色不同的兩組圖片作為小方塊的初始狀態(tài)和選定狀態(tài),每張圖片共 20 個人物。 Visual C++ 由許多組件組成,包括編輯器、調(diào)試器以及程序向?qū)?AppWizard、類向?qū)?Class Wizard 等開發(fā)工具。同時,用 Visual C++編寫代碼也并不意味著一定要用 MFC,只要愿意,用 Visual C++來編寫 SDK 程序,或者使用 STL,ATL,一樣沒有限制。 保證了以上的配置,就能保證使用 Microsoft Visual C++ 在 Microsoft Windows XP 系統(tǒng)中開發(fā)連連看游戲程序環(huán)境的可行性。音樂子模塊和音效子模塊可以相互切換,用以清晰的顯示音樂和音效的效果。圖案方塊游戲區(qū)域被抽象成一個有坐標(biāo)位置屬性的平面,平面上零散的地分布著若干個小方塊,并且這些小方塊的人物圖案起碼是成對出現(xiàn)的,可以把游戲區(qū)域地圖用一個數(shù)組 llk_map[i][j]來表示, llk_map[i][j]是把地圖設(shè)計成一個動態(tài)分配的 int 整型一維數(shù)組,對地圖中的行列數(shù)的表達(dá),用一個轉(zhuǎn)換法即可。 ⑶ 這些將它們連接起來的直線線段的折點不超過兩個。 ⑶ 有兩個折點的垂直線段連接。提示功能用于提示玩家一組可解的小方塊,便于玩家可以繼續(xù)進(jìn)行游戲。在需要使用的時候,則可以從這些內(nèi)存位圖中直接去拷貝,并繪制到游戲區(qū)域內(nèi)存位圖中去。 此程序的難點是連連看游戲程序的連接線功能。同理,中級設(shè)為 9 10 的地圖,高級設(shè)為12 10 的地圖。游戲模塊中的退出子模塊調(diào)用程序退出語句 PostQuitMessage(0)即可,比較容易 實現(xiàn)。 PlaySound 函數(shù)的聲明為 BOOL PlaySound(LPCSTR pszSound, HMODULE hmod,DWORD fdwSound)。 幫助模塊設(shè)計與實現(xiàn) 幫助模塊的設(shè)計比較簡單,其下屬 子菜單功能相同,只是彈出對話框進(jìn)行提示,通過 AfxMessageBox 實現(xiàn),將必要的說明和提示信息寫入即可實現(xiàn)。把地圖設(shè)置 成動態(tài)分配的方式,目的是讓其空間可以根據(jù)行列數(shù)的需求動態(tài)地獲取,而對于實際大小不同的地圖空間即可。搜索以 p1, p2 的 x,y 方向四條直線(可能某兩條直線會重合)上的有限點,每次取兩點作為 z1, z2 ,驗證 p1 到 z1/z1 到 z2/z2到 p2 是否都能直線相連,是則連接成 立,這是兩個折點的情況。 首先,通過方塊的不同狀態(tài)確定所選位置是否有圖案,通過一個變量 PicIndex進(jìn)行記錄,如果有圖案則記錄位置,如果沒有則不進(jìn)行操作,然后選擇第二個位置,開始 一個折點連接方式判斷成功 成功 直連方式判斷成功 結(jié)束 兩個折點連接方式判斷成功 成功 消除所選的兩個圖案 恢復(fù)所選的圖案的原始狀態(tài) 沈陽航空工業(yè)學(xué)院北方科技學(xué)院畢業(yè)設(shè)計(論文) 20 如果此前所選位置有圖案的話,那么首先判斷第二次所選的小方塊是不是第一次所選的小方塊,通過坐標(biāo)進(jìn)行記錄和判斷,如果是就恢復(fù)原始狀態(tài),如果不是就進(jìn)行判斷了。 ⑴ 首先,利用鼠標(biāo)的當(dāng)前坐標(biāo)位置 point 對每個小單元方塊的寬度 和高度分別取模,獲取當(dāng)前鼠標(biāo)落點所在游戲區(qū)域