1. <dd id="erndk"></dd>
                1. C語言程序設計課程設計——三國殺游戲

                  互聯網 2022/1/4 12:37:52

                  1 設計原則2總體設計2.1 功能模塊圖2.2 主函數 main()2.3 程序流程圖 3詳細設計3.1函數3.2函數流程圖 4運行結果開發環境:vc++6.0 easyx圖形庫1 設計原則 三國殺游戲系統的基本功能模塊的設計應包括:界面模塊、關卡判定模塊、回合模塊、特殊卡牌模塊、勝負判斷模塊、信息…

                  • 1 設計原則
                  • 2總體設計
                    • 2.1 功能模塊圖
                    • 2.2 主函數 main()
                    • 2.3 程序流程圖
                  • 3詳細設計
                    • 3.1函數
                    • 3.2函數流程圖
                  • 4運行結果

                  開發環境:vc++6.0 easyx圖形庫

                  1 設計原則

                  三國殺游戲系統的基本功能模塊的設計應包括:界面模塊、關卡判定模塊、回合模塊、特殊卡牌模塊、勝負判斷模塊、信息模塊、主模塊。
                  對三國殺游戲系統設計并進行調試、修復、完善、測試。測試三國殺游戲的勝負條件是否正確、測試游戲信息輸入方面等各項功能是否正常運行、測試游戲是否能正常退出及重置。
                  三國殺游戲系統的各個模塊的功能說明如下:
                  ·界面模塊:界面模塊的功能是實現卡牌的顯示及游戲桌面背景的顯示,在每次回合后都要對卡牌進行刷新,將卡牌狀態變化為當前的最新狀態,然后等待另一玩家操作。
                  ·關卡判定模塊:關卡判定模塊的功能是判斷游戲進行關卡更新并顯示。
                  ·回合模塊:回合模塊的功能是讓玩家能夠在界面上執行摸牌、出牌、棄牌等過程。
                  ·特殊卡牌模塊:特殊卡牌模塊是通過判斷卡牌的含意,分別進行錦囊牌、裝備牌等特殊情況的運行。
                  ·勝負判斷模塊:勝負判斷模塊的功能是在玩家每次出牌后對玩家所剩能量值進行判斷,看能量值是否大于0,并據此判斷勝負。
                  ·信息模塊:信息模塊的功能是進行提示信息的輸出,包括歡迎信息、游戲結束提示及和操作提示信息等。
                  ·主模塊:主模塊的功能是調用各個模塊協同工作來實現整個系統的功能并且完成排名及得分的需求。

                  2總體設計

                  2.1 功能模塊圖

                  本三國殺游戲分為七個功能模塊,分別是界面顯示功能,關卡判定功能,回合進行功能,特殊卡牌判定功能,勝負判斷功能,信息功能,主模塊的功能。界面顯示功能:游戲說明、卡牌顯示、桌面背景顯示;關卡判定功能:關卡更新、關卡判斷;回合模塊的功能:摸牌、出牌、棄牌。特殊卡牌模塊功能:錦囊牌、裝備牌。判斷勝負模塊的功能:判斷能量值、判斷勝負。信息模塊的功能:提示信息的輸出、游戲結束提示、操作提示。主模塊功能:調用各個模塊、游戲的排名和得分情況。功能模塊圖如圖2–1所示。圖2-1 功能模塊圖

                  2.2 主函數 main()

                  函數的功能:用于聯系各個功能函數模塊,以及退出程序時的退出畫面提示。
                  函數的入口:整個程序是從主函數開始的。
                  函數的出口:當OverValue==0時,利用exit(0)函數退出外層循環并結束main()函數,即:退出整個程序。
                  函數調用關系:本函數不被其它函數調用;本函數調用了paixu、paixu2、DataStartup、ImgStartup、gamestart、show、player_getnew、startup_1、startup_2、startup_3、startup_4、startup_5、huihe_player、npc_getnew、huihe_npc、gameover函數。

                  2.3 程序流程圖

                  開始進入游戲讀取排名,數據初始化,接著回合開始,判斷手牌命令是否扣血,如果否,重新開始新的回合,如果是,判斷雙方是否有血量為0,是的話開始判斷勝負,勝利+200分,失敗-200分,接下來判定是否繼續玩下去,是,則返回數據初始化開始下=下一關;否,則退出游戲。程序流程圖如圖2-2所示。
                  圖2-2 程序流程圖

                  3詳細設計

                  3.1函數

                  (1)功能函數 juedou
                  函數的功能: 本函數負責進行決斗過程各種情況的判定。如有玩家發起決斗成功,先判斷對方是否有殺,有則進行下去,無則扣一血并且判斷對方是否瀕死且有護心鏡,如有則卸下護心鏡。
                  函數的入口:由npc_panding、player_panding函數進入。
                  函數調用關系:被npc_panding、player_panding函數調用;本函數調用了npc_zhengli、show、player_answer函數。
                  函數的出口:有人死亡 ,或者對方無殺。

                  (2) 功能函數player_discard
                  函數的功能:對玩家所需要棄牌數進行判斷。判斷玩家剩余手牌數量是否大于玩家剩余血量,是則棄掉剩余手牌數量減去玩家剩余血量的手牌數量。
                  函數的入口:由huihe_player函數進入。
                  函數調用關系:只被huihe_player函數調用。
                  函數的出口:如果剩余手牌數量小于等于玩家剩余血量返回到huihe_player函數

                  (3) 功能函數huihe_player
                  函數的功能:進行玩家回合整理并判斷玩家出牌。
                  函數的入口:由main 函數進入。
                  函數調用關系:只被main函數調用,本函數調用了show、player_discard、player_panding、player_zhengli、npc_panding、npc_zhengli、interactive函數。
                  函數的出口:有人死亡(isover==1),跳出循環并清屏;玩家不想出牌時,跳出循環并清屏

                  (4) 功能函數gameover()
                  函數的功能:判定游戲是勝負。判斷玩家生命值以及npc_life值,由此得出輸贏結論。判斷OverValue的值,最后跳出循環
                  函數的入口:由main函數進入。
                  函數調用關系:只被main函數調用,本函數調用gamestart函數。
                  函數的出口:如果玩家生命值以及npc_life值小于0,直接返回到main函數;如不小于0,應再次判斷是否應該結束,結束此函數,現階段直接退出。

                  (5) 功能函數show()
                  函數的功能:顯示界面信息。顯示界面設置(最高分玩家名和分),確定血點,并根據玩家手牌的牌號判斷玩家的手牌是什么,最后以微軟雅黑字體顯示各牌的功能。
                  函數的入口:由main、player_answer、 player_panding、 npc_panding、 juedou、huihe_player、huihe_npc函數進入。
                  函數調用關系:被main、player_answer、player_panding、npc_panding、 juedou、huihe_player、huihe_npc函數調用,本函數調用CanPlaycard函數。
                  函數的出口:如果界面設置好后,直接返回到main函數;未完成,繼續顯示界面設置,至設置完成后,返回到main函數。

                  (6) 功能函數player_getnew()
                  函數的功能:玩家摸牌。摸牌,找到牌尾,并判斷牌堆是否抽完,沒抽完,玩家抽兩張牌,抽完牌堆數清零,paihao+1,player_shoupai_num+2。
                  函數的入口:由main、player_panding函數進入。
                  函數調用關系:被main、player_panding函數調用;本函數調用了washcard函數。
                  函數的出口:如果牌堆抽完,直接返回到main函數;未抽完,處理摸牌,牌號,以及玩家收牌號后,返回到main函數。

                  (7) 功能函數player _panding()
                  函數的功能:對玩家回合的判斷及操作。打出殺,判斷對手是否出閃,無閃扣一滴血。打出決斗,判斷對手是否出無懈可擊或者殺,不出殺扣一滴血。打出順手牽羊,判斷對手是否出無懈可擊,不出無懈可擊則抽取對方兩張手牌。瀕死判斷是否裝備護心鏡,裝備則回一滴血。打出過河拆橋,判斷對手是否出無懈可擊,不出無懈可擊則棄掉對方一張手牌。打出萬箭齊發,判斷對手是否出閃或無懈可擊,不出閃或無懈可擊扣一滴血。打出南蠻入侵,判斷對手是否出殺或無懈可擊,不出殺或無懈可擊扣一滴血。打出無中生有,判斷對手是否出無懈可擊,不出則從牌堆摸兩張牌。打出桃園結義,判斷對手是否出無懈可擊,不出則雙方各回一滴血。
                  函數的入口:由huihe_player函數進入。
                  函數調用關系:只被huihe_player函數調用;本函數調用了npc_zhengli、player_zhengli、show函數。
                  函數的出口:玩家回合結束,直接返回huihe_player函數。

                  (8)功能函數washcard
                  函數的功能:循環洗牌并在不同區間循環內給牌賦值,最后隨機打亂牌
                  函數的入口:由player_getnew、npc_getnew、startup_5函數進入。
                  函數調用關系:被player_getnew、npc_getnew、startup_5函數調用;不調用其他函數。
                  函數的出口:卡牌都賦予內容并且打亂形成牌堆后直接返回player_getnew、player_getnew、startup函數
                  (9)功能函數interactive
                  函數的功能:實現游戲過程中界面互動。當你想打出一張牌時,點擊這張牌,手牌突出,又不想打出這張牌,再次點擊,手牌縮進,重新選擇。當你鼠標點擊上方錦囊提示,會彈出一個介紹錦囊牌的窗口,再次點擊,窗口消失。當你鼠標點擊上方裝備提示,會彈出一個介紹裝備牌的窗口,再次點擊,窗口消失。當你鼠標點擊結束,手牌數大于生命值,會彈出一個棄牌窗口,鼠標點擊想棄掉的牌,手牌突出,又不想棄掉這張牌,再次點擊,手牌縮進,重新選擇。當你鼠標點擊退出游戲時,會彈出一個提示窗口,游戲退出。
                  函數的入口:由huihe_player函數進入。
                  函數調用關系:只被huihe_player函數調用;不調用其他函數。
                  函數的出口:點擊退出游戲;操作完成。

                  3.2函數流程圖

                  (1)決斗函數流程圖如圖3-1所示。
                  在這里插入圖片描述

                  圖3-1 決斗函數流程圖
                  (2)玩家棄牌函數流程圖如圖3-2所示。
                  在這里插入圖片描述

                  圖3-2 玩家棄牌函數流程圖
                  (3)玩家回合判斷流程圖·如圖3-3所示。
                  在這里插入圖片描述

                  圖3-3 玩家回合函數流程圖
                  (4)結束判定函數流程圖如圖3-4所示。
                  在這里插入圖片描述

                  圖3-4 結束判定函數流程圖

                  (5)界面顯示函數流程圖如圖3-5所示
                  在這里插入圖片描述

                  圖3-5 界面顯示函數流程圖
                  (6)玩家摸牌函數流程圖如圖3-6所示
                  在這里插入圖片描述

                  圖3-6 玩家摸牌函數流程圖
                  (7)函數流程圖如圖3-7所示
                  在這里插入圖片描述

                  圖3-7 判定函數流程圖
                  (8)洗牌函數流程圖如圖3-8所示。
                  在這里插入圖片描述

                  圖3-8 洗牌函數流程圖

                  (9)界面互動函數流程圖如圖3-9所示
                  在這里插入圖片描述

                  圖3-9 界面互動函數流程圖

                  4運行結果

                  (1)在程序開始會出現一個玩法介紹提示框。該提示框中有游戲基本簡單的玩法介紹。玩法介紹如圖4-1所示。
                  在這里插入圖片描述

                  圖4-1 玩法介紹
                  (2)用戶名登錄界面。需要輸入用戶名,便于記錄得分已經統計排名(本游戲只前3名玩家進行排名)。用戶名登錄如圖4-2所示。
                  在這里插入圖片描述

                  圖4-2 用戶名登錄
                  (3)主菜單界面。主菜單界面中有游戲聲明,開發人員的介紹,可以進行難度選擇操作(新手教程難度比較簡單),可以進行開始游戲操作,可以進行退出游戲設操作。主菜單界面如圖4-3所示。
                  在這里插入圖片描述

                  4-3主菜單界面
                  (4)主菜單退出游戲提醒。從主菜單退出游戲,會有個提示框提醒你,系統會保存你的用戶名和得分。主菜單退出游戲提醒如圖4-4所示。

                  在這里插入圖片描述

                  4-4 主菜單退出游戲提醒
                  (5)新手教程結束界面。在本界面你可以返回主菜單退出游戲,也可以溫習新手教程的關卡,也可以直接進入實戰。新手教程結束界面如圖4-5所示。
                  在這里插入圖片描述
                  4-5 新手教程結束界面
                  (6)游戲界面。游戲界面右上方有錦囊提示,裝備提示,退出游戲,當前得分及歷史最高分的用戶名和分數顯示。當前得分是勝利一局+200分,失敗一局-200分。點擊錦囊提示,裝備提示會出現相對應文字概述。點擊退出游戲,游戲會退出。游戲界面如圖4-6所示。
                  在這里插入圖片描述

                  圖4-6 游戲界面
                  (7)中途退出游戲提醒。在游戲過程中退出游戲系統不會保存用戶名和得分。中途退出游戲提醒如圖4-7所示。
                  在這里插入圖片描述

                  4-7 中途退出游戲提醒
                  (8)游戲結束界面。一局游戲結束后不管輸贏都可以選擇進行下一關繼續游戲和選擇點擊主菜單進行其他操作。游戲結束界面如圖4-8所示。在這里插入圖片描述

                  4-8游戲結束界面

                  隨時隨地學軟件編程-關注百度小程序和微信小程序
                  關于找一找教程網

                  本站文章僅代表作者觀點,不代表本站立場,所有文章非營利性免費分享。
                  本站提供了軟件編程、網站開發技術、服務器運維、人工智能等等IT技術文章,希望廣大程序員努力學習,讓我們用科技改變世界。
                  [C語言程序設計課程設計——三國殺游戲]http://www.yachtsalesaustralia.com/tech/detail-279876.html

                  贊(0)
                  關注微信小程序
                  程序員編程王-隨時隨地學編程

                  掃描二維碼或查找【程序員編程王】

                  可以隨時隨地學編程啦!

                  技術文章導航 更多>
                  国产在线拍揄自揄视频菠萝

                        1. <dd id="erndk"></dd>