C 21点纸牌游戏实践报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
第1章软件设计内容 (2)
1.1软件达到的目的 (2)
1.2软件功能说明 (2)
1.2.1功能分析说明图 (3)
1.2.2各项功能说明 (4)
1.3软件功能的验收标准 (5)
第2章软件设计环境与原理 (5)
2.1设计环境与模块的划分 (5)
2.1.1软件设计环境 (5)
2.1.2软件模块的划分 (5)
2.2软件设计主要原理 (6)
2.2.1采用的主要数据结构类型 (6)
2.2.2各个模块之间的调用关系和数据储存格式说明 (6)
2.2.3主要流程图 (6)
第3章软件的设计过程 (7)
3.1各软件模块之间的调用方式 (7)
3.2软件中实现各项功能的函数与程序代码 (7)
3.3数据保存方式以及格式 (7)
第4章设计结果与分析 (7)
4.1软件使用结果 (7)
总结......................................................................................................................错误!未定义书签。致谢......................................................................................................................错误!未定义书签。附录......................................................................................................................错误!未定义书签。
第1章软件设计内容
1.1软件达到的目的
1、熟悉VC++6.0WIN32工程的创建步骤。
2、掌握windows控制台程序的机制、结构。
3、深刻C++类的定义和对象的使用。
4、重点了解C++程序的多文件组织。
5、了解VC++平台的使用。
1.2软件功能说明
1.2.1功能描述
21点游戏是一个古老的扑克游戏,游戏的规则是:各个参与者设法使自己的牌达到总分21而不超过这个数值。扑克牌的分值取它们的面值,A充当1或者11分,J,Q 和K人头牌都是10分。
庄家VS1~7个玩家。在开局时,包括庄家在内的所有参与者都有两张牌。玩家可以看到他们的所有牌以及总分,而庄家有一张牌暂时是隐藏的。接下来,只要愿意,各个玩家都有机会依次再拿一张牌。如果是玩家的总分超过了21(称为引爆),那么这个玩家就输了。在所有玩家都拿了额外的牌后,庄家将显示隐藏的牌。只要庄家的总分等于或小于16,那么他就必须再拿牌。如果庄家引爆了,那么还没有引爆的所有玩家都将获胜,引爆的玩家打成平局。否则,将余下的各玩家的总分与庄家的总分做比较,如果玩家的总分大于庄家的总分,则玩家获胜。如果二者的总分相同,则玩家与庄家打成平局,如果玩家的总分小于庄家的总分,则庄家获胜。然后我们小组在实验要求的基础上添加了“赌注”功能,叙述如下:系统定义了每位玩家的初始筹码为100金,每局游戏开始默认每位玩家的初始赌注为5金,并且系统会询问玩家是否要添加赌注,所加赌注不可超过10金,最后所下赌注为初始赌注与所加赌注之和。在每轮游戏结束后,会输出玩家的输赢情况、资产的变化情况、以及玩家的总资产。(若玩家获胜,则由庄赔付胜利玩家所押筹码50%的奖励筹码;若玩家失败,则其所押筹码全给庄家!)游戏结束,系统会询问玩家是否需要继续游戏,玩家可自由选择。
1.2.2设计思路
设计思路如下:我们定义52张扑克牌,其中有“红桃、黑桃、方块、梅花”四种花色,每种花色中有“ACE 、TWO~TENJACK 、QUEEN 、KING”十三张牌;定义1~7人参加游戏(当输入错误时,应当有提示),并输入每位玩家的姓名。定义各玩家的初始赌注均为5金,并且每一轮还可在基础赌注上加注但每次只能在1~10金之间(当输入有错误时,应当有提示)给每位参与者发两张牌,显示牌的花色及点数。为了增强游戏的趣味性,将庄家的第一张牌隐藏,并显示“<隐藏>”字样;判断各参与者的点数是否大于21。若有玩家的点数超过21,则输出“引爆!”字样,并询问其余玩家是否要牌。如果有玩家要牌则再给他随机发一张牌,重复执行步骤(6)、(7)。直到所有玩家都停止要牌;显示各玩家状态,统计点数。自动比较大小,输出本轮的胜负情况,并计算输出金额的变换。根据玩家的总资产,判断是否达到胜负评定标准;(10)如果达到标准,则输出结果,显示退出界面;如果未达到标准则询问玩家是否继续进行游戏。
1.2.2功能分析说明图
该游戏流程分析说明图如1-2-1所示:给庄家发最初的两张牌
隐藏庄家的第一张牌和总分
向玩家发额外的
牌并显示牌和总分显示庄家的牌
给玩家发最初的两张牌
并显示牌和总分
玩家需要额外的牌?
庄家的总分<=16?
向庄家发额外的
牌并显示牌和总分庄家引爆?
玩家引洗牌
N
Y Y N
Y
1.2.3各项功能说明
(1)学生基本信息的录入和保存:
这部分的功能主要包括信息的录入和保存和总分、平均分的计算,首先按程序提示输入所要输入的学生人数,接着是分别输入有关学生的相关信息包括学号、姓名、性别以及学生各科成绩的分数等。在录入数据的同时,系统将对信息的合法性进行检验(学号范围为1001~1020、姓名在7个字节之内、性别只能输入m(男male)或f(女fmale)、各科成绩均限定在0~100之间),若用户录入了不合法的数据系统将会作出提示,并且要求重新输入。如果合法性成立则录入完毕后系统将显示全部学生相关信息,信息中已包含对学生成绩总分的计算和其平均分的计算结果。最后输出学生的信息表,与是否保存提示,选择存盘后,系统则自动将学生信息存入(list.dat)电脑。
(2)读取学生信息:
此功能是将原录入并保存的的学生信息读出,并在屏幕上显示出来。
(3)删除学生信息:
进入该项功能界面后,用户可以通过学生的姓名对谋个学生信息进行删除。(4)追加学生信息:
进入插入界面,系统将提示输入新学生的相关信息,程序则会将新的信息插入原学生信息清单中,并将新的学生信息列表输出,以方便用户的确认。(5)按学号查找学生信息:
此项功能可以根据拥护输入的学生学号查出该学生的所有信息。