首页 > 作文

C语言实战之纸牌游戏

更新时间:2023-04-04 03:43:22 阅读: 评论:0

目录
1. 基本要求2. 运行界面3. 代码解释

1. 基本要求

一副没有花牌(j、q、k、a、大小王)的扑克牌,两个人进行纸牌游戏,其中一个人为用户,另一个人为计算机;每轮每人各发5张牌,各自以这5张牌建立二叉排序树;由用户先出,轮流出牌,每次只能出一张并且要比别人出的大,如:用户出3,计算机则要出比3大的牌,没有则选择不出;最先出完的人获胜。

2. 运行界面

1. 首页面

2. 游戏说明

3. 开始游戏

4. 开始出牌

5. 游戏结束

3. 代码解释

#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<time.h>i药香nt card[5][2]; // 分别标记玩家和用户已经出过的牌 int playercard[5]; // 玩家的手牌 int computercard[5]; // 电脑的手牌 char bhua[5];char chua[5];typedef struct node{int data;struct node *lchild;struct node *rchild;}node;typedef struct tree{int data;struct node *lchild;struct node *rchild;}tree;// 游戏说明void playingcardsyxsm(){printf(" 每轮每人各发5张牌,各自以五张牌建立二叉树,由用户先出,轮流出牌,\n");printf(" 每次只能出一张并且要比别人出的大,\n");printf(" 如:用户出3,计算机则要算出比3大的牌,没有则选择不出;\n");printf(" 最先出完的人获胜。\n");}// 发牌void playingcardsfp() {int player;int computer;// 玩家和电脑各发五张牌 for(int i = 0; i < 5; i ++ ){player = rand() % 9 + 2;printf("玩家发到的牌:%d \n", player); playerca赵一曼的故事rd[i] = player;computer = rand() % 9 + 2;printf("电脑发到的牌:%d \n", computer); computercard[i] = computer;}}// 出牌 void playingcardscp(){int player = 0;// 玩家当前回合出的牌 int computer = 0;// 电脑当前回合出的牌 int playercount = 0;// 玩家的出牌数 int computercount = 0;// 电脑的出牌数 bool flag = fal; // 当每次都出现最大值时,游戏同样最多进行5回合 for(int m = 0; m < 5; m ++ ){// 在双方都有牌出的时候,一共最多进行5回合出牌 for(int k = 0; k < 5; k ++ ){for(int j = 0; j < 5; j ++ ){// 确定当前牌可以出,大于对方的出牌,且自己没有出过这张牌 if(playercard[j] > computer && card[j][0] == 0){printf("玩家出牌%c%d\n", bhua[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(int j = 0; j < 5; j ++ ){// 确定当前牌可以出,大于对方的出牌,且自己没有出过这张牌 if(computercard[j] > player && card[j][1] == 0){printf("电脑出牌%c%d\n", chua[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;}}// 发完牌后玩家的手牌 void playingcardsxswj(){printf("玩家\n");printf("   %d   %d   %d   %d   %d\n", playercard[0], playercard[1], playercard[2], playercard[3], playercard[4], playercard[5]);}// 发完牌后电脑的手牌 void playingcardsxsdn(){printf("电脑\n");printf("   %d   %d   %d   %d   %d\n", computercard[0], computercard[1], computercard[2], computercard[3], computercard[4], computercard[5]);}// 初始化树的头结点为空 void treechushihua(node *t){t = null;} // 建立平衡二叉树 node *treecharu(node *t, int key){// 如果头结点为空,就将当前节点设置为根节点 if(t == null){node *p;p = (node*)malloc(sizeof(node));p->data = key;p->lchild = null;p->rchild = null;t = p;}// 如果头结点不为空,则进行平衡二叉树的插入操作 el{// 插入结点的值小于根节点,则插入左子树 if(key < t->data)t->lchild = treecharu(t->lchild, key);// 插入结点的值大于等于根节点,则插入右子树 elt->rchild = treecharu(t->rchild, key);}return t;}// 将玩家手牌存储到平衡二叉树中 node *jianlib(node *t)  {int i, key;for(i = 0; i < 5; i ++ ){key = playercard[i];t = treecharu(t, key);}return t;} // 将电脑手牌存储到平衡二叉树中 node *jianlic(node *t)  {int i, key;for(i = 0; i < 5; i ++ ){key = computercard[i];t = treecharu(t, key提升学历本科);}return t;} // 顺序输出玩家或电脑手牌 void treepaixu1(node *t)  {if(t != null){treepaixu1(t->lchild);printf("%d ", t->data);treepaixu1(t->rchild);}} // 先序遍历玩家平衡二叉树 void treepaixu2(node *t, int *p)  {if(t == null) return;el{// 先序遍历,企业规章制度范本将玩家手牌有序化 treepaixu2(t->lchild,  p);playercard[(*p) ++ ] = t->data;treepaixu2(t->rchild, p);}}// 先序遍历电脑平衡二叉树 void treepaixu3(node *t, int *p)  {if(t == null) return;el{// 先序遍历,将电脑手牌有序化 treepaixu3(t->lchild, p);computercard[(*p) ++ ] = t->data;treepaixu3(t->rchild, p);}}  // 主函数 int main(){int k = 0;// 随机函数,通过时间种子来获取随机数种子,获得随机数 srand((unsigned)time(null));int n = 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){// 游戏说明 ca 1: playingcardsyxsm(); break;// 发牌阶段 ca 2:{// 发牌   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;  }  // 出牌阶段 ca 3:{playingcardscp();break; } // 退出游戏  ca 4:k=-1; break;}}return 0;}          

以上就是c语言实战之纸牌游戏的详细内容,更多关于c语言纸牌游戏的资料请关注www.887551.com其它相关文章!

本文发布于:2023-04-04 03:43:21,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/4c8514cfe4475d92054a5133d81dcc87.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:C语言实战之纸牌游戏.doc

本文 PDF 下载地址:C语言实战之纸牌游戏.pdf

标签:玩家   电脑   出牌   游戏
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图