C语言程序设计课程设计——三国杀游戏
2022/1/4 12:37:52
本文主要是介绍C语言程序设计课程设计——三国杀游戏,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 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.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所示。
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游戏结束界面
这篇关于C语言程序设计课程设计——三国杀游戏的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享