模拟人工发牌课程设计报告

上传人:共*** 文档编号:133022217 上传时间:2020-05-23 格式:DOC 页数:9 大小:88KB
返回 下载 相关 举报
模拟人工发牌课程设计报告_第1页
第1页 / 共9页
模拟人工发牌课程设计报告_第2页
第2页 / 共9页
模拟人工发牌课程设计报告_第3页
第3页 / 共9页
模拟人工发牌课程设计报告_第4页
第4页 / 共9页
模拟人工发牌课程设计报告_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《模拟人工发牌课程设计报告》由会员分享,可在线阅读,更多相关《模拟人工发牌课程设计报告(9页珍藏版)》请在金锄头文库上搜索。

1、模拟人工发牌课程设计报告目 录1 前言12 需求分析12.1 任务和要求12.2 运行环境12.3 开发工具13 分析和设计23.1 系统分析及设计思路23.2 主要数据结构及算法23.3 函数流程图34 具体代码实现55 课程设计总结75.1 程序运行结果或预期运行结果75.2 设计结论7致 谢81 前言现代科学飞速发展,世界也不断的变化,人类的生活随着科技的发展也发生着惊天动地的变化。作为新时代的大学生,我们应该努力学习科学文化知识,以适应社会的发展要求。以现代化的科学知识为祖国做贡献。我的课程设计的实际题目是用计算机模拟发牌程序。假设一副扑克牌有52张,共4个玩家,编写程序统计出各玩家手

2、里拿的牌的牌面(牌面包括纸牌的大小和花色)。要求使用C或C+语言编程,定义合适的数据结构。最后,需要说明设计思想,同时给出能够运行的源程序,并给出对应的程序流程图。2 需求分析2.1 任务和要求用计算机模拟发牌程序。假设一副扑克牌有52张,共4个玩家,编写程序统计出各玩家手里拿的牌的牌面(牌面包括纸牌的大小和花色)。要求使用C或C+语言编程,定义合适的数据结构。最后,需要说明设计思想,同时给出能够运行的源程序,并给出对应的程序流程图。2.2 运行环境(1)WINDOWS2000/XP系统(2)Visual C+ 6.0编译环境或TC编译环境2.3 开发工具C语言3 分析和设计3.1 系统分析及

3、设计思路对课题的理解:模拟人工发牌是把52张扑克牌随机的发到四个玩家手上,最后统计出四个玩家手上拿的牌,包括牌面的花色和大小。而课题主要问题就是如何做到随机性发牌给四个玩家,所以课题要解决的就是要做到随机性的发牌给四个玩家并且每个玩家有且只有13张牌。 设计思想与方法:152张牌可以分为四种花色和每种花色有13张从小到到大的牌,因此可以用一个整数类型的4*13的二维数组来模拟这52张牌,数组的每一行分别代表一种花色,数组的每一列分别代表A到K共13张牌点,这样就模拟出来了这52张牌。而这个二维数组的每个元素的值就是用来存放该牌发给了哪个玩家,例如:a14=1,表示方块5发给了第一位玩家,以此类

4、推。而数组初始化给每个元素的值都设置为0,表示该牌还没有发到任何一个玩家手上。2随机发牌:如何随机把这52张牌随机发给四个玩家,我的想法是利用C语言里的随机函数rand()随机抽取二维数组里的一个元素,接着判断这个被随机抽取出来的元素是否已经属于某个玩家,即该元素的值是否等于0,如果不等于0,则继续随机抽取另外一个元素。否则,赋予这个元素的值为某个玩家,并且设置一个计数器Z,用来统计该玩家当前有多少张牌,当Z=13后就停止给该玩家发牌。这样就完成了给一个玩家发牌。循环四次则把52张牌随机的发给了四个玩家。3统计玩家的牌:就是输出四个玩家手中的牌(包括牌面的花色和大小),即把二维数组每个元素按值

5、的不同分类输出,把元素的值相等的输出在一起,这样就统计了四个玩家手中的牌。3.2 主要数据结构及算法1.先设计主函数(main函数),用一个整数类型的4*13的二维数组来模拟这52张牌。调用各子函数输出结果。2.设计子函数(init函数)来初始化牌组,使每个玩家一种颜色的牌。3.洗牌的交换函数: swap函数。随机交换52张牌所属的玩家。4.设计子函数(show函数)输出各个玩家的牌3.3 函数流程图temp!=endtemp=beginint*temp;NYSwap(temp,begin+ran.+temp图3.1 shuffle函数流程图ifprintf(n);+ii4i=0printf(

6、person%d: ,k+1);+kk4k=0inti,j,k;Y N Y N图3.2 show函数流程图4 具体代码实现#include #include #include / 初始化牌组,初始状态是每个玩家一种颜色的牌void init(int a13)int i, j;for(i = 0; i 4; +i)for(j = 0; j 13; +j)aij = i+1; / 同一行为相同花色的13张牌/ 用于洗牌的交换函数void swap(int* a, int* b)int t;t = *a; *a = *b; *b = t;/ 随机打乱,原理是随机交换52张牌所属的玩家/ 参数为牌组的

7、首地址和超尾地址(最后一个元素的后一个位置)void shuffle(int* begin, int* end)int* temp;for(temp = begin; temp != end; +temp)swap(temp, begin + rand() % (end-begin);/ 输出各个玩家的牌void show(int a13)int i, j, k;for(k = 0; k 4; +k) / 4个玩家printf(person%d: , k+1);for(i = 0; i 4; +i) / 4种花色for(j = 0; j 13; +j) / 13张牌if(aij = k+1)

8、/ 如果这种花色的这张牌属于k+1这个人putchar(i+3); / 输出花色switch(j) / 输出牌点case 0: putchar(A); break;case 11:putchar(J); break;case 12:putchar(Q); break;case 13:putchar(K); break;default:printf(%d, j+1);putchar( );printf(n); / 换行输出下一个玩家int main()int a413, *p;srand(time(0); / 初始化随机数种子init(a); / 初始化牌组p = (int*)a; / 用于传值

9、给shuffle函数shuffle(p, p+4*13); / 将牌组的首尾指针传给shuffle函数show(a); / 输出return 0;5 课程设计总结5.1 程序运行结果或预期运行结果5.2 设计结论通过这次的课程设计,我获益匪浅。首先最深的是课本知识学的再好,也需要实际的检验。我从这次的课程中我认识到了自己的许多不足,满以为自己学的很好,可是到实际运用时,才发现自己这也不行,那里不足。让我深刻认识到自己所学知识必须运用于实际,让实际来检验自己的水平。同时这次课程设计也给了我们一个真正展示自我的机会,锻炼了独立思考问题的能力, 懂得了如何去独立完成一个整体的程序。参考文献1张福祥. C语言程序设计M. 辽宁大学出版社,2008.12 张福祥,王萌C语言程序设计习题解答与实验实训M沈阳:辽宁大学出版社,20083 牛莉,刘远军等计算机等级考试辅导教程M北京:中国铁道出版社,2008致 谢感谢在此次课程设计中给我帮助的同学、朋友,感谢指导老师XX老师的耐心指导!8

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号