纸牌游戏——数据结构实训代码
实训要求:
题目十三、纸牌游戏
基本要求:
一副没有花牌(
J
、
Q
、
K
、
A
、大小王)的扑克牌,两个人进行纸牌游戏,其中
一
个人为用户,另一个人为计算机;
每轮每人各发
5
张牌,各自以这
5
张牌建立二叉排序树;
由用户先出,轮流出牌,每次只能出一张并且要比别人出的大,如:用户出
3
,
计
算机则要出比
3
大的牌,没有则选择不出;
最先出完的人获胜。
#include <iostream> #include<stdlib.h
>
//
产生随机数
#include<time.h>
#include <Windows.h> #include <iomanip> using namespace std;
class
PlayingCards
{
private:
int
card1[10][4];//
标记发牌
int
card2[5][2];//
标记出牌
public:
int
b[5];
char bhuase[5]; int c[5];
char chuase[5];
PlayingCards(){};
void yxsm();
//
游戏说明
void fp();//
随机发牌
void cp();//
按顺序出牌
,
并显示
void xswj();//
显示获得的牌
void
xsdn();//
显示获得的牌
void
qk();//
清空标记数组的记录
};
PlayingCards a;
typedef struct node
{
int data;
struct node * LChild; struct node * RChild;
}node;
class tree
{private:
int data;
struct node * LChild; struct node * RChild;
public:
void chushihua(node *t);
node * charu(node *t , int key); node * jianlib(node *t);
node * jianlic(node *t); void paixu1(node * t);
void paixu2(node * t,int *p); void paixu3(node * t,int *p);
};
tree tr;
void
PlayingCards::yxsm()
{
cout<<""<<"
每轮每人各发
5
张牌
,
各自以五张牌建立二叉树,
由用户先出,
轮流出牌
,
"<<endl;
cout<<""<<"
每次只能出一张并且要比别人出的大,
"<<endl;
cout<<""<<"
如:用户出
3
,
计算机则要出比
3
大的牌,没有则选择不出;
"<<endl;
cout<<""<<"
最先出完的人获胜。
"<<endl;
}
void PlayingCards::fp()
{int l,e;//
临时储存随机牌数
int f;
for(int i = 0;i < 5;i++)
{
l = rand()%9 + 2;//
玩家得到牌的点数
cout<<"
发到的牌
"<<l<<""; 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
纸牌游戏数据结构实训代码