ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:1.97MB ,
资源ID:10717969      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-10717969.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(纸牌游戏设计报告.doc)为本站会员(精品资料)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

纸牌游戏设计报告.doc

1、纸牌游戏设计报告1纸牌游戏设计报告1.问题描述:本次设计通过 C 语言编写程序实现对图像一般的基本处理,本次设计主要是 52 张纸牌除去大小王,玩家 4 位;需要实现以下功能。设计一个菜单界面,上面分别有 1.发新牌、2.洗牌发牌、3.按点数理牌、4 退出。当点击“1.发新牌”,会转换到一个新的发牌界面上,在这个界面上实现四位玩家中每位玩家的牌都是按照同一花色从小到大的排列界面(其中 A 最小, K 最大),而且最后还能返回到菜单界面;同样当点击“2.洗牌发牌”,发牌界面上四位玩家中牌是随机排列没有特定的规律,但是要注意的是每位玩家的牌都是不相同的;当点击“3.按点数发牌”,发牌界面上四位玩家

2、的牌是随机发牌之后按照从小到大的顺序依次排列;当点击“4.退出”,退出菜单界面结束程序的运行。2.模块划分:此次设计主要有四个模块,它们分别是菜单模块、发新牌模块、洗牌发牌模块、按点数理牌模块;它们的之间的关系如下所示纸牌游戏设计报告2它们所对应的界面转换关系如下:3.算法设计:(1)52 张纸牌图片的放置:纸牌游戏设计报告3第一步:开辟一个存放 52 张纸牌地址的一维数组 a52,定义变量 i,x;第二步:将这 52 张纸牌按照特定的顺序特定的顺序加载到这个数组中去;第三步:利用 4 个 for 循环语句控制每张图片输出的位置putimage()函数;第四步:设置一个清屏函数 system(

3、“cls”),当按下键盘上 Enter 键退出该界面。(2)随机数组 b52的生成:第一步:定义三个变量 i,j,tmp;第二步:设置一个随机种子 srand(unsigned)time(NULL);第三步:利用 for 循环生成 52 个随机数;第四步:利用 while 循环生成每个随机数;第五步:在 while 循环下,在利用 for 循环判断生成的随机数与之前生成随机是否相同,相同执行 break 语句结束循环生成新的随机数,再次进行比较;如果不相同则存放到数组中去;最后将这个数组返回到主函数中去。(3)随机数组 b52按一定顺序排列:第一步:定义三个变量 i,j,temp;第二步:利用

4、 4 个嵌套的 for 循环语句来实现每位玩家的 13 张纸牌按照从小到大的顺序排列;第三步:在每个嵌套的 for 循环中利用 bi%13 来确定每张纸牌的大小,如果后一张牌比前一张牌小,则交换它们的位置,最后返回这个数组 b52到主函数中去。(4)鼠标的生成:第一步:定义一个鼠标按键信息 MOUSEMSG msg;第二步:设置一个鼠标函数 msg=GetMouseMsg();纸牌游戏设计报告4第三步:利用一个 if 语句判断鼠标左键是否按下msg.uMsg=WM_LBUTTONDO-WN;第四步:在 if 语句下根据鼠标函数 msg.x,msg.y 的范围生成字符1、2、3、4,最后这四个字

5、符返回发到主函数中去。(5)主函数实现调用函数的功能:第一步:定义调用函数数组范围的值 SIZE=52;图片的大小 initgraph();flag 初始化-flag=0;第二步:利用 while(flag=0)循环判断是否执行相应的函数调用;第三步:利用 switch-case 语句来调用相应的函数,其中 case 的值是上述返回的字符1、2、3、4;第四步:当 case=1执行发新牌功能;当 case=2执行洗牌发牌功能;当 case=3执行按点数理牌功能;当 case=4flag=1,结束 while 循环,退出程序。纸牌游戏设计报告54.详细设计:整个程序函数之间的关系如下所示主函数发

6、新牌 洗牌发牌 按点数理牌纸牌展示函数 纸牌背景函数 纸牌展示函数 纸牌背景函数 纸牌展示函数发新牌函数洗牌发牌函数 洗牌发牌函数 按点理牌函数纸牌游戏设计报告6以下是本次设计函数功能描述:(1)菜单界面的函数 DispMenu1()是基于 c 语言利用 easy.h 库函数将菜单背景图片展示在出来,其中 loadimage 加载图片, putimage 放置图片;(2)菜单选择函数 ChooseMenu()是并且在其中利用 easy.h 库函数鼠标函数的功能来实现,其中 MOUSEMSG msg 是鼠标定义信息,利用 if 语句,当鼠标按下左键键函数 msg=WM_LBUTTONDOWN 和

7、 1.发新牌、2.洗牌发牌、3.按点数理牌、4.退出在菜单背景图片 msg.x 和 msg.y 的范围来控制产生四个字符1、2、3、4;并将字符返回给主函数; (3)类似于(1)将 52 张纸牌的背景函数 DispMenu2();(4)纸牌展示函数 ShowCard()利用 zasy.h 库函数将 52 张纸牌图片的地址加载到一个一维数组 a52中去,在此过程中利用四个 for 循环控制每张纸牌图片在背景图片上的位置以及它们之间的间距,在该函数还设置了一个清屏功能“system(“cls“)”用来返回主菜单操作;(5)发新牌函数 NewCard(),就是定义一个一维数组 b52,通过 for

8、循环给这个一维数组赋值,数组中每个元素的值等于该该下标;(6)洗牌发牌函数 Shuffle(),就是定义一个一维数组 b52,利用随机种子srand(unsigned)time(NULL)和循环生成 52 个 051 的不同的整数,并将它们赋到一维数组 b52中去;(7)按点数理牌函数 SortCard(),将(6)中生成的一维数组 b52分成四组,它们分别是 b0b12,b13b25,b26b38,b39b52,将每组的 13 个元素除以 13 求其余数,该余数的大小代表了该纸牌的点数大小,最后利用循环语将每组元素余数按照从小到大排序;(8)主函数 mian(),该函数的功能就是通过 Swt

9、ichcase 语句调用相应的函数来实现指定的功能;5.运行结果:纸牌游戏设计报告7当点击运行结果是会出现菜单界面当鼠标点击 1.发新牌时会出现下面的界面:纸牌游戏设计报告8当鼠标点击 2.洗牌发牌时会出现下面的界面:当鼠标点击 3.按点数理牌时会出现下面的界面:从上述运行的结果可以看到,实现一副牌不含大小王的同一花色 13 张牌分配给纸牌游戏设计报告9同一玩家;然后随机分配给每位玩家;最后随机分配给玩家的牌按大小顺序排列。符合设计要求。当在键盘上按下“Enter”返回主菜单。6.心得与体会利用C 语言程序设计课程的相关知识完成一个具有一般的软件设计题目,在此次设计中利用 C 语言进行程序设计

10、,并规范地完成设计报告。通过设计巩固和加深对 C 语言的语言、算法、函数等知识的理解掌握现实复杂问题的分析建模和解决方法包括问题描述、系统分析、设计建模、代码实现、结果分析等提高利用计算机分析解决综合性实际问题的基本能力,并且使自己对软件有进一步的了解。通过此次设计使我基本掌握程序设计的基本方法和步骤,而且对我以前学习知识的一个检测,同时也让自己意识到还有很多的地方自己做的不够,还需要继续潜心学习;在设计程序首先要对自己的设计有所了解,如何去设计,大致的步骤有哪些,如何去实现它的功能,同时也必须查阅相关的资料,找到相关的例子,然后进行创新,得到自己想要的结果,要反复进行调试,找出自己存在的问题

11、,不断改进提高。7.程序源代码:#include#include #include “easyx.h“#include “conio.h“#include “time.h“static int b52;void ShowCard(void)/将 52 张纸牌展示在背景图片上 IMAGE a52;int i,x;loadimage(/加载背景图纸牌游戏设计报告10片,按指定大小存储loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage

12、(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(纸牌游戏设计报告11loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage

13、(loadimage(纸牌游戏设计报告12loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(loadimage(BeginBatchDraw();for(i=0,x=80;i0return choose; void DispMenu2(void)/52 张纸牌展示背景图片函数 IMAGE back1;loadimage( putimage(0,0,纸牌游戏设计报告18void main(void)/主函数 int SIZE=52;int flag=0; initgraph(960,600); while(flag=0) switch(ChooseMenu() case 1:DispMenu2();NewCard(b,SIZE);/发新牌ShowCard(); break;case 2:DispMenu2();Shuffle(b,SIZE); /洗牌发牌 ShowCard();break;case 3: DispMenu2();Shuffle(b,SIZE);纸牌游戏设计报告19SortCard(b,SIZE);/按点数发牌 ShowCard(); break;case 4:closegraph();/退出 flag=1;getchar();

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报