纸牌游戏——课程设计报告.doc
文本预览下载声明
纸牌游戏——课程设计报告
摘要: 有编号为1-52张牌,现以2-52为基数,当遇到他们的倍数时进行翻牌,最后打印出结果。
关键字:翻牌 数组 结构体
一、设计的问题描述设计的问题设计思想、方法及方案}p;
p a[52];
第二步,主程序。其功能是一开始输出一个菜单,让玩家做出选择“1.测试该游戏,2.开始游戏 3.游戏帮助。 4.退出游戏”玩家从键盘输入做出选择后,分别调用相应的4个子程序。
第三步,对玩家的选择进行接收的子程序。当玩家输入1,2,3或者4是时候,该程序可以将玩家的选择反馈给主程序。如果玩家输入的是这三个数字之外,则反馈0给主程序。
第四步,对纸牌的初始化的子程序。初始的要求是每张牌按从1到52顺序排列,并且每张牌初始时,都要求正面向上。
第五步,对游戏进行测试的子程序。按设计的要求,对初始化后的牌进行翻面并显示所有正面向上的牌。
第六步,洗牌子程序。通过玩家输入的随机数和难度级别,对52张牌进行不同程度的洗牌,即打乱牌的顺序。然后将打乱次序后的牌的排列顺序在屏幕上显示出来。
第七步,开始游戏子程序。首先列出菜单“1.初级 2.中级 3.高级”。让玩家选择输入,然后让玩家输入一个随即的数字,调用洗牌的子程序,根据玩家的这两个输入对牌进行不同程度的打乱。接着让玩家输入1-52中任意牌,调用玩家竞猜子程序,判断玩家猜的这张牌是否正面向上。
第八步,玩家竞猜子程序。如果玩家输入的那张牌是正面向上的,则输出猜对的提示,反之,如果输入的那张牌是背面向上的,则输出“再接再厉”的字样。
第九步,对牌面进行翻转的子程序。从第2张开始,以2为基数,是2的倍数的牌翻一次,直到最后一张牌;然后,从第3张开始,以3为基数,是3的倍数的牌翻一次,直到最68后一张牌;直到以52为基数的翻过,输出:这时输出正面向上的牌。
第十步,游戏帮助子程序。以文字的方式的输出向玩家介绍支纸牌游戏的具体玩法。
第十一步,判断子程序。其功能是要实现每次调用菜单选择子程序和执行完玩家要求的操作后,重新输出主菜单,让玩家选择新的操作。直到玩家选择4.退出游戏时,整个程序结束。
第十二步,游戏结束子程序。以文字的方式在屏幕上输出游戏结束的提示字。
三.详细设计和编码
n
y
y
n
y
y
n
y
(1)扑克牌数据结构的定义
typedef struct //定义一个结构体
{int id; //用来存储纸牌的面值
int flag; //表示纸牌哪面向上,奇数代表反面,偶数代表正面
}p;
p a[52];
在这里,id用来存储的是纸牌的面值,即1—52中的一个数字,flag相当于一个标志位,设想是初始时均赋值为0。
主程序的编写
void main()
{ printf( 欢迎来到纸牌游戏的世界\n);
printf(***************************************************************\n);
judge(); //判断k值,并做相应操作的子函数
}
这里,主程序看起来非常简单,主要的功能是先在屏幕上显示欢迎词,以建立良好的界面。然后再调用子程序judge().该子程序的功能和设计思路将在下面讲到,在这里就不做赘述了。
对玩家的选择进行接收的子程序choose()
int choose() //菜单选择函数
{
int k;
scanf(%d,k);//从键盘输入数字
if (k==1||k==2||k==3||k==4)//如果是1,2,3或者4
return k; //按原输入返回
else
return 0; //否则,其他的输入均返回0
}
该算法实现的功能是:首先定义一个整型变量k,然后让用户从键盘输入一个字符存入k中。接着的判断语句,
显示全部