您好,欢迎访问三七文档
当前位置:首页 > 医学/心理学 > 药学 > 纸牌游戏―数据结构实训代码
纸牌游戏——数据结构实训代码实训要求:题目十三、纸牌游戏基本要求:一副没有花牌(J、Q、K、A、大小王)的扑克牌,两个人进行纸牌游戏,其中一个人为用户,另一个人为计算机;每轮每人各发5张牌,各自以这5张牌建立二叉排序树;由用户先出,轮流出牌,每次只能出一张并且要比别人出的大,如:用户出3,计算机则要出比3大的牌,没有则选择不出;最先出完的人获胜。#includeiostream#includestdlib.h//产生随机数#includetime.h#includeWindows.h#includeiomanipusingnamespacestd;classPlayingCards{private:intcard1[10][4];//标记发牌intcard2[5][2];//标记出牌public:intb[5];charbhuase[5];intc[5];charchuase[5];PlayingCards(){};voidyxsm();//游戏说明voidfp();//随机发牌voidcp();//按顺序出牌,并显示voidxswj();//显示获得的牌voidxsdn();//显示获得的牌voidqk();//清空标记数组的记录};PlayingCardsa;typedefstructnode{intdata;structnode*LChild;structnode*RChild;}node;classtree{private:intdata;structnode*LChild;structnode*RChild;public:voidchushihua(node*t);node*charu(node*t,intkey);node*jianlib(node*t);node*jianlic(node*t);voidpaixu1(node*t);voidpaixu2(node*t,int*p);voidpaixu3(node*t,int*p);};treetr;voidPlayingCards::yxsm(){cout每轮每人各发5张牌,各自以五张牌建立二叉树,由用户先出,轮流出牌,endl;cout每次只能出一张并且要比别人出的大,endl;cout如:用户出3,计算机则要出比3大的牌,没有则选择不出;endl;cout最先出完的人获胜。endl;}voidPlayingCards::fp(){intl,e;//临时储存随机牌数intf;for(inti=0;i5;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-3]=1;//标记哪些牌被发出c[i]=e;chuase[i]=f;}}voidPlayingCards::cp(){inte=0;intf=0;intn1=0;intn2=0;//记录牌打出几张for(intm=0;m5;m++){for(inti=0;i5;i++){for(intj=0;j5;j++){if(b[j]f&&card2[j][0]==0)//有牌且比电脑的大{cout玩家出牌bhuase[j]b[j]endl;card2[j][0]=1;//标记b(玩家)的第i张牌已经打出e=b[j];Sleep(800);break;}}n1=0;n2=0;for(inti=0;i5;i++){n1=n1+card2[i][0];//玩家出牌总数n2=n2+card2[i][1];//电脑出牌总数}if(n1==5){cout玩家赢了;break;}for(j=0;j5;j++){if(c[j]e&&card2[j][1]==0){cout电脑出牌chuase[j]c[j]endl;card2[j][1]=1;f=c[j];Sleep(800);//把密码转换成ANSCII码break;}}n1=0;n2=0;for(i=0;i5;i++){n1=n1+card2[i][0];//玩家出牌总数n2=n2+card2[i][1];//电脑出牌总数}if(n2==5){cout电脑赢了;break;}}n1=0;n2=0;for(i=0;i5;i++){n1=n1+card2[i][0];n2=n2+card2[i][1];}if(n1==5||n2==5)break;if(fe){e=0;}if(ef){f=0;}//有一方没牌可出了,由牌点数大的那一方继续出牌}}voidPlayingCards::xswj(){cout玩家:endl;inti=0;coutbhuase[0]setw(2)b[0]bhuase[1]setw(2)b[1]bhuase[2]setw(2)b[2]bhuase[3]setw(2)b[3]bhuase[4]setw(2)b[4]endl;}voidPlayingCards::xsdn(){cout电脑endl;coutchuase[0]setw(2)c[0]chuase[1]setw(2)c[1]chuase[2]setw(2)c[2]chuase[3]setw(2)c[3]chuase[4]setw(2)c[4]endl;}voidPlayingCards::qk(){for(inti=0;i5;i++)for(intj=0;j2;j++){card2[i][j]=0;}for(i=0;i10;i++)for(intj=0;j4;j++){card1[i][j]=0;//标记发牌}}voidtree::chushihua(node*t){t=NULL;}node*tree::charu(node*t,intkey){if(t==NULL){node*p;p=(node*)malloc(sizeof(node));//其中(Node*)为强制转换,把返回类型void*转换为Node*,sizeof(Node)为获取Node类型占据空间的大小p-data=key;p-LChild=NULL;p-RChild=NULL;t=p;}else{if(keyt-data)t-LChild=charu(LChild,key);elset-RChild=charu(t-RChild,key);}returnt;//important!}node*tree::jianlib(node*t)//建立玩家的树{inti,key;for(i=0;i5;i++){key=a.b[i];t=charu(t,key);}returnt;}node*tree::jianlic(node*t)//建立电脑的数{inti,key;for(i=0;i5;i++){key=a.c[i];t=charu(t,key);}returnt;}voidtree::paixu1(node*t)//中序遍历输出{if(t!=NULL){paixu1(t-LChild);coutt-data;paixu1(t-RChild);}}voidtree::paixu2(node*t,int*p){if(t==NULL)return;else{paixu2(t-LChild,p);a.b[(*p)++]=t-data;paixu2(t-RChild,p);}}voidtree::paixu3(node*t,int*p){if(t==NULL)return;else{paixu3(t-LChild,p);a.c[(*p)++]=t-data;paixu3(t-RChild,p);}}intmain(){intk=0;srand((unsigned)time(NULL));//调用系统时间为随机函数赋初值intn=0;while(k!=-1){coutendlendlendl;cout\t\t\t**************纸牌游戏****************endl;cout******************************************endl;cout\t\t\t*************1.游戏说明********endl;cout\t\t\t*************2.开始游戏*********endl;cout\t\t\t*************3.开始出牌*************endl;cout\t\t\t*************4.游戏结束**********endl;cout*************************************endl;cout\t\t\t请输入(1、2、3、4):endl;cink;switch(k){case1:a.yxsm();break;case2:{a.qk();a.fp();node*t1=NULL;t1=tr.jianlib(t1);tr.paixu1(t1);//中序遍历输出node*t2=NULL;t2=tr.jianlic(t2);n=0;//初始化tr.paixu2(t1,&n);n=0;tr.paixu3(t2,&n);coutendl;a.xswj();a.xsdn();break;}case3:{a.cp();a.qk();break;}case4:k=-1;break;}}return0;}
本文标题:纸牌游戏―数据结构实训代码
链接地址:https://www.777doc.com/doc-5013240 .html