纸牌游戏—数据结构实训报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录

一、课题目标 (3)

1.1纸牌游戏的简介 (3)

1.2纸牌游戏的基本要求 (3)

二、概要设计及功能的实现 (3)

2.1纸牌游戏的框架图 (3)

2.2主函数和子函数的框架图 (4)

2.3具体的实现 (7)

2.3.1类的设计 (7)

2.3.2功能的实现 (7)

2.3.2.A发牌的功能 (7)

2.3.2.B出牌的功能 (8)

2.3.2.C二叉排序树的插入的功能 (11)

2.3.2.D二叉树的排序 (12)

2.3.2.E主函数的实现 (12)

三、调试分析 (15)

四、实训的经验与心得 (18)

4.1经验 (18)

4.2心得 (18)

一、课题目标

1.1纸牌游戏的简介

创建一副扑克牌,通过用户与电脑的轮流出牌,谁先出完牌,谁就获胜。

1.2纸牌游戏的基本要求

# 这幅扑克牌没有花色(J、Q、K、A、大小王),俩人进行游戏,其中一个为用户,一个为计算机;

# 每人每轮各发五张牌,各自以这五张牌建立二叉排序树;

# 游戏由用户先出,轮流出牌,每次只能出一张牌并且要比被别人出的大,如:用户出3,计算机则要出比3打的纸牌,没有则选择不出;

# 最先出完纸牌的人获胜。

二、概要设计及功能的实现

2.1纸牌游戏的框架图

2.2

子函数框架图出牌的框架图

建立二叉排序树的

2.3具体的实现

2.3.1类的设计

首先在程序中必须有类,而我的纸牌游戏要求是有纸牌和以纸牌建立二叉排序树,故有两个类:class PlayingCards和class tree

2.3.2功能的实现

2.3.2.A发牌的功能

**实现纸牌游戏发牌(fp)的功能,它的初始条件是该纸牌已存在,操作结果是给用户和电脑每人发5张牌。

void PlayingCards::fp()

{int l,e;//临时储存随机牌数

int f;

for(int i = 0;i < 5;i++)

{

l = rand()%9 + 2;//用户得到牌的点数

cout<<"发到的牌"<

f = rand()%4+3;

while(card1[l-1][f-3] == 1)

{l = rand()%9 + 2;f= rand()%4+3;}

card1[l-1][f-3] = 1;//标记哪些牌被发出

b[i] = l ;

bhuase[i] = f;

e = rand()%9 + 2;//电脑得到牌的点数

f = rand()%4+3;

while(card1[e-1][f-3] == 1)

{e = rand()%9 + 2;f = rand()%4+3;}

card1[e-1][f-3] = 1;//标记哪些牌被发出

c[i] = e;

chuase[i] = f;

}

}

2.3.2.B出牌的功能

**实现纸牌游戏的出牌(cp)功能,它的初始条件是用户和电脑每人手上拥有5张牌,操作结果是由用户先出牌,且后一个人出牌的点数要比前一个人出牌的点数大,谁先出完谁赢。

void PlayingCards::cp()

{ int e = 0; int f = 0;

int n1 = 0;int n2 = 0;//记录牌打出几张

for(int m = 0;m < 5;m++)

{

for(int i = 0;i < 5;i++)

{

for(int j = 0;j < 5;j++)

{

if(b[j] > f&&card2[j][0] == 0)

{

cout<<"玩家出牌"<

card2[j][0] = 1;//标记b(玩家)的第i张牌已经打出

e = b[j]; Sleep(800);

break;

}

}

n1 = 0;n2 = 0;

for(int i = 0;i < 5; i++)

{

n1 = n1 + card2[i][0];

n2 = n2 + card2[i][1];

}

if(n1 == 5)

{cout<<"玩家赢了 ";

break;

}

for( j = 0;j < 5;j++)

{

if(c[j] > e && card2[j][1] == 0)

{

cout<<"电脑出牌"<

card2[j][1] = 1;f = c[j]; Sleep(800); 把密码转换成ANSCII码

break;

}

}

n1 = 0;n2 = 0;

for( i = 0;i < 5; i++)

{

n1 = n1 + card2[i][0];

n2 = n2 + card2[i][1];

}

if(n2 == 5)

{cout<<"电脑赢了";

break;

}

}

n1 = 0;n2 = 0;

for( i = 0;i < 5; i++)

相关文档
最新文档