纸牌游戏的设计与实现副本剖析.docx
- 文档编号:11195910
- 上传时间:2023-02-25
- 格式:DOCX
- 页数:22
- 大小:301.69KB
纸牌游戏的设计与实现副本剖析.docx
《纸牌游戏的设计与实现副本剖析.docx》由会员分享,可在线阅读,更多相关《纸牌游戏的设计与实现副本剖析.docx(22页珍藏版)》请在冰豆网上搜索。
纸牌游戏的设计与实现副本剖析
*****计算机系
《数据结构》课程设计报告书
纸牌游戏的设计与实现
学生姓名:
*****
学号:
*****
年级专业及班级:
201*级计算机工程系(*)班
指导老师及职称:
******
专业:
计算机科学与技术专业
*********
提交日期:
201*年6月
摘要………………………………………………………………………………
关键字………………………………………………………………………………
前言………………………………………………………………………………
需求分析…………………………………………………………………………
概要设计…………………………………………………………………………
数组抽象数据类型定义…………………………………………………………
本程序包含模块…………………………………………………………………
(1)主程序模块…………………………………………………………………
(2)纸牌翻转模块------翻转纸牌………………………………………………
运行环境(软硬件环境)…………………………………………………………
开发工具和编程语言………………………………………………………………
详细设计……………………………………………………………………………
调试分析……………………………………………………………………………
测试结果……………………………………………………………………………
附录(源代码)……………………………………………………………………
致谢…………………………………………………………………………………
纸牌游戏的设计与实现
学生:
*****
指导老师:
****
摘要
关键字
翻纸牌的简单游戏,有动画翻动的过程,链表,随机数,结构体
前言
1.需求分析
2.概要设计
1.数组抽象数据类型定义:
对纸牌进行翻转与实现
voidfangzhuang(SLL)
{}
主函数
intmain()
{}
基本操作
Fanzhuan(L);
操作结果:
对纸牌进行翻转的实现与显示
随机数的结构体
typedefstruct
{}pocker;
主页
voidzhuye()
{}
2.本程序包含模块:
(1)主程序模块
#defineMAXSIZE100//给数组定义一个空间
//纸牌的信息
typedefstruct
{}RedType;
typedefstruct
{}SL;
(2)纸牌翻转模块------翻转纸牌
各模块关系如下:
3.运行环境(软硬件环境)
运行的的软件环境:
windows2000,windowsXP,windows7
运行所需要的硬件设备:
PC机一台
4.开发工具和编程语言
开发工具:
VisualC++
编程语言:
C语言
5.详细设计
1.根据题目要求的数组存储结构
#defineMAXSIZE100//给数组定义一个空间
typedefstruct//卡片的数目和标记
{
intnum;//牌号
intvisit;//牌的正反面
}RedType;//纸牌的信息
typedefstruct//卡片的结构体
{
RedTyper[MAXSIZE+1];//纸牌数组
intlength;
}SL;
随机数的结构体
typedefstruct//随机数的结构体
{
inta;
intd;
}pocker;
2.对纸牌进行翻转的动画与显示
voidfangzhuang(SLL)//实现卡片翻转
{
system("cls");//清频
inti,j,n,t;
cout<<"||************************************************************||\n"
<<"当输入N时:
";
cin>>n;
cout<<"||************************************************************||\n";
for(i=1;i<=n;i++)//底牌全部都是盖住的
{
if(L.r[i].visit==0)
printf("%c\t",2);
Sleep(100);
}
cout< cout<<"||************************************************************||\n"; Sleep(1000); pocker*s;s=newpocker[n+1]; srand((unsigned)time(NULL)); for(i=1;i<=n;i++) { t=0; s[i].a=rand()%(13-1+1)+1; s[i].d=rand()%(4-3+1)+3; j=i-1; while(j>=1) { if(s[i].d! =s[j].d||s[i].a! =s[j].a) j--; else { s[i].a=rand()%(13-1+1)+1; s[i].d=rand()%(4-3+1)+3; j=i-1; } } } for(i=2;i<=n;i++)//从第二张开始往后 { for(j=i;j<=n;j++)//以基数开始翻 if(L.r[j].num%i==0)//当是i的倍数时翻转 { if(L.r[j].visit==0)//正面翻反面 { L.r[j].visit=1; } else { L.r[j].visit=0; } } cout<<"从"< for(j=1;j<=n;j++)//输出翻转的牌 { if(L.r[j].visit==0)//反面 printf("%c\t",2); else { if(s[j].a>=1&&s[j].a<=10)//正面 printf("%d%c\t",s[j].a,s[j].d); else if(s[j].a==11) printf("J%c\t",s[j].d); else if(s[j].a==12) printf("Q%c\t",s[j].d); else if(s[j].a==13) printf("K%c\t",s[j].d); } Sleep(100);//让卡片有停顿的时间,像动画的样子 } cout< cout<<"||************************************************************||\n"; Sleep(1000); } cout<<"||************************************************************||\n" <<"这时是正面的编号为: "< for(i=1;i<=n;i++)//输出这时正面向上的牌有哪些 { if(L.r[i].visit==1) cout< } cout< cout<<"||************************************************************||\n"; cout<<"\n\n"< } 6.调试分析 输入n,先是动画显示,最后显示正面向上的牌有哪些 7.测试结果 8.附录(源代码) #include #include #include #include #include usingnamespacestd; #defineMAXSIZE100 typedefstruct//随机数的结构体 { inta; intd; }pocker; typedefstruct//卡片的数目和标记 { intnum;//牌号 intvisit;//牌的正反面 }RedType;//纸牌的信息 typedefstruct//卡片的结构体 { RedTyper[MAXSIZE+1];//纸牌数组 intlength; }SL; voidzhuye()//主页 { system("COLOR3a"); cout<<"||************************************************************||\n" <<"||-----------------------这是一个纸牌游戏---------------------||\n" <<"||************************************************************||\n" <<"||||\n" <<"||*****||\n" <<"||***************||\n" <<"||**************************||\n" <<"||******************************||\n" <<"||**************************************||\n" <<"||************************||\n" <<"||**************||\n" <<"||************||\n" <<"||||\n" <<"||||\n" <<"||************************************************************||\n" <<"||-------------------------你确定要玩吗? ---------------------||\n" <<"||------------------------1---是------------------------------||\n" <<"||------------------------0---不是----------------------------||\n" <<"||************************************************************||\n"; cout<<"你选择的选项: \n"; } voidfangzhuang(SLL)//实现卡片翻转 { system("cls");//清频 inti,j,n,t; cout<<"||************************************************************||\n" <<"当输入N时: "; cin>>n; cout<<"||************************************************************||\n"; for(i=1;i<=n;i++)//底牌全部都是盖住的 { if(L.r[i].visit==0) printf("%c\t",2); Sleep(100); } cout< cout<<"||************************************************************||\n"; Sleep(1000); pocker*s;s=newpocker[n+1]; srand((unsigned)time(NULL)); for(i=1;i<=n;i++) { t=0; s[i].a=rand()%(13-1+1)+1; s[i].d=rand()%(4-3+1)+3; j=i-1; while(j>=1) { if(s[i].d! =s[j].d||s[i].a! =s[j].a) j--; else { s[i].a=rand()%(13-1+1)+1; s[i].d=rand()%(4-3+1)+3; j=i-1; } } } for(i=2;i<=n;i++)//从第二张开始往后 { for(j=i;j<=n;j++)//以基数开始翻 if(L.r[j].num%i==0)//当是i的倍数时翻转 { if(L.r[j].visit==0)//正面翻反面 { L.r[j].visit=1; } else { L.r[j].visit=0; } } cout<<"从"< for(j=1;j<=n;j++)//输出翻转的牌 { if(L.r[j].visit==0)//反面 printf("%c\t",2); else { if(s[j].a>=1&&s[j].a<=10)//正面 printf("%d%c\t",s[j].a,s[j].d); else if(s[j].a==11) printf("J%c\t",s[j].d); else if(s[j].a==12) printf("Q%c\t",s[j].d); else if(s[j].a==13) printf("K%c\t",s[j].d); } Sleep(100);//让卡片有停顿的时间,像动画的样子 } cout< cout<<"||************************************************************||\n"; Sleep(1000); } cout<<"||************************************************************||\n" <<"这时是正面的编号为: "< for(i=1;i<=n;i++)//输出这时正面向上的牌有哪些 { if(L.r[i].visit==1) cout< } cout< cout<<"||************************************************************||\n"; cout<<"\n\n"< } intmain()//住函数 { inti,z,x,y; zhuye(); cin>>z; switch(z)//选择 { case1: //选择1,玩 { ge: SLL; for(i=1;i<=52;i++) { L.r[i].num=i; L.r[i].visit=0;//用0来记反面 } fangzhuang(L);//结束第一次 ti: while (1)//接下来的继续玩 { cout<<"||---------------------------你还想继续玩么? -----------------||\n" <<"||************************************************************||\n" <<"||---------------------------1---不是-------------------------||\n" <<"||---------------------------0---是---------------------------||\n" <<"||************************************************************||\n"; cin>>y; if(y==1) { fangzhuang(L); } else if(y==0) { cout<<"谢谢! 再见! "< return0; } else { cout<<"你输入错误了! "< cout<<"请从新输入! "< } gototi; } break; } case0: //选择0,不玩 { SLL; le: while (1) { cout<<"||************************************************************||\n" <<"||----------------------------你肯定不玩么? ------------------||\n" <<"||----------------------------1---按错了----------------------||\n" <<"||----------------------------0---没意思----------------------||\n" <<"||************************************************************||\n"; cin>>x; if(x==1) { gotoge; } else if(x==0) { cout<<"谢谢! 再见! "< return0; } else cout<<"你输入错误了! "< cout<<"请从新输入! "< gotole; } break; } default: //其他键,退出 { cout<<"你输入错误了! "< cout<<"请从新输入! "< } gotole; } return0; } 9.总结 10.致谢 参考文献 [1]《数据结构(C语言版)》,严蔚敏,李冬梅,吴伟明编著,人民邮电出版社。 [2]《C程序设计(第三版)》,谭浩强著,清华大学出版社。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 纸牌游戏的设计与实现 副本剖析 纸牌 游戏 设计 实现 副本 剖析
![提示](https://static.bdocx.com/images/bang_tan.gif)