• <blockquote id="6m86g"></blockquote>
  • <option id="6m86g"></option>
  • <blockquote id="6m86g"><input id="6m86g"></input></blockquote>

    基于VC++/MFC的麻將牌連連看程序設計

    來源:網絡(轉載) 作者:潘恒 發表于:2011-07-13 10:09  點擊:
    【關健詞】VC++6.0 MFC 消息處理 MIC設備 flash
    在VC++6.0平臺上,利用MFC框架開發一個麻將牌連連看小游戲。同時,利用MFC的消息處理機制實現游戲中的人機對弈。在此基礎之上,利用MCI設備向MFC程序中添加背景音樂,同時在MFC程序的游戲界面上添加flash時鐘以達到功能及界面友好的完備性。

    1. 引言
      
      Visual C++6.0是一個強大的軟件編程工具,在其基礎之上的MFC(Microsoft Foundmion Class)是微軟公司提供的類庫,以c++類的形式封裝了Windows的API函數和控件。在程序的開發過程中,使用MFC類庫和Visual C++提供的高度可視化的應用程序開發工具,可以使應用程序開發變得簡單,同時提高了代碼的可靠性和可重用性。
      MFC的功能強大,其提供的消息處理機制更增強了其人機交互的能力。因此,在當代的游戲設計中,通過MFC進行游戲開發是十分普遍的。
      本文是基于MFC在Visual C++環境進行麻將牌連連看游戲程序設計,并利用MCI設備播放背景音樂,同時在MFC的游戲界面上添加了flash時鐘。
      
      2. MFC簡介
      
      MFC借助C++的優勢為Windows開發開辟了一片新天地,同時也借助ApplicationWizzard使開發者擺脫離了那些每次都必寫基本代碼,借助ClassWizard和消息映射使開發者擺脫了定義消息處理時那種混亂和冗長的代碼段。它利用C++的封裝功能使開發者擺脫Windows中各種句柄的困擾,只需要面對C++中的對象,這樣一來使開發更接近開發語言而遠離系統。
      MFC的結構主要分為單文檔、多文檔和基于對話框的三種模式,常見的類主要有:App(應用程序)類,Frame(框架)類,Doe(文檔)類和View(視圖)類四種。其中,App類主要負責整個應用程序的維護和保持;Frame類是承載視圖文檔等物體的框架體:Doc類主要用于項目中核心數據的運算以及數據的序列化存取工作;而View類則是對核心數據按照特定的方式進行圖像顯示。
      在MFC中對消息的處理利用了消息映射的方法,該方法的基礎是宏定義實現,通過宏定義將消息分派到不同的成員函數進行處理。因此,在這種機制的支持下,MFC具有強大的消息處理能力。
      
      3. 麻將牌連連看游戲的設計
      
      3.1 游戲項目的需求分析
      關于麻將牌連連看游戲的功能應該滿足一下描述:運行游戲會自動進行初始化工作,即將整個游戲區域分成橫向和縱向的多個方框區域,這些區域應填充麻將牌的圖案并成對的分布于整個游戲區域。玩家可以按照規則消除相同的麻將圖案,每消除一對總分就會加上消除的圖案所對應的數字,計算機和玩家依次消除依次,最后總分最大的獲勝。同時,通過增加麻將牌的個數和使機器查找當前可消除圖案中面值最大的圖案來增加游戲的難度。
      
      3.2 游戲項目的算法設計
      3.2.1 圖案方框抵消的判斷
      對于可銷毀的方塊圖案應滿足一下條件:一是兩個方塊的圖案必須相同:二是兩個方塊之間在沒有障礙物的情況下,可以用若干垂直的直線線段連接起來;三是這些將它們連接起來的折點不能超過2個。因此,這需要設置多個bool變量進行判斷。
      在這種規則之下,同種方塊的連接方式主要有三種:(1)直線連接:這必須要求所選的兩個方塊在同一水平線上,即它們的x坐標或者y坐標是相等的;(2)一個折點的連接:這必須保證折點至少有一個坐標(x或y)是和目標方塊的坐標相同;(3)兩個折點的連接方式:這需要兩個折點所連接而成的直線與兩物件的直線可以構成平行線。
      因此,判斷兩個圖案方塊是否可以抵消可以分別判斷直線情況、一個折點情況和兩個折點的情況,如圖1所示。
      
      3.2.2 用戶交互功能的實現
      對于用戶交互的功能,可以利用MFC中對應的鼠標相應函數來進行。當鼠標選取兩個圖案的時候,程序會根據消去規則自動判斷所選取的兩個方塊是否能夠消掉。若能,計算機就會自動將所選圖案消去同時在總分加上對應圖案的分值。在用戶點擊鼠標時,計算機會重復進行以上動作。
      對于鼠標交互的實現,可以通過MFC中的類向導對鼠標按下左鍵時觸發消息WM-LBUTTONDOWN進行攔截,并重寫對應的消息處理函數OnLButtonDown(),在該函數中獲取鼠標的當前位置并同時判斷該行列是否滿足條件,滿足即可消去圖案,否則不變。
      3.2.3 人機對弈的實現
      人機對弈的實現同樣也是進行消息的處理。當玩家消去了一對麻將圖案時,此時計算機會自動按照規則進行搜索查找可以消除的麻將圖案。同時,根據不同的游戲難度會進行不同的消去方法。當為初級難度時,計算機會順序查找,一查找到可消除的麻將牌圖案即刻消除并同時加上對應的分值:當為高級難度時,計算機仍會順序查找,但會從頭到尾搜索完畢并從可消除麻將圖案中選取分值最大的一對進行消除從而加大了游戲難度。當無法再進行圖案消除時,此時計算機就會比較當前比分從而判斷勝負。因此在此過程中需要有m-x和m-y變量記錄當前所選取的分值最大的圖案的位置。當計算機完成了一次消除時,程序就會等待玩家進行消除。通告以上方法,從而完成人機對弈。
      
      4. 程序背景音樂的添加
      
      MFC中可以通過對MCI設備的操作從而進行背景音樂的添加和控制。應用程序通過向MCI發送命令來控制媒體設備而MCI的命令接口分命令字符串mciSend Sting()和命令消息mciSendCommand()兩種。具體用法如下:①添加打開音樂的變量,即MCI-OPEN-PARMS;②添加播放音樂的變量,即MCI-PLAY-PARMS;③然后通過打開音樂變量來加載所要播放的音樂的路徑;④mciSendCommand()函數向向MCI設備發送命令消息并獲得多媒體設備類型編號;⑤然后再通過getinfo()函數得到曲目長度并設定播放時間;⑥最后通過mciSendCommand()函數發送播放音樂的命令從而完成音樂的播放。
      
      5. 程序flash的添加
      
      在MFC中添加flash往往要向程序中添加CShockware-Flash新類即是flash控件,這往往是可以通過Visual c++6.0自動完成的。在導入了flash控件之后,vc編輯器的圖標就會多出一個,它既是flash控件圖標。然后將該控件拖入游戲區域并進行設置即可得到一個flash對象-m-Flash-Play。然后再使用該flash對象的成員函數LoadMovie()和Play()從而來完成動畫的導入和播放。m-FlashPlayer.Load-Movie(0,strMovieUrl);該函數用來將動畫導入程中,而該函數的參數strMovieUrl是用來指定要播放的flash的絕對路徑。當動畫載入成功之后就可調用FlashPlayer,Play()進行動畫的播放。 (責任編輯:南粵論文中心)轉貼于南粵論文中心: http://www.dcddqc.com(南粵論文中心__代寫代發論文_畢業論文帶寫_廣州職稱論文代發_廣州論文網)

    頂一下
    (0)
    0%
    踩一下
    (0)
    0%


    版權聲明:因本文均來自于網絡,如果有版權方面侵犯,請及時聯系本站刪除.

    adc影库,欧美大色妞,国产在线视频分类精品,无遮挡一级毛片视频