怎样用C语言实现纸牌游戏(c语言,开发技术)

时间:2024-05-03 05:46:53 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

1. 基本要求

  • 一副没有花牌(J、Q、K、A、大小王)的扑克牌,两个人进行纸牌游戏,其中一个人为用户,另一个人为计算机;

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

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

  • 最先出完的人获胜。

2. 运行界面

1. 首页面

怎样用C语言实现纸牌游戏

2. 游戏说明

怎样用C语言实现纸牌游戏

3. 开始游戏

怎样用C语言实现纸牌游戏

4. 开始出牌

怎样用C语言实现纸牌游戏

5. 游戏结束

怎样用C语言实现纸牌游戏

3. 代码解释

#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<time.h>intcard[5][2]; //分别标记玩家和用户已经出过的牌intplayercard[5]; //玩家的手牌intcomputercard[5];//电脑的手牌charbhuase[5];charchuase[5];typedefstructnode{ intdata; structnode*LChild; structnode*RChild;}node;typedefstructtree{ intdata; structnode*LChild; structnode*RChild;}tree;//游戏说明voidPlayingCardsyxsm(){ printf("每轮每人各发5张牌,各自以五张牌建立二叉树,由用户先出,轮流出牌,\n"); printf("每次只能出一张并且要比别人出的大,\n"); printf("如:用户出3,计算机则要算出比3大的牌,没有则选择不出;\n"); printf("最先出完的人获胜。\n");}//发牌voidPlayingCardsfp() { intplayer; intcomputer; //玩家和电脑各发五张牌 for(inti=0;i<5;i++){ player=rand()%9+2; printf("玩家发到的牌:%d\n",player); playercard[i]=player; computer=rand()%9+2; printf("电脑发到的牌:%d\n",computer); computercard[i]=computer; }}//出牌voidPlayingCardscp(){ intplayer=0; //玩家当前回合出的牌 intcomputer=0; //电脑当前回合出的牌 intplayercount=0; //玩家的出牌数 intcomputercount=0; //电脑的出牌数 boolflag=false; //当每次都出现最大值时,游戏同样最多进行5回合 for(intm=0;m<5;m++) { //在双方都有牌出的时候,一共最多进行5回合出牌 for(intk=0;k<5;k++) { for(intj=0;j<5;j++) { //确定当前牌可以出,大于对方的出牌,且自己没有出过这张牌 if(playercard[j]>computer&&card[j][0]==0) { printf("玩家出牌%c%d\n",bhuase[j],playercard[j]); playercount++; //玩家出牌数+1 //标记玩家已经出过这张牌了 card[j][0]=1; player=playercard[j]; Sleep(800); //在头函数#include<windows.h>中,起到休眠程序的作用 break; } } //若果玩家已经出完5张牌,则玩家获胜,退出循环 if(playercount==5) { printf("玩家赢了!"); flag=true; break; } for(intj=0;j<5;j++) { //确定当前牌可以出,大于对方的出牌,且自己没有出过这张牌 if(computercard[j]>player&&card[j][1]==0) { printf("电脑出牌%c%d\n",chuase[j],computercard[j]); computercount++;//电脑出牌数+1 //标记电脑已经出过这张牌了 card[j][1]=1; computer=computercard[j]; Sleep(800); break; } } //若果电脑已经出完5张牌,则电脑获胜,退出循环 if(computercount==5) { printf("电脑赢了!"); flag=true; break; } } //如果玩家的牌大于电脑的最大牌后,将电脑当前回合的牌值重置为0,继续进行下一回合 if(player>computer)computer=0; //如果电脑的牌大于玩家的最大牌后,将玩家当前回合的牌值重置为0,继续进行下一回合 if(computer>player)player=0; if(flag)break; }}//发完牌后玩家的手牌voidPlayingCardsxswj(){ printf("玩家\n"); printf("%d%d%d%d%d\n",playercard[0],playercard[1],playercard[2],playercard[3],playercard[4],playercard[5]);}//发完牌后电脑的手牌voidPlayingCardsxsdn(){ printf("电脑\n"); printf("%d%d%d%d%d\n",computercard[0],computercard[1],computercard[2],computercard[3],computercard[4],computercard[5]);}//初始化树的头结点为空voidtreechushihua(node*t){ t=NULL;}//建立平衡二叉树node*treecharu(node*t,intkey){ //如果头结点为空,就将当前节点设置为根节点 if(t==NULL) { node*p; p=(node*)malloc(sizeof(node)); p->data=key; p->LChild=NULL; p->RChild=NULL; t=p; } //如果头结点不为空,则进行平衡二叉树的插入操作 else { //插入结点的值小于根节点,则插入左子树 if(key<t->data) t->LChild=treecharu(t->LChild,key); //插入结点的值大于等于根节点,则插入右子树 else t->RChild=treecharu(t->RChild,key); } returnt;}//将玩家手牌存储到平衡二叉树中node*jianlib(node*t){ inti,key; for(i=0;i<5;i++) { key=playercard[i]; t=treecharu(t,key); } returnt;}//将电脑手牌存储到平衡二叉树中node*jianlic(node*t){ inti,key; for(i=0;i<5;i++) { key=computercard[i]; t=treecharu(t,key); } returnt;}//顺序输出玩家或电脑手牌voidtreepaixu1(node*t){ if(t!=NULL) { treepaixu1(t->LChild); printf("%d",t->data); treepaixu1(t->RChild); }}//先序遍历玩家平衡二叉树voidtreepaixu2(node*t,int*p){ if(t==NULL)return; else { //先序遍历,将玩家手牌有序化 treepaixu2(t->LChild,p); playercard[(*p)++]=t->data; treepaixu2(t->RChild,p); }}//先序遍历电脑平衡二叉树voidtreepaixu3(node*t,int*p){ if(t==NULL)return; else { //先序遍历,将电脑手牌有序化 treepaixu3(t->LChild,p); computercard[(*p)++]=t->data; treepaixu3(t->RChild,p); }}//主函数intmain(){ intk=0; //随机函数,通过时间种子来获取随机数种子,获得随机数 srand((unsigned)time(NULL)); intn=0; //选择菜单 while(k!=-1) { puts(""); puts(""); puts(""); printf("\t\t\t****纸牌游戏****\n"); printf("\t\t\t****1.游戏说明****\n"); printf("\t\t\t****2.开始游戏****\n"); printf("\t\t\t****3.开始出牌****\n"); printf("\t\t\t****4.游戏结束****\n"); printf("\t\t\t******************\n"); puts(""); printf("\t\t**********************************\n"); printf("\t\t**********************************\n"); puts(""); printf("\t\t\t请输入(1、2、3、4):\n"); scanf("%d",&k); switch(k){ //游戏说明 case1:PlayingCardsyxsm();break; //发牌阶段 case2:{ //发牌 PlayingCardsfp(); //建立玩家二叉树 node*t1=NULL; t1=jianlib(t1); printf("玩家手牌为:"); treepaixu1(t1); //建立电脑二叉树 node*t2=NULL; t2=jianlic(t2); puts(""); printf("电脑手牌为:"); treepaixu1(t2); //玩家手牌有序化 n=0; treepaixu2(t1,&n); //电脑手牌有序化 n=0; treepaixu3(t2,&n); puts(""); //输出玩家和电脑的手牌 PlayingCardsxswj(); PlayingCardsxsdn(); break; } //出牌阶段 case3:{ PlayingCardscp(); break; } //退出游戏 case4:k=-1;break; } } return0;}
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:怎样用C语言实现纸牌游戏的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:如何进行spring@value注入配置文件值失败的原因分析下一篇:

7 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18