ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C语言程序设计课程设计——三国杀游戏

2022-01-04 12:34:36  阅读:431  来源: 互联网

标签:课程设计 游戏 函数调用 C语言 player 模块 程序设计 玩家 函数



开发环境: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游戏结束界面

标签:课程设计,游戏,函数调用,C语言,player,模块,程序设计,玩家,函数
来源: https://blog.csdn.net/weixin_46703995/article/details/122137165

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有