纸牌游戏的设计与实现副本剖析.docx

上传人:b****7 文档编号:11195910 上传时间:2023-02-25 格式:DOCX 页数:22 大小:301.69KB
下载 相关 举报
纸牌游戏的设计与实现副本剖析.docx_第1页
第1页 / 共22页
纸牌游戏的设计与实现副本剖析.docx_第2页
第2页 / 共22页
纸牌游戏的设计与实现副本剖析.docx_第3页
第3页 / 共22页
纸牌游戏的设计与实现副本剖析.docx_第4页
第4页 / 共22页
纸牌游戏的设计与实现副本剖析.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

纸牌游戏的设计与实现副本剖析.docx

《纸牌游戏的设计与实现副本剖析.docx》由会员分享,可在线阅读,更多相关《纸牌游戏的设计与实现副本剖析.docx(22页珍藏版)》请在冰豆网上搜索。

纸牌游戏的设计与实现副本剖析.docx

纸牌游戏的设计与实现副本剖析

*****计算机系

《数据结构》课程设计报告书

 

纸牌游戏的设计与实现

 

学生姓名:

*****

学号:

*****

年级专业及班级:

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程序设计(第三版)》,谭浩强著,清华大学出版社。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1