




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文I摘要現(xiàn)如今,不管在哪個(gè)小游戲網(wǎng)站上,“連連看”游戲總是受廣大玩家所喜愛(ài)。不分男女老少,適合大眾的集體休閑、趣味、益智和娛樂(lè)于一體的經(jīng)典小游戲。其老少皆宜的特點(diǎn)使得該款小游戲常常在游戲排名的前幾位。本游戲?qū)崿F(xiàn)了主菜單和界面的顯示、時(shí)間限制功能、能夠根據(jù)規(guī)則消除相同棋子、游戲升級(jí)功能、消除提示功能、棋子換盤(pán)功能、英雄榜的更新并且支持背景音樂(lè)播放功能。每消去一對(duì)棋子,游戲限制時(shí)間自動(dòng)延長(zhǎng)。當(dāng)時(shí)間全部消耗完的時(shí)候,游戲結(jié)束。在有限的時(shí)間內(nèi),消除全部棋子,自動(dòng)升級(jí),并重新開(kāi)始新一個(gè)等級(jí)的游戲。每升一個(gè)等級(jí),游戲的時(shí)間消耗就會(huì)變得更快。簡(jiǎn)潔美觀的外表,加上引人入勝的功能,使得這款
2、小游戲的可玩性、娛樂(lè)性大大增加。關(guān)鍵字:連連看;娛樂(lè);升級(jí);棋子;可玩性沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文IIABSTRACT Nowadays Link Game is preferred by game players as its seen on almost every mini-game website. Link Game is a classic game with the combination of relaxation, intelligence, entertainment and fun. And its very popular among people at all ages
3、, which is why it ranks before many other mini games. The main menu of the game is just on the corner of the viewing screen which makes it easy to operate the whole picture. And it has functions of time limit, game upgrading, the removal of hint, the change of images and the update of hero rank. It
4、also has background music. Every time a pair of images which have the same picture is eliminated, it adds some time accordingly. When time is up, the game is over. If all the images are eliminated within the game time, it upgrades automatically and it goes into another level of the game. Every step
5、forward the time become less. The concision of the game and its ingenious functions make it a successful mini game which more playable and more entertaining.Keyword:linking game; entertainment; upgrade; pawn;operability沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文III目錄1 緒論.11.1 開(kāi)發(fā)背景.11.2 目的和要求.11.3 國(guó)內(nèi)外研究現(xiàn)狀.21.4 可行性分析.31.5 分析結(jié)論.41.6
6、 方案論證.42 開(kāi)發(fā)技術(shù)及開(kāi)發(fā)環(huán)境.62.1 Visual Studio 6.0 簡(jiǎn)介.62.2 Visual C+開(kāi)發(fā)工具的特點(diǎn).62.3 運(yùn)行環(huán)境.73 系統(tǒng)需求分析及設(shè)計(jì).83.1 系統(tǒng)功能需求.83.2 概要設(shè)計(jì).103.2.1 總體設(shè)計(jì).103.2.2 游戲菜單結(jié)構(gòu)的設(shè)計(jì).113.3 連連看游戲的詳細(xì)設(shè)計(jì).113.3.1 游戲各功能的設(shè)計(jì)描述.113.4 相關(guān)技術(shù)與重點(diǎn)難點(diǎn).133.4.1 相關(guān)技術(shù).133.4.2 系統(tǒng)的重點(diǎn)難點(diǎn).143.5 游戲各功能流程圖.153.6 主對(duì)話框的設(shè)計(jì)與實(shí)現(xiàn).193.6.1 主對(duì)話框的設(shè)計(jì).193.6.2 主對(duì)話框的實(shí)現(xiàn).193.7 棋子類的設(shè)計(jì)
7、與實(shí)現(xiàn).203.7.1 棋子類的設(shè)計(jì).203.7.2 棋子類的實(shí)現(xiàn).213.8 人機(jī)界面設(shè)計(jì).234 連連看游戲的調(diào)試.254.1 主界面和界面顯示功能調(diào)試.254.2 消除相同棋子的功能調(diào)試.264.3 游戲升級(jí)功能的調(diào)試.274.4 消除提示功能調(diào)試.284.5 棋子換盤(pán)功能的調(diào)試.294.6 消除提示功能的調(diào)試.30結(jié)論.31致謝.33參考文獻(xiàn).34附錄 A 英語(yǔ)原文.35沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文IV附錄 B 漢語(yǔ)翻譯.37沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文01 緒論1.1 開(kāi)發(fā)背景連連看的主要游戲規(guī)則來(lái)源于“四川麻將”,是給一堆圖案中的相同圖案進(jìn)行配對(duì)的簡(jiǎn)單游戲。網(wǎng)絡(luò)小游戲制作的目的是滿足了人們
8、休閑的需要,在緊張工作之余休閑類的小游戲能夠給人帶來(lái)最大程度的放松,也可以增進(jìn)人們之間的交流,溝通,通過(guò)游戲還可以認(rèn)識(shí)更多的朋友,也可以到達(dá)跨省、跨市,甚至跨國(guó)間人們互相娛樂(lè)的目的。通過(guò)此次課題的設(shè)計(jì),學(xué)習(xí)和掌握如何制作一款游戲軟件,熟悉游戲軟件制作的步驟,為以后的學(xué)習(xí)和工作打下基礎(chǔ)。1.2 目的和要求連連看游戲主要是鼠標(biāo)兩次點(diǎn)擊的圖片能否消去的問(wèn)題。當(dāng)前,前提是點(diǎn)擊兩張相同的圖片,若點(diǎn)擊的是同一張圖片或者兩張不同的圖片,則不予處理。在兩張想同圖片所能連通的所有路徑中,如果存在一條轉(zhuǎn)彎點(diǎn)不多于兩個(gè)的路徑,就可以消去;如果沒(méi)有,則不予處理。此程序的課題內(nèi)容及目標(biāo)如下: 設(shè)計(jì)一款適合大眾的充滿集合
9、娛樂(lè)、休閑、趣味益智和娛樂(lè)于一體的單機(jī)小游戲。功能完善,可玩性高,界面美觀,操作簡(jiǎn)單。(1) 能實(shí)現(xiàn)主菜單和界面的顯示(2) 隨機(jī)生成游戲界面,具有時(shí)間限制功能。(3) 方塊選中后圖片要有突出顯示。(4) 選擇兩個(gè)圖案相同的方塊,并以不超過(guò)兩個(gè)轉(zhuǎn)彎的連線將它們連接起來(lái),便可以消除這對(duì)方塊,每一局里玩家需要在規(guī)定的時(shí)間內(nèi)消除所有的方塊,當(dāng)完成任務(wù)后,才能進(jìn)入下一關(guān)卡。(5)當(dāng)出現(xiàn)無(wú)解的局面時(shí),可以重新?lián)Q牌,當(dāng)時(shí)間為 0 時(shí)游戲結(jié)束。(6)選擇提示功能時(shí),游戲自動(dòng)突出顯示兩個(gè)可以消除的方塊,并且提示次數(shù)減少一次。(7) 英雄榜的更新,當(dāng)玩家當(dāng)前的記錄高于先前的記錄,在游戲結(jié)束時(shí),自動(dòng)更新英雄榜。(
10、8)支持背景音樂(lè)播放功能。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文11.3 國(guó)內(nèi)外研究現(xiàn)狀電腦游戲在我國(guó)起步雖晚,發(fā)展卻并不為慢。作為后來(lái)者,國(guó)內(nèi)業(yè)界同行們的信心、勇氣和緊迫感曾經(jīng)著實(shí)令玩家們欣慰。讓我們記住這些在國(guó)產(chǎn)游戲事業(yè)上曾經(jīng)灑過(guò)汗水的年輕人,正是他們的創(chuàng)新精神和勇氣,才使得國(guó)產(chǎn)游戲在并不寬松的環(huán)境下蓬勃發(fā)展至今。與單機(jī)游戲日漸衰落正相反的是,網(wǎng)絡(luò)游戲方興未艾,遍地開(kāi)花。但是,與此同時(shí), 我們也看到了,在繁榮的背后,潛在的危機(jī), 一是來(lái)自國(guó)內(nèi)游戲制作者在游戲制作理念上的不足和困乏,另外就是資金問(wèn)題,這兩方面與歐美游戲制作差距很大。在美國(guó),集中了許多計(jì)算機(jī)軟件的設(shè)計(jì)人才,他們工作之余,時(shí)常喜愛(ài)編一種能與人
11、斗智的“游戲”,以此來(lái)鍛煉編程的能力。這種“游戲”花樣繁多,但其特點(diǎn)都是利用計(jì)算機(jī)軟件事先設(shè)計(jì)好的“分析”、“判斷”能力反過(guò)來(lái)與人較量。由于不斷修改更新,使計(jì)算機(jī)的“智力”水平與人難分高低。 連連看這款游戲來(lái)源于中國(guó),現(xiàn)在已風(fēng)靡全世界。連連看游戲從出現(xiàn)到現(xiàn)在已經(jīng)更新了好多版本,比較知名的有蔬果連連看、水晶連連看、阿達(dá)連連看和寵物連連看等不同版本,現(xiàn)在已經(jīng)有 FLASH 版本,游戲起來(lái)更加方便,無(wú)需安裝,打開(kāi)網(wǎng)頁(yè)即可游戲,最近更是出現(xiàn)網(wǎng)絡(luò)版本,QQ 連連看就是這樣一款連連看游戲的網(wǎng)絡(luò)版本,可以通過(guò)網(wǎng)絡(luò)與其他玩家一起進(jìn)行游戲,而且地圖更為繁多,道具更為豐富,極大地增強(qiáng)了游戲的樂(lè)趣。今天,當(dāng)我們回顧
12、電子游戲最初為什么能吸引人,我們不難悟出這樣的道理:電子游戲滿足了人們對(duì)競(jìng)爭(zhēng)和對(duì)抗的渴望,它總是給予競(jìng)爭(zhēng)者以新的難題。同時(shí),它還能為勝利者提供嶄新的畫(huà)面和音樂(lè)享受。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文21.4 可行性分析可行性分析(feasibility study ),世界上普遍采用的一種研究工程項(xiàng)目是否可行的科學(xué)。目的:它通過(guò)各種有效的方法,對(duì)工程項(xiàng)目進(jìn)行分析,從技術(shù)、經(jīng)濟(jì)、財(cái)務(wù)等方面加以評(píng)價(jià),最終給投資決策者提供是否選擇該項(xiàng)目進(jìn)行投資的依據(jù)??尚行苑治龅慕裹c(diǎn)是:要站在咨詢的立場(chǎng)上;要有多種替代方案;對(duì)各種方案作經(jīng)濟(jì)比較;決定最佳投資時(shí)間和投資規(guī)模;提出可能實(shí)施的具體措施;著眼于資源的有效利用;站在中
13、立客觀立場(chǎng)上得出結(jié)論。經(jīng)濟(jì)可行性:開(kāi)發(fā)本程序首先需要計(jì)算機(jī)一臺(tái),奔騰 3 以上 CPU,256MB 以上內(nèi)存,40G 以上硬盤(pán)即可以,大約五千元左右。軟件方面,正版 Microsoft Visual C+ 6.0光盤(pán)價(jià)格為五千二百元,正版操作系統(tǒng) Windows XP 簡(jiǎn)體中文專業(yè)版價(jià)格大約在兩千元左右,購(gòu)買(mǎi)書(shū)籍二百元,開(kāi)發(fā)此程序需要的時(shí)間大約需要三個(gè)月左右的時(shí)間,其中所消耗的人工費(fèi)每月一千元,共計(jì)三千元,所以開(kāi)發(fā)此游戲程序的成本共計(jì)一萬(wàn)五千元四百元左右。開(kāi)發(fā)出的產(chǎn)品倘若在因特網(wǎng)下載,一個(gè)注冊(cè)碼費(fèi)用為十元,只需下載一千五百四十次即可收回成本。在高速發(fā)展的信息時(shí)代,一千五百四十次的下載不成問(wèn)題。
14、所以,從經(jīng)濟(jì)角度來(lái)講,開(kāi)發(fā)本程序是可行的。 技術(shù)可行性:設(shè)計(jì)連連看游戲程序需要通過(guò)菜單和鼠標(biāo)對(duì)游戲進(jìn)行操控,游戲的界面需要大量的繪圖機(jī)制,以達(dá)到操作簡(jiǎn)單、界面美觀的目的。Visual C+6.0 為用戶提供了一個(gè)可視化、通用的應(yīng)用程序集成開(kāi)發(fā)環(huán)境Developer Studio(也俗稱 Visual Studio)。Developer Studio 包含了一個(gè)文本編輯器、資源編輯器、工程編譯工具、一個(gè)增量連接器、源代碼瀏覽器、集成調(diào)試工具以及一套聯(lián)機(jī)文檔(MSDN)。通過(guò)Developer Studio,開(kāi)發(fā)人員可以完成項(xiàng)目工程的創(chuàng)建、程序的編輯、修改、運(yùn)行和調(diào)試等各種操作。Developer
15、 Studio 采用標(biāo)準(zhǔn)的多窗口用戶界面,提供了大量實(shí)用工具以支持可視化編輯的特性,包括項(xiàng)目工作區(qū)、AppWizard(應(yīng)用程序向?qū)В?、Class(類向?qū)ВizardBar(向?qū)Чぞ邨l)、ComponentGallery(組建畫(huà)廊)等。在ComponentGallery(組建畫(huà)廊)中,Visual C+6.0 為用戶提供了一組常用的應(yīng)用程序組件,分為兩類,分別是 Developer Studio Components 和 Register ActiveX Controls。其中 Developer Studio Components 包含了經(jīng)常使用的一些標(biāo)準(zhǔn)的 Windows 應(yīng)用程序特性
16、,例如,彈出菜單、剪貼板、對(duì)話條、啟動(dòng)畫(huà)面、定制狀態(tài)條、日積月累對(duì)話框等,所以,可以通過(guò) ComponentGallery 實(shí)現(xiàn)菜單制作、鼠標(biāo)操控等功能,而繪圖功能也可以沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文3通過(guò) Visual C+6.0 為用戶提供的 GDI 庫(kù)完全實(shí)現(xiàn)。對(duì)于菜單的制作通過(guò)默認(rèn)的框架結(jié)構(gòu)即可實(shí)現(xiàn),然后通過(guò)框架改造達(dá)到要求的條件。鼠標(biāo)交互功能的實(shí)現(xiàn)可以通過(guò)對(duì)鼠標(biāo)左鍵被按下時(shí)觸發(fā)的命令消息進(jìn)行攔截,并重新寫(xiě)該消息的處理函數(shù)實(shí)現(xiàn)。并且不會(huì)的地方可以問(wèn)問(wèn)老師或者同學(xué),此外開(kāi)發(fā)該游戲的難度不大。因此,技術(shù)上是可行的。使用可行性:連連看游戲 ,只要將相同圖案的兩張方塊用三根以內(nèi)的直線連在一起就可以消
17、除,規(guī)則簡(jiǎn)單容易上手。 游戲速度節(jié)奏快,畫(huà)面清晰可愛(ài),適合不同年齡的玩家。豐富的道具加入,增強(qiáng)游戲的競(jìng)爭(zhēng)性。多樣式的地圖,使玩家在各個(gè)游戲水平都可以尋找到挑戰(zhàn)的目標(biāo),長(zhǎng)期地保持游戲的新鮮感。使用新穎的連擊積分規(guī)則,兩秒內(nèi)連擊次數(shù)越多得分越高,并且有提示和重列次數(shù)的獎(jiǎng)勵(lì),使游戲玩家在體會(huì)連擊的快感后,同時(shí)對(duì)自己的游戲速度,更有挑戰(zhàn)性和追求極速的欲望。對(duì)于用戶交互方式,這里選擇鼠標(biāo)交互方式。下面簡(jiǎn)單描述一下通過(guò)實(shí)現(xiàn)的功能。鼠標(biāo)選取兩個(gè)圖案方塊后,程序?qū)⒆詣?dòng)判斷所選定的兩個(gè)方塊是否能進(jìn)行抵消操作,能進(jìn)行則抵消。在游戲過(guò)程中,我們不斷重復(fù)上面描述的功能,直到游戲的勝利結(jié)束。可以說(shuō),對(duì)于玩家操作起來(lái)很容
18、易上手,即使是年齡大的玩家,也會(huì)通過(guò)很短時(shí)間的適應(yīng)而熟悉連連看游戲的操作。 所以,從操作可行性角度分析開(kāi)發(fā)此程序是可行的。硬件方面:具備操作系統(tǒng) windows2000 版本以上。內(nèi)存要求 512M 以上,硬盤(pán)10G 以上,CPU 200MHZ 以上,顯卡緩存 128M 以上的 pc 機(jī)。1.5 分析結(jié)論以上對(duì)于開(kāi)發(fā)此程序分別從技術(shù)角度、經(jīng)濟(jì)角度和操作性角度進(jìn)行了全面的分析,技術(shù)上使用 Microsoft Visual C+ 6.0 進(jìn)行開(kāi)發(fā),通過(guò)網(wǎng)絡(luò)下載回收成本,游戲畫(huà)面美觀、操作性強(qiáng),適合所有人不同年齡段的玩家進(jìn)行娛樂(lè)??v上所述,以 Microsoft Visual C+ 6.0 為工具開(kāi)
19、發(fā)連連看游戲的方案是可行的。1.6 方案論證在分析設(shè)計(jì)階段,有兩種方案可供選擇: 沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文4 使用 Win32 應(yīng)用程序框架。Win32 是 Windows 的一個(gè)子系統(tǒng),也是最重要的一個(gè)。(還有 POSIX 子系統(tǒng)和OS/2 子系統(tǒng))Win32 子系統(tǒng)為應(yīng)用程序提供了使用系統(tǒng)資源的接口 Win32 API,Win32 API 是 Windows 用戶態(tài)下應(yīng)用程序編程的基礎(chǔ)。因此所有在 Win32API 基礎(chǔ)上的應(yīng)用程序都是 Win32 應(yīng)用程序。 使用 MFC 應(yīng)用程序框架。MFC(Microsoft Foundation Classes)微軟基礎(chǔ)類庫(kù)。這個(gè)類庫(kù)不光封裝了大多
20、數(shù)的 GUI 系統(tǒng)對(duì)象和數(shù)據(jù)結(jié)構(gòu),還為開(kāi)發(fā)者提供了開(kāi)發(fā)框架,使原本復(fù)雜繁瑣的Windows 開(kāi)發(fā)(尤其使界面開(kāi)發(fā))變得非常簡(jiǎn)單。MFC 是對(duì) API 的封裝,因此它能實(shí)現(xiàn)的功能只是 API 的子集。對(duì)于追求系統(tǒng)底層相關(guān)而且效率高的程序而言,MFC 不夠靈活而且開(kāi)銷也大。但對(duì)于圖形界面開(kāi)發(fā),如果沒(méi)有 MFC 而使用 API 的話那么開(kāi)發(fā)起來(lái)非常困難。 在游戲的編寫(xiě)中需要大量的圖形界面開(kāi)發(fā),所以我們放棄第一種方案的設(shè)計(jì)思想,參考網(wǎng)絡(luò)上流行的連連看的游戲規(guī)則,采用第二種方案設(shè)計(jì)。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文52 開(kāi)發(fā)技術(shù)及開(kāi)發(fā)環(huán)境2.1 Visual Studio 6.0 簡(jiǎn)介在全世界,Windows
21、操作系統(tǒng)被廣泛使用,Windows 平臺(tái)下的軟件開(kāi)發(fā)也成為軟件開(kāi)發(fā)人員的必備技能。Visual Studio 系列開(kāi)發(fā)系統(tǒng)一直是在 Windows 操作系統(tǒng)下進(jìn)行軟件開(kāi)發(fā)的一套非常實(shí)用的工具集。其可以用來(lái)開(kāi)發(fā)多種 Windows 下的軟件項(xiàng)目,包括 Windows 應(yīng)用程序、動(dòng)態(tài)鏈接庫(kù)、Windows 服務(wù)、office 集成開(kāi)發(fā)、數(shù)據(jù)庫(kù)項(xiàng)目開(kāi)發(fā)等。Visual C+ 6.0 是微軟公司開(kāi)發(fā)的面向 Windows 程序設(shè)計(jì)的一整套開(kāi)發(fā)環(huán)境Visual Studio 中的一種開(kāi)發(fā)工具。同時(shí)也是微軟公司向 Windows 操作系統(tǒng)(包括Windows NT、Windows2000、Windows
22、XP 等)出品的可視化的快速開(kāi)發(fā)工具的產(chǎn)品。Visual C+是以可視化技術(shù)為基礎(chǔ),以 C+為主要編程語(yǔ)言,集成眾多工具的開(kāi)發(fā)利器。其操作簡(jiǎn)單,界面和功能設(shè)計(jì)符合程序員的開(kāi)發(fā)習(xí)慣,同時(shí)配合使用微軟官方開(kāi)發(fā)的幫助文檔 MSDN,可以給設(shè)計(jì)和開(kāi)發(fā)工作帶來(lái)更大的便利。在一般的游戲設(shè)計(jì)中,Visual C+也是非常好的開(kāi)發(fā)工具。2.2 Visual C+開(kāi)發(fā)工具的特點(diǎn)Visual C+提供的 MFC 類庫(kù),是一個(gè)很大的、擴(kuò)展了的 C+類層次結(jié)構(gòu),其能使開(kāi)發(fā) Windows 應(yīng)用程序變得更加容易。而且 MFC 在整個(gè) Windows 家族中都是兼容的,也就是說(shuō),無(wú)論是 Windows98 還是 Wind
23、owsXP,所使用的 MFC 是兼容的。每當(dāng)新的Windows 版本出現(xiàn)時(shí),MFC 也會(huì)得到修改以便使舊的編譯器和代碼能在新的系統(tǒng)中工作。MFC 也會(huì)得到擴(kuò)展,添加新的特性、變得更加容易建立應(yīng)用程序。使用 MFC 的最大優(yōu)點(diǎn)是其做了所有最難做的事。MFC 中包含了成千上萬(wàn)行正確的、優(yōu)化和功能強(qiáng)大的 Windows 代碼。其調(diào)用的很多成員函數(shù)可以幫助你完成自己可能很難完成的工作。一般性的界面開(kāi)發(fā)工作也可以全部交給其來(lái)完成,用戶就只需在這些基礎(chǔ)上做出自己想要實(shí)現(xiàn)的功能即可。與其他開(kāi)發(fā)工具相比,Visual C+完成Windows 圖形界面的程序所花費(fèi)的時(shí)間要少得多。由于 MFC 編程方法充分利用了
24、面向?qū)ο蠹夹g(shù)的優(yōu)點(diǎn),使得我們編程時(shí)極少需要關(guān)沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文6心對(duì)象方法實(shí)現(xiàn)的細(xì)節(jié),同時(shí)類庫(kù)中的各種對(duì)象的強(qiáng)大功能足以完成程序中絕大部分所需的功能,這使得應(yīng)用程序中程序員所需編寫(xiě)的代碼大為減少,有力地保證了程序的良好性和可調(diào)試性。近幾年經(jīng)過(guò)微軟公司不斷地完善,Visual C+在開(kāi)發(fā)速度、程序執(zhí)行效率、程序文件大小與系統(tǒng)的集成性方面都有極大的提高,這使得其不但適應(yīng)開(kāi)發(fā)一般的應(yīng)用軟件,還可以開(kāi)發(fā)數(shù)據(jù)庫(kù)應(yīng)用軟件,同時(shí)更適合圖形圖像和文件壓縮等算法編程。另外由于其是微軟公司推出的,因此也能夠較好地與 Windows 平臺(tái)接合,深入操作系統(tǒng)的內(nèi)部和底層,實(shí)現(xiàn)高級(jí)程序設(shè)計(jì)要求,提高程序的運(yùn)行效率
25、。2.3 運(yùn)行環(huán)境運(yùn)行環(huán)境首先需要操作系統(tǒng)的支持,開(kāi)發(fā)本程序使用 Microsoft Windows XP 操作系統(tǒng),為使開(kāi)發(fā)連連看游戲程序能穩(wěn)定運(yùn)行,在硬件上至少需要奔騰 3CPU 做保證,內(nèi)存不低于 64MB,40G 硬盤(pán)空間,對(duì)顯卡要求不高,都能滿足顯卡需求,還有音響用于播放音樂(lè)。保證了以上的配置,就能保證使用 Microsoft Visual C+ 6.0 在 Microsoft Windows XP 系統(tǒng)中開(kāi)發(fā)連連看游戲程序環(huán)境的可行性。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文73 系統(tǒng)需求分析及設(shè)計(jì)需求分析就是描述系統(tǒng)的需求,通過(guò)定義系統(tǒng)的關(guān)鍵域來(lái)建立模型,分析的根本目的是在開(kāi)發(fā)者和提出需求的人之
26、間建立的一種理解和溝通機(jī)制。3.1 系統(tǒng)功能需求開(kāi)發(fā)一款單機(jī)版的休閑類連連看游戲,該游戲具備的功能如下:(一)能夠顯示主菜單和界面 游戲需要提供主菜單讓玩家進(jìn)行游戲設(shè)置,同時(shí)能夠顯示剩余時(shí)間、當(dāng)前游戲等級(jí)等相關(guān)信息到界面上。(2)能夠?qū)崿F(xiàn)時(shí)間限制功能能夠根據(jù)游戲狀態(tài)自動(dòng)增加或者減少當(dāng)前時(shí)間限制長(zhǎng)短。(3)能夠根據(jù)規(guī)則消除相同棋子游戲以鼠標(biāo)進(jìn)行操作,第一次點(diǎn)擊棋盤(pán)中的棋子,該棋子此時(shí)為“被選中”狀態(tài),以特殊方式顯示出來(lái);再次單擊其他棋子,若該棋子與被選中的棋子圖案相同,且把第一個(gè)棋子到第二個(gè)棋子連起來(lái),中間的直線不超過(guò) 3 根,則消掉這一對(duì)棋子。并且當(dāng)前的時(shí)間限制長(zhǎng)短增加,否則第一個(gè)棋子恢復(fù)成違
27、背選中狀態(tài),而第二個(gè)棋子變成被選中狀態(tài)。當(dāng)游戲時(shí)間全部消耗完時(shí),則游戲結(jié)束。(4)游戲升級(jí)功能 當(dāng)游戲中的棋子全部消除完畢時(shí),游戲等級(jí)上升一個(gè)等級(jí)。游戲等級(jí)沒(méi)增加一個(gè)等級(jí),時(shí)間限制長(zhǎng)度如表 3.1 所示。表 3.1 游戲等級(jí)與時(shí)間限制游戲等級(jí)時(shí)間限制長(zhǎng)度游戲等級(jí)時(shí)間限制長(zhǎng)度1120 秒670 秒2110 秒760 秒3100 秒850 秒490 秒940 秒580 秒1030 秒 沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文8(5)消除提示功能 在游戲中,如果玩家覺(jué)得自己無(wú)法找到一對(duì)消除棋子時(shí),可以使用快捷鍵(f5)調(diào)出游戲中的提示功能,來(lái)提醒當(dāng)前可消除的棋子。最多可使用 3 次。(6)棋子換盤(pán)功能如果玩家覺(jué)得自
28、己無(wú)法全部消除時(shí),可以使用快捷鍵(f6)調(diào)用棋子換盤(pán)功能,重新把旗子隨機(jī)排列來(lái)繼續(xù)游戲,該功能最多可以使用 3 次。(7)英雄榜的更新當(dāng)有玩家得到的等級(jí)超過(guò)當(dāng)前記錄等級(jí),在游戲結(jié)束時(shí)要求玩家把名字輸入并保存下來(lái)。游戲初始時(shí)記錄分?jǐn)?shù)線為 1 級(jí)。例如,第一個(gè)玩家的等級(jí)為 2 級(jí),游戲結(jié)束時(shí),那么這個(gè)玩家的等級(jí)將被保存下來(lái)作為最高游戲等級(jí)記錄。直到有玩家的等級(jí)超過(guò) 2 級(jí),才能更新當(dāng)前記錄等級(jí)并在退出游戲等級(jí)時(shí)保存玩家名字及游戲等級(jí)。(8)游戲支持背景音樂(lè)功能通過(guò)主菜單,在游戲開(kāi)始后,可以選擇播放或者禁止播放背景音樂(lè)。默認(rèn)為禁止播放。(9)游戲提供幫助說(shuō)明文檔在游戲菜單中,提供一個(gè)使用說(shuō)明項(xiàng),以方
29、便對(duì)游戲不了解的玩家對(duì)游戲操作和使用。對(duì)于資源的需求,圖片資源必不可少,游戲中的小方塊是一組圖片資源,選用兩組圖案和排列完全相同但是背景色不同的兩組圖片作為小方塊的初始狀態(tài)和選定狀態(tài)。為了使游戲更具娛樂(lè)性,背景音樂(lè)及音效的添加也是必不可少的,所以此游戲程序也加入了的音樂(lè)文件資源沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文93.2 概要設(shè)計(jì)3.2.1 總體設(shè)計(jì) 本程序共分為六個(gè)模塊,即主界面顯示模塊、棋子操作模塊、游戲升級(jí)模塊、播放音樂(lè)模塊、英雄榜模塊、幫助功能模塊。 連連看游戲的功能架構(gòu)(如圖 3.1 所示) 圖 3.1 連連看功能架構(gòu)連連看棋子操作功能棋子操作功能游戲升級(jí)功能播放音樂(lè)功能主界面顯示功能英雄榜功能
30、幫助功能棋子換盤(pán)棋子連接提示棋子顯示顯示菜單更新記錄沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文103.2.2 游戲菜單結(jié)構(gòu)的設(shè)計(jì)連連看游戲菜單結(jié)構(gòu)的設(shè)計(jì)如圖 3.2 所示。 圖 3.2 游戲菜單結(jié)構(gòu)設(shè)計(jì) 當(dāng)用戶進(jìn)入游戲界面,點(diǎn)擊游戲菜單里的“游戲”選項(xiàng)中的“開(kāi)始”后,游戲正式開(kāi)始。點(diǎn)擊菜單“游戲設(shè)置”里的背景音樂(lè)可以播放節(jié)奏感強(qiáng)烈的背景音樂(lè)。系統(tǒng)默認(rèn)設(shè)置為禁止播放背景音樂(lè)。當(dāng)玩家在游戲過(guò)程中遇到不能消除的棋子情況下,可以點(diǎn)擊菜單里的游戲幫助選項(xiàng)。英雄榜記錄了玩家游戲的最好記錄以及玩家的名字。3.3 連連看游戲的詳細(xì)設(shè)計(jì)3.3.1 游戲各功能的設(shè)計(jì)描述 在連連看游戲中,大致可以分為 8 個(gè)功能模塊。1.時(shí)間限制模
31、塊的算法設(shè)計(jì) 時(shí)間限制模塊的算法主要分為以下幾個(gè)步驟:(1)在游戲開(kāi)始時(shí),設(shè)置當(dāng)前時(shí)間(nOverTime)為 60 秒。(2)設(shè)定一個(gè)時(shí)間定時(shí)器 TIMER1,時(shí)間間隔為 1000 毫秒。連連看游戲游戲設(shè)置游戲幫助英雄榜ngb開(kāi)始結(jié)束背景音樂(lè)幫助關(guān)于沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文11(3)每當(dāng)?shù)谝淮螘r(shí)間間隔到時(shí),就把當(dāng)前限制時(shí)間減少 1 秒。(4)如果游戲中有一對(duì)棋子消除時(shí),就把限制時(shí)間增加 3 秒。例如,當(dāng)前限制時(shí)間為40 秒,這時(shí)有棋子被消除,那么限制時(shí)間變?yōu)?43 秒。(5)如果限制時(shí)間變成 0 秒,說(shuō)明游戲結(jié)束,彈出結(jié)束提示對(duì)話框。如果當(dāng)前游戲等級(jí)超過(guò)記錄等級(jí),還有彈出英雄榜對(duì)話框?qū)υ挕?
32、.消除相同棋子模塊的算法設(shè)計(jì)消除相同棋子模塊的算法主要分為以下幾個(gè)步驟:(1)當(dāng)鼠標(biāo)點(diǎn)擊棋子時(shí),保存到棋子坐標(biāo)及類型到“第一次選中變量”中。(2)得到鼠標(biāo)第二次選中的棋子坐標(biāo)及類型。(3)比較兩次棋子類型,如果相同,轉(zhuǎn)步驟(4)。如果不相同,轉(zhuǎn)步驟(5)。(4)畫(huà)一條連接線,并消除這對(duì)棋子,退出等待下一次鼠標(biāo)選擇。(5)把鼠標(biāo)第二次選中的棋子坐標(biāo)及類型賦值給“第一次選中變量”。 3.游戲升級(jí)模塊的算法設(shè)計(jì)游戲升級(jí)模塊的算法主要分為以下幾個(gè)步驟:(1)保存當(dāng)前游戲等級(jí)和限制時(shí)間初始值。(2)當(dāng)游戲中的棋子全部被消除完畢時(shí),就把當(dāng)前游戲等級(jí)增加一級(jí)。(3)把限制時(shí)間的初始值減少 10 秒。(4)調(diào)
33、用重新開(kāi)始游戲接口函數(shù)。 4.消除提示模塊的算法設(shè)計(jì)消除提示模塊的算法主要分為以下幾個(gè)步驟:(1)判斷提示次數(shù)變量的值,如果等于 0,結(jié)束。(2)查找當(dāng)前棋盤(pán)中相同的棋子。(3)在相同棋子中,查找可以消除的棋子。(4)給出提示連線,提示次數(shù)變量減少 1. 5.棋子換盤(pán)模塊的算法設(shè)計(jì)棋子換盤(pán)模塊的算法主要分為以下幾個(gè)步驟:(1)保存當(dāng)前棋盤(pán)數(shù)組中的數(shù)據(jù)到臨時(shí)數(shù)組中。(2)循環(huán)地從臨時(shí)數(shù)組中,隨機(jī)取出數(shù)據(jù)保存到棋盤(pán)數(shù)組中。 沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文12 6.英雄榜模塊的算法設(shè)計(jì)英雄榜模塊的算法主要分為以下幾個(gè)步驟:(1)在讀取配置文件(setup.ini),得到并顯示當(dāng)前最高等級(jí)和大名。(2)在玩
34、家結(jié)束游戲時(shí),比較當(dāng)前用戶等級(jí)和最高等級(jí)。如果高于配置文件中的最高等級(jí),就彈出“英雄榜”對(duì)話框,要求輸入玩家的名字,并連同玩家的等級(jí)保存到配置文件中。 7.音樂(lè)播放模塊和的算法設(shè)計(jì)音樂(lè)播放模塊比較簡(jiǎn)單,只需要在用戶選擇音樂(lè)播放時(shí),把音樂(lè)資源載入程序并播放。 8.幫助類模塊的算法設(shè)計(jì)幫助類模塊的算法也比較簡(jiǎn)單,只要把相應(yīng)的對(duì)話框資源顯示出來(lái)就可以了。3.4 相關(guān)技術(shù)與重點(diǎn)難點(diǎn)3.4.1 相關(guān)技術(shù)GDI(Graphics Device Interface,圖形設(shè)備接口)主要負(fù)責(zé)在顯示屏幕和打印設(shè)備等方面輸出圖像信息,是一組通過(guò) C+類實(shí)現(xiàn)的應(yīng)用程序編寫(xiě)接口。作為一個(gè)設(shè)備接口,它可以使得開(kāi)發(fā)人員在將
35、信息輸出于屏幕或打印機(jī)之時(shí)無(wú)需考慮具體的目標(biāo)輸出的硬件特性,只需調(diào)用 GDI 庫(kù)的一些方法進(jìn)行操作即可,而具體的繪圖工作由特定的設(shè)備驅(qū)動(dòng)來(lái)完成,從而使開(kāi)發(fā)人員能輕松地在不同的硬件中做圖像繪制輸出。繪圖方案設(shè)計(jì)采用內(nèi)存位圖映射的方式,先將整個(gè)游戲區(qū)域的圖象繪制到內(nèi)存位圖中去,然后再一次性地將它加載到屏幕上予以顯示。先在內(nèi)存創(chuàng)建兩個(gè)內(nèi)存位圖,并對(duì)它們的圖象進(jìn)行載入。在需要使用的時(shí)候,則可以從這些內(nèi)存位圖中直接去拷貝,并繪制到游戲區(qū)域內(nèi)存位圖中去。對(duì)框架位圖及人物位圖分別創(chuàng)建相應(yīng)的設(shè)備環(huán)境,并且為它們分配了關(guān)聯(lián)的內(nèi)存位圖變量。而對(duì)于游戲區(qū)域的繪制,亦為它創(chuàng)建了一個(gè)內(nèi)存設(shè)備環(huán)境以及關(guān)聯(lián)的內(nèi)存位圖。完成
36、以上工作后,需要在程序開(kāi)始運(yùn)行的時(shí)候,一次性地對(duì)它們進(jìn)行適當(dāng)?shù)某跏蓟4擞螒虺绦虻年P(guān)鍵在于游戲的繪圖方案,是此程序的難點(diǎn),在此程序中的繪圖方案通過(guò) GDI 技術(shù)實(shí)現(xiàn)。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文133.4.2 系統(tǒng)的重點(diǎn)難點(diǎn)此程序的重點(diǎn)是鼠標(biāo)的交互功能。通過(guò) ClassWizard 對(duì)鼠標(biāo)左鍵被按下時(shí)觸發(fā)的命令消息進(jìn)行攔截技術(shù)來(lái)實(shí)現(xiàn)。因?yàn)橛螒虻娜窟^(guò)程需要依靠鼠標(biāo)操作,所以鼠標(biāo)交互功能的設(shè)計(jì)是否人性化就成了此連連看游戲程序的重點(diǎn)。此程序的難點(diǎn)是連連看游戲程序的連接線功能。首先編寫(xiě)一個(gè)創(chuàng)建路徑的類,通過(guò)這個(gè)類使游戲中消除小方塊時(shí)能夠找到一條可以連接的路徑進(jìn)行連線,然后通過(guò)一個(gè)畫(huà)線的類進(jìn)行連接。沈陽(yáng)理
37、工大學(xué)學(xué)士學(xué)位論文143.5 游戲各功能流程圖(1)消除及時(shí)間限制功能流程圖。如圖 3.3 N圖 3.3 消除及限制時(shí)間功能流程圖游戲開(kāi)始初始化棋盤(pán) 限制時(shí)間是否為 0游戲結(jié)束 是否選中相同棋子消除棋子限制時(shí)間增加接收玩家輸入沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文15(2)游戲升級(jí)及英雄榜更新流程圖,如圖 3.4 所示。是 否否是 是圖 3.4 游戲升級(jí)及英雄榜更新功能流程圖 游戲開(kāi)始 初始化棋盤(pán)時(shí)間限制是否為 0是否消除完畢 游戲增加一級(jí)當(dāng)前記錄是否高過(guò)歷史記錄保存新的記錄并且錄入玩家姓名結(jié)束游戲接收玩家輸入沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文16(3)消除提示模塊流程圖,如圖 3.5 所示。 是 否 圖 3.5 消
38、除提示模塊功能流程圖游戲開(kāi)始初始化棋盤(pán) 限制時(shí)間是否為 0游戲結(jié)束消除提示次數(shù)是否 為 0消除棋子消除提示次數(shù)減少一次接收玩家輸入沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文17(4)棋子換盤(pán)模塊功能流程圖,如圖 3.6 所示。 是 否 圖 3.6 棋子換盤(pán)模塊功能流程圖游戲開(kāi)始初始化棋盤(pán) 限制時(shí)間是否為 0游戲結(jié)束換盤(pán)次數(shù)是否為 0消除棋子換盤(pán)次數(shù)減少一次 接收玩家輸入沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文183.6 主對(duì)話框的設(shè)計(jì)與實(shí)現(xiàn)3.6.1 主對(duì)話框的設(shè)計(jì)連連看的主對(duì)話框類,主要負(fù)責(zé)顯示游戲界面、等級(jí)、時(shí)間顯示、及快捷鍵調(diào)用等內(nèi)容。其主要有如下幾個(gè)處理模塊。1.主菜單處理模塊主菜單處理模塊比較簡(jiǎn)單,只需要?jiǎng)?chuàng)建一個(gè)菜單
39、對(duì)象,并在對(duì)話框初始化函數(shù)進(jìn)行加載相應(yīng)資源并設(shè)置到對(duì)話框中。2.連接提示處理模塊 連接提示模塊,主要調(diào)用棋子類中的查找有效連接接口函數(shù),通過(guò)返回的兩個(gè)圖標(biāo)相同棋子位置來(lái)設(shè)置兩個(gè)棋子的狀態(tài)為按下。3.換盤(pán)處理模塊換盤(pán)處理模塊,主要是把棋盤(pán)數(shù)組中的數(shù)據(jù)重新進(jìn)行隨機(jī)排列。4.初始化棋盤(pán)數(shù)據(jù)模塊初始化棋盤(pán)數(shù)據(jù)模塊,利用隨機(jī)數(shù),隨機(jī)地選擇在棋盤(pán)數(shù)組中插入棋子數(shù)據(jù)。每一類棋子生成 2 組 4 個(gè)相同的數(shù)據(jù)。5.游戲信息處理模塊游戲信息處理模塊,主要利用設(shè)置定時(shí)器,每一秒進(jìn)行更新顯示區(qū)域。在這些區(qū)域中,以繪圖方式進(jìn)行輸出。3.6.2 主對(duì)話框的實(shí)現(xiàn) 實(shí)現(xiàn)主對(duì)話框類 CLIKDIg 需要如下個(gè)步驟:(1)聲明
40、主對(duì)話框類 CLIKDIg 類,其中包含鏈接提示、顯示棋盤(pán)、換盤(pán)、初始化游戲及棋盤(pán)數(shù)據(jù)函數(shù)。(2)添加主對(duì)話框類 CLIKDIg 的實(shí)現(xiàn),其中包含基本的初始化對(duì)話框函數(shù)、游戲開(kāi)始處理函數(shù)、及背景音樂(lè)播放功能函數(shù)。(3)給主對(duì)話框類添加顯示函數(shù)、分?jǐn)?shù)和游戲等級(jí)信息更新函數(shù)及接收玩家鍵盤(pán)輸入沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文19處理函數(shù)。(4)游戲中要求實(shí)現(xiàn)限制時(shí)間和最高紀(jì)錄處理功能,所以必須在主對(duì)話框類中再添加定時(shí)器處理和最高紀(jì)錄處理功能函數(shù)。在定時(shí)器響應(yīng)函數(shù)中,根據(jù)當(dāng)前時(shí)間剩余數(shù)判斷,如果小于 0 則說(shuō)明時(shí)間已到,提示用戶游戲結(jié)束,并接收用戶是否重新開(kāi)始的選擇,然后根據(jù)選擇重新開(kāi)始游戲或者結(jié)束游戲。如果
41、是結(jié)束游戲,還需要調(diào)用超記錄對(duì)話框。(5)實(shí)現(xiàn)主對(duì)話框類中的棋盤(pán)換盤(pán)、棋子連接提示及棋盤(pán)初始化功能函數(shù)。 調(diào)用換盤(pán)函數(shù)進(jìn)行棋盤(pán)的重新排列,其中使用了循環(huán)語(yǔ)句來(lái)判斷,因?yàn)槠遄尤渴请S機(jī)排列,有可能還是無(wú)法消除的棋子,所以必須判斷有棋子可以消除時(shí)才能換盤(pán)成功。 CLlkDlg:CallHint()是顯示連接提示函數(shù),其主要是調(diào)用配對(duì)函數(shù) Hint(),得到當(dāng)前棋盤(pán)中可以連接的兩個(gè)棋子,并將其設(shè)置為按下?tīng)顟B(tài),這樣就實(shí)現(xiàn)了提示。CLlkDlg:Exchange(int mapMAXY)是換盤(pán)函數(shù),該函數(shù)主要是將整個(gè)棋盤(pán)數(shù)據(jù)保存到臨時(shí)數(shù)組中,然后利用隨機(jī)數(shù)重新排列棋盤(pán)數(shù)組中的數(shù)據(jù),實(shí)現(xiàn)換盤(pán)。CLlkDl
42、g:RefreshMap()是跟新棋盤(pán)函數(shù),主要思想是遍歷整個(gè)棋盤(pán)數(shù)組,然后將其中為空或者消除后的區(qū)域加入到刷新范圍內(nèi)進(jìn)行刷新,不進(jìn)行全界面刷新以防閃爍。CLlkDlg:InitMap(int mapMAXY)是初始化棋盤(pán)數(shù)組,主要是隨機(jī)將相同類型的 4 個(gè)棋子放到棋盤(pán)數(shù)組不同的位置中。3.7 棋子類的設(shè)計(jì)與實(shí)現(xiàn)3.7.1 棋子類的設(shè)計(jì)棋子類,包含如下幾個(gè)功能函數(shù)。1.游戲勝負(fù)的判斷處理游戲勝負(fù)的處理步驟如下:(1)等待玩家的鼠標(biāo)輸入信息。(2)在定時(shí)器中,每次扣除游戲限制時(shí)間 1 秒。(3)當(dāng)游戲時(shí)間為 0 時(shí),彈出游戲失敗結(jié)束提示,并根據(jù)玩家選擇重新開(kāi)始游戲或者結(jié)束游戲。(4)在玩家消除一
43、對(duì)棋子后,就對(duì)當(dāng)前棋盤(pán)數(shù)組進(jìn)行遍歷。如果是空,說(shuō)明玩家已經(jīng)全部消除完畢,然后調(diào)用升級(jí)處理。如果不是空,則返回步驟(1)。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文202.游戲升級(jí)處理游戲升級(jí)處理步驟如下:(1)當(dāng)游戲中的棋子全部被消除完后,彈出升級(jí)提示對(duì)話框。(2)當(dāng)玩家選擇繼續(xù)時(shí),就調(diào)用主對(duì)話框類的重新開(kāi)始游戲接口函數(shù)。但要把當(dāng)前游戲等級(jí)增加 1 級(jí)。(3)當(dāng)玩家選擇不繼續(xù)時(shí),直接調(diào)用退出函數(shù)。 3.查找處理查找處理實(shí)現(xiàn)步驟如下:(1)遍歷整個(gè)棋盤(pán)數(shù)組。(2)查找一根直線可以連接的一對(duì)棋子,如果沒(méi)有則轉(zhuǎn)下一步;如果有則轉(zhuǎn)至步驟(6)。(3)查找有一個(gè)拐角,即兩根直線以連接的一對(duì)棋子,如果沒(méi)有則轉(zhuǎn)下一步;如果有
44、則轉(zhuǎn)至步驟(6)。(4)查找有兩個(gè)拐角的,即三根直線以連接的一對(duì)棋子,如果沒(méi)有則轉(zhuǎn)下一步;如果有則轉(zhuǎn)至步驟(6)。(5)如果返回假,表示查找失敗。(6)如果返回真,表示查找成功,并把棋子的位置在輸出參數(shù)中返回。4.提示處理提示處理是通過(guò)調(diào)用查找函數(shù),把其中可以連接的一對(duì)棋子的位置通過(guò)輸入?yún)?shù)返回給上層調(diào)用者,由調(diào)用者設(shè)置相關(guān)棋子為選中狀態(tài)。3.7.2 棋子類的實(shí)現(xiàn) 棋子類 CChessMan 的實(shí)現(xiàn),分為如下幾個(gè)步驟:(1)聲明棋子類 CChessMan,其中包含兩個(gè)構(gòu)造函數(shù)、查找接口函數(shù)、判斷棋子為空函數(shù)以及鼠標(biāo)響應(yīng)函數(shù)。(2)添加棋子類的實(shí)現(xiàn),其中包含基本的構(gòu)造函數(shù)、析構(gòu)函數(shù)、鼠標(biāo)響應(yīng)函數(shù)
45、等。其中,if(parent-m_p=NULL) | (parent-m_p-m_id!=m_id)|(parent-m_p-m_pos.x=m_pos.x)&(parent-m_p-m_pos.y=m_pos.y)是用來(lái)判斷當(dāng)前是否按下了棋子,并且是否是同一個(gè)棋子,如果是兩個(gè)不同的棋子,則調(diào)用 find()函數(shù)查找之間是否可以消除。棋子的消除,主要是將兩個(gè)棋子設(shè)置為 0 進(jìn)行隱藏,并跟新棋子沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文21數(shù)組及信息區(qū)。調(diào)用 IsEmpty()函數(shù)判斷棋子是否全部消除完畢,當(dāng)全部消除完畢時(shí),就給出提示窗口,讓玩家選擇是否繼續(xù)下一關(guān),玩家選擇繼續(xù)則增加等級(jí)數(shù),同時(shí)調(diào)用sta
46、rt()函數(shù)重新開(kāi)始;玩家選擇結(jié)束的話,則進(jìn)行最高等級(jí)判斷以及清除窗口工作。調(diào)用 Hint()函數(shù)查找棋盤(pán)中是否有可以匹配的棋子,如果有,則不做任何操作;否則自動(dòng)調(diào)用換盤(pán)函數(shù)進(jìn)行換盤(pán),并增加換盤(pán)數(shù)。(3)棋子類的查找接口、棋盤(pán)判空功能函數(shù)的實(shí)現(xiàn)。前一個(gè)查找函數(shù)的實(shí)現(xiàn),主要利用輸入兩個(gè)棋子坐標(biāo)來(lái)查找有無(wú)連線。后面一個(gè)查找函數(shù),是在前一個(gè)查找函數(shù)的基礎(chǔ)上增加了棋子間有連接就要把棋子的拐角位置輸出。(4)實(shí)現(xiàn)棋子類的配對(duì)接口函數(shù)分為兩種:一種是判斷當(dāng)前棋盤(pán)上有無(wú)配對(duì)棋子;另一種是在前一種的基礎(chǔ)上添加輸出配對(duì)棋子坐標(biāo)的功能。前一種判斷當(dāng)前棋盤(pán)上有沒(méi)有可以配對(duì)的棋子的函數(shù),主要是遍歷全部棋盤(pán)數(shù)組中的元素
47、,但要除去其中棋子類型為消除了的(0)或者類型不相同及棋子位置相同的。然后查找棋盤(pán)數(shù)組中的元素。查找兩個(gè)棋子之間有無(wú)可以有效連接的線,如果有,則說(shuō)明還有可配對(duì)的棋子。后一種是判斷當(dāng)前棋盤(pán)上有沒(méi)有可以配對(duì)的棋子的函數(shù),其不同的是需要輸出兩個(gè)棋子的位置,這樣就可以將兩個(gè)棋子顯示出來(lái)。 (5)實(shí)現(xiàn)各種不同的查找函數(shù)。包含查找一根直線連接函數(shù)、查找一個(gè)拐角連接函數(shù)和查找兩個(gè)拐角連接函數(shù)。第一個(gè)是查找兩個(gè)棋子之間是否有直接連接的實(shí)現(xiàn),實(shí)現(xiàn)思想是先判斷是否是同一行或者同一列,如果是同一行,則比較兩個(gè)棋子同一行間是否有棋子存在(0 和-1 不算,0 是已消除,-1 是邊界),如果有,則說(shuō)明不可連。否則說(shuō)明可
48、連。同理可以判斷同一列的情況。第二個(gè)是查找兩個(gè)棋子之間是否有 2 條直線可以連接的實(shí)現(xiàn),用來(lái)查找由兩個(gè)棋子所在的點(diǎn)構(gòu)成的矩形的各個(gè)角是否有棋子存在,如果有,就直接跳過(guò);沒(méi)有才判斷該點(diǎn)與兩個(gè)棋子分別是不是可以用直線相連,如果可以連,則說(shuō)明兩個(gè)棋子用 2 條直線可以連接,反之不可以連。最后如果各個(gè)角都不為空,則說(shuō)明兩個(gè)棋子不可連。第三個(gè)是查找三根直線可以連接的棋子,在整個(gè)棋盤(pán)數(shù)組中查找 2(a,b)個(gè)點(diǎn)(這兩個(gè)點(diǎn)必須是消除過(guò)的棋子或者是邊界位置)。其中,a 點(diǎn)能夠與棋子 1 直線相連,b 點(diǎn)能夠與棋子 2 直線相連,那么兩個(gè)棋子是配對(duì)的,他們就可以被消除掉。對(duì)于棋子的布局,依舊是采用常用的機(jī)制,先
49、用 srand()函數(shù)對(duì)時(shí)間函數(shù)布下隨機(jī)沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文22種子,然后調(diào)用 rand()函數(shù)對(duì)具體的圖案棋子的種類進(jìn)行隨機(jī)的獲取。對(duì)于圖片資源的,可以先在內(nèi)存創(chuàng)建兩個(gè)內(nèi)存位圖,并對(duì)它們的圖像進(jìn)行載入。在需要使用的時(shí)候,則可以從這些內(nèi)存位圖中直接去拷貝,并繪制到游戲區(qū)域內(nèi)存位圖中去。首先,對(duì)棋子的兩種狀態(tài)所對(duì)應(yīng)的圖片分別創(chuàng)建相應(yīng)的設(shè)備環(huán)境,并且為它們分配關(guān)聯(lián)的內(nèi)存位圖變量。而對(duì)于游戲區(qū)域的繪制,則通過(guò)設(shè)備環(huán)境中的圖形物件群的調(diào)用進(jìn)行直接繪制。 3.8 人機(jī)界面設(shè)計(jì)人機(jī)交互技術(shù)(Human-Computer Interaction Techniques)是指通過(guò)計(jì)算機(jī)輸入、輸出設(shè)備,以有效
50、地方式實(shí)現(xiàn)人與計(jì)算機(jī)對(duì)話的技術(shù)。它包括機(jī)器通過(guò)輸出或顯示設(shè)備給人提供大量有關(guān)信息及提示請(qǐng)示等,人通過(guò)輸入設(shè)備給機(jī)器輸入有關(guān)信息及提示請(qǐng)示等,人通過(guò)輸入設(shè)備給機(jī)器輸入有關(guān)信息,回答問(wèn)題等。人機(jī)交互技術(shù)是計(jì)算機(jī)用戶界面設(shè)計(jì)中的重要內(nèi)容之一。它與認(rèn)知學(xué)、人機(jī)工程學(xué)、心理學(xué)等學(xué)科領(lǐng)域有密切的聯(lián)系。人機(jī)交互功能是決定系統(tǒng)“友善性”的一個(gè)重要因素。人機(jī)交互功能主要靠可輸入輸出的外部設(shè)備和相應(yīng)的軟件來(lái)完成??晒┤藱C(jī)交互使用的設(shè)備主要有鍵盤(pán)顯示、鼠標(biāo)、各種模式識(shí)別設(shè)備等。與這些設(shè)備相應(yīng)的軟件就是操作系統(tǒng)提供人機(jī)交互功能的部分。人機(jī)交互部分的主要作用是控制有關(guān)設(shè)備的運(yùn)行和理解并執(zhí)行通過(guò)人機(jī)交互設(shè)備傳來(lái)的有關(guān)的各
51、種命令和要求。早期的人機(jī)交互設(shè)施是鍵盤(pán)顯示器。操作員通過(guò)鍵盤(pán)打入命令,操作系統(tǒng)接到命令后立即執(zhí)行并將結(jié)果通過(guò)顯示器顯示。打入的命令可以有不同方式,但每一條命令的解釋是清楚的,唯一的。隨著計(jì)算機(jī)技術(shù)的發(fā)展,操作命令也越來(lái)越多,功能也越來(lái)越強(qiáng)。隨著模式識(shí)別,如語(yǔ)音識(shí)別、漢字識(shí)別等輸入設(shè)備的發(fā)展,操作員和計(jì)算機(jī)在類似于自然語(yǔ)言或受限制的自然語(yǔ)言這一級(jí)上進(jìn)行交互成為可能。此外,通過(guò)圖形進(jìn)行人機(jī)交互也吸引著人們?nèi)ミM(jìn)行研究。這些人機(jī)交互可稱為智能化的人機(jī)交互。這方面的研究工作正在積極開(kāi)展。對(duì)于本程序,為了增強(qiáng)趣味性以及操作性,人機(jī)界面設(shè)計(jì)必不可少。 1.為使游戲界面友好美觀,在顏色上的搭配很重要,由于有很
52、多種人物的圖案而且顏色很多,所以其它區(qū)域顏色不可很多,采用單一色調(diào)即可保持美觀、簡(jiǎn)潔。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文23圖 3.7 進(jìn)行中的游戲界面2.在適當(dāng)時(shí)刻應(yīng)予以提示操作。當(dāng)游戲時(shí)間結(jié)束的時(shí)候,系統(tǒng)提示游戲時(shí)間到,可以選擇繼續(xù)游戲或者結(jié)束游戲。在過(guò)關(guān)的時(shí)候,系統(tǒng)提示玩家是否要挑戰(zhàn)下一關(guān)。如圖 3.8 所示 圖 3.8 游戲提示窗口通過(guò)以上這些設(shè)計(jì)以達(dá)到人機(jī)界面的友好、美觀,更能吸引玩家進(jìn)行游戲。 沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文24 4 連連看游戲的調(diào)試調(diào)試是軟件開(kāi)發(fā)過(guò)程中最艱巨的腦力勞動(dòng),調(diào)試開(kāi)始時(shí),軟件開(kāi)發(fā)者僅僅面對(duì)著錯(cuò)誤的征兆,然而在問(wèn)題的外部現(xiàn)象和內(nèi)在原因之間往往并沒(méi)有明顯的聯(lián)系,在組成程序的
53、密密麻麻的元素中,每一個(gè)都可能是錯(cuò)誤的根源。如何能在浩如煙海的程序元素中找到有錯(cuò)誤的那個(gè)元素,這是調(diào)試過(guò)程中最關(guān)鍵的技術(shù)問(wèn)題。4.1 主界面和界面顯示功能調(diào)試 程序啟動(dòng)后,其主菜單及主界面如圖4.1所示。圖 4.1 連連看游戲主界面及菜單判斷結(jié)果:游戲的菜單和界面顯示成功。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文254.2 消除相同棋子的功能調(diào)試游戲開(kāi)始后,查看其中相同的棋子,選中其中一個(gè),如圖 4.2。圖 4.2 選中相同的棋子選中兩個(gè)相同的棋子,棋子被消除,如圖 4.3 所示。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文26圖 4.3 選中相同的棋子,棋子被消除 判斷結(jié)果:消除相同的棋子功能測(cè)試成功。4.3 游戲升級(jí)功能的調(diào)
54、試 查看當(dāng)前游戲等級(jí),如圖 4.4 所示。圖 4.4 當(dāng)前游戲等級(jí) 消除完全部棋子時(shí),查看有無(wú)提示。單擊“確定”按鈕,如圖 4.5 所示。圖 4.5 消除完全部棋子時(shí)的界面沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文27升級(jí)后,查看當(dāng)前游戲等級(jí),如圖 4.6 所示。圖 4.6 升級(jí)后的游戲等級(jí) 判斷結(jié)果:通過(guò)比較,游戲中的升級(jí)功能正確。4.4 消除提示功能調(diào)試 測(cè)試連連看游戲是否有幫助提示功能。 選擇“幫助”| “幫助”命令,游戲彈出幫助對(duì)話框,如圖 4.7 所示。 圖 4.7 游戲幫助對(duì)話框判斷結(jié)果:連連看游戲幫助提示正確。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文284.5 棋子換盤(pán)功能的調(diào)試 運(yùn)行游戲后,消除若干配對(duì)棋子,如
55、圖 4.8 所示。圖 4.8 消除若干配對(duì)棋子的棋盤(pán) 按下快捷鍵 f6,調(diào)用換盤(pán)功能后,棋盤(pán)如圖 4.9 所示圖 4.9 換盤(pán)后的棋盤(pán) 判斷結(jié)果:通過(guò)比較,連連看的換盤(pán)功能得到實(shí)現(xiàn)。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文294.6 消除提示功能的調(diào)試 測(cè)試連連看游戲中使用快捷鍵 f5,調(diào)用消除提示功能。游戲界面上有配對(duì)棋子提示,如圖 4.10 所示。圖 4.10 消除配對(duì)提示綜合所有測(cè)試,連連看游戲程序功能基本實(shí)現(xiàn)。沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文30結(jié)論通過(guò)幾個(gè)月的思考和專研,最終完成了連連看游戲程序設(shè)計(jì)。程序的完成情況還算不錯(cuò),基本實(shí)現(xiàn)了一款連連看的所有功能。游戲運(yùn)行比較穩(wěn)定,在游戲過(guò)程中還沒(méi)有出現(xiàn)過(guò)因系統(tǒng)原因
56、造成的錯(cuò)誤,游戲界面簡(jiǎn)潔,美觀。背景的選擇也是符合一定的美學(xué)的,在視覺(jué)上給于玩家美得感受。游戲操作也比較簡(jiǎn)單,使得玩家可以輕松上手。在算法問(wèn)題上,處理的比較得體,不會(huì)造成互相干擾,尤其是方塊的消除算法,做的比較詳細(xì)、清晰,這也造成了代碼量很大,導(dǎo)致工作量很大。在這個(gè)游戲中還有很多的不足,畢竟是第一次編寫(xiě)游戲程序,而且編寫(xiě)游戲程序的要求很高。是游戲就有 BUG,不能保證此連連看游戲程序沒(méi)有任何錯(cuò)誤,只能把顯性錯(cuò)誤消除,也盡量減少隱形錯(cuò)誤的數(shù)量。本系統(tǒng)還有許多不盡如人意的地方,比如功能較少,人機(jī)交互也少,出錯(cuò)處理不夠等多方面問(wèn)題。軟件開(kāi)發(fā)是一個(gè)不斷完善的過(guò)程,只有在實(shí)際的使用過(guò)程中才能不斷地發(fā)現(xiàn)問(wèn)
57、題,從而再加以改進(jìn)。而在系統(tǒng)的設(shè)計(jì)過(guò)程中,難免會(huì)出現(xiàn)一些預(yù)測(cè)不到的異常,這些異常甚至在系統(tǒng)測(cè)試階段都檢查不出來(lái),只有在用戶的使用過(guò)程中才能檢查出來(lái),很多地方未能考慮周全導(dǎo)至系統(tǒng)存在著很多不足之處,這些不足主要是由于時(shí)間不足造成的。在代碼設(shè)計(jì)上也存在不足,容易造成系統(tǒng)運(yùn)行效率的降低,這就需要在以后系統(tǒng)使用過(guò)程中逐步發(fā)現(xiàn),并不斷進(jìn)行升級(jí)。本程序還可以在許多地方進(jìn)行擴(kuò)展,地圖的數(shù)量還可以增加,地圖的類型也可以不斷改變,可以設(shè)置更多的道具,可以提供玩家選擇多種不同的人物或者水果圖片,不同地圖配有不同的背景音樂(lè)等等。這些功能可以把連連看游戲的娛樂(lè)性發(fā)展到一個(gè)新的高度,這些功能都會(huì)在以后的時(shí)間內(nèi)進(jìn)行不斷改
58、善。 在設(shè)計(jì)前期我查閱了很多相關(guān)的書(shū)籍,去了解連連看這款小游戲。包括自己也去小游戲網(wǎng)站上玩了玩許多版本的連連看,這加深了我對(duì)這款游戲的理解和認(rèn)識(shí)。在設(shè)計(jì)過(guò)程中,有很多不是特別會(huì)的算法包括一些 MFC 工具的使用,由于老師同學(xué)們給了我很大的幫助和鼓勵(lì),并且通過(guò)上網(wǎng)查資料,最終克服了一個(gè)又一個(gè)的問(wèn)題,才使得我能把這款小游戲完成,真的很感謝。調(diào)試程序的時(shí)候也出了很多的岔子,之前用的操作系統(tǒng)是 Windows 8.1,對(duì)于 visual stdio 6.0 存在兼容的問(wèn)題,最后換了成 win7 系統(tǒng)后解決了不兼容。MFC 類庫(kù)可以幫助程序員編寫(xiě)大量的高效率的正確的 windows 應(yīng)用程序,通過(guò)這次畢
59、設(shè),加強(qiáng)了我對(duì) vc+各種控件的了解,如利用 Picture 控件顯示圖沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文31像,以及學(xué)習(xí) windows 的 API 函數(shù),如用來(lái)播放背景音樂(lè)的 sndPlaySound()函數(shù)等。在選擇棋子圖片時(shí),考慮到現(xiàn)在有很多高中生,大學(xué)生在玩一款現(xiàn)在十分流行的游戲,采用了該游戲里面比較經(jīng)典的人物形象。這不但使得游戲更加美觀,同時(shí)也增加了趣味性。總之這次的畢業(yè)設(shè)計(jì)讓我學(xué)到了很多以前課本上很少講到的知識(shí),增加了我的編程經(jīng)驗(yàn),這必定有助于編程意識(shí)和能力的培養(yǎng)。 沈陽(yáng)理工大學(xué)學(xué)士學(xué)位論文32致謝經(jīng)過(guò)這段時(shí)間的學(xué)習(xí)與實(shí)踐,使我對(duì)游程的發(fā)展及現(xiàn)狀有了更深刻的認(rèn)識(shí),并對(duì)Visual C+ 6
60、.0 軟件有了一定程度的了解,學(xué)習(xí)了 Visual C+ 6.0 的相關(guān)知識(shí)及如何利用 Visual C+ 6.0 編譯程序,特別是以前從未接觸過(guò)的 MFC 應(yīng)用程序,從了解到學(xué)習(xí),再到最后的使用,我的收獲是不可用語(yǔ)言表達(dá)的。經(jīng)過(guò)這段短暫時(shí)間的學(xué)習(xí),我想我對(duì)于知識(shí)的獵取是有限的,關(guān)鍵是我學(xué)會(huì)了如何用認(rèn)真、嚴(yán)謹(jǐn)?shù)膶W(xué)習(xí)態(tài)度去面對(duì)工作,如何用自學(xué)的方法來(lái)處理問(wèn)題。通過(guò)編寫(xiě)這個(gè)程序,我體會(huì)最為深刻的一點(diǎn)是系統(tǒng)架構(gòu)和設(shè)計(jì)模式的重要性。即使是對(duì)于一個(gè)并不大的程序,代碼的組織都是非常重要的,因?yàn)檫@關(guān)系到日后的維護(hù)以及擴(kuò)展。這個(gè)游戲之中,有關(guān)繪圖算法編程的知識(shí)都可以直接從無(wú)所不包的 Internet上獲取,甚至可以直
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 證券質(zhì)押典當(dāng)業(yè)務(wù)合同書(shū)
- 工業(yè)廠房租賃安全合同范本
- 銷售合同專業(yè)模板
- 機(jī)電安裝工程合同標(biāo)準(zhǔn)格式
- 房地產(chǎn)開(kāi)發(fā)合同糾紛案例分析
- 兼職臨時(shí)工雇傭合同
- 農(nóng)村合作社租賃合同糾紛解決策略
- 煤炭購(gòu)銷長(zhǎng)期合同范本參考
- 年度合作協(xié)議范文:標(biāo)識(shí)標(biāo)牌制作合同
- 綠化養(yǎng)護(hù)合同模板
- 2024天津工業(yè)職業(yè)學(xué)院教師招聘考試筆試試題
- QCT1067.5-2023汽車電線束和電器設(shè)備用連接器第5部分:設(shè)備連接器(插座)的型式和尺寸
- 合金固態(tài)相變?nèi)捉虒W(xué)課件
- 《研學(xué)旅行課程設(shè)計(jì)》課件-1研學(xué)課程資源選擇
- 《醫(yī)學(xué)心理學(xué)》教案
- 海綿城市建設(shè)技術(shù)標(biāo)準(zhǔn) DG-TJ08-2298-2019
- 跟著名著《小王子》學(xué)高考英語(yǔ)讀后續(xù)寫(xiě)絕佳的續(xù)寫(xiě)清單-高中英語(yǔ)作文復(fù)習(xí)專項(xiàng)
- 產(chǎn)教融合大學(xué)科技園建設(shè)項(xiàng)目實(shí)施方案
- 交通法律與交通事故處理培訓(xùn)課程與法律解析
- 廣西版四年級(jí)下冊(cè)美術(shù)教案
- 《換熱器及換熱原理》課件
評(píng)論
0/150
提交評(píng)論