简单扑克牌游戏C语言,【算法】C语言实现简易的扑克牌游戏
将一副扑克牌平均分成两份,每人拿一份。a先拿出手中的第一张扑克牌放在桌上,
然后b也拿出手中的第一张扑克牌,并放在a刚打出的扑克牌
的上面,就像这样两人交替出牌。出牌时,如果某人打出的牌与桌上某张牌的牌面相同,即
可将两张相同的牌及其中间所夹的牌全部取走,并依次放到自己手中牌的末尾。当任意一人
手中的牌全部出完时,游戏结束,对手获胜。
以下是代码的实现:
#define _crt_secure_no_deprecate
#include
#include
struct queue//定义队列的结构体
{
int data[1000];
int head;
int tail;
};
struct stack//定义栈的结构体
{
int data[10];
int top;
};
void poker()
{
struct queue q1;
struct queue q2;
struct stack s;
int arr[10];
int i, t;
q1.head = 1; q1.tail = 1;
q2.head = 1; q2.tail = 1;
s.top = 0;
for (i = 1; i <= 9; i++)
{
arr[i] = 0;//对数组进行初始化,全部为0
}
for (i = 1; i <= 6; i++)
{
scanf("%d", &q1.data[q1.tail]);
q1.tail++;
}
for (i = 1; i <= 6; i++)
{
scanf("%d", &q2.data[q2.tail]);
q2.tail++;
}
while (q1.head < q1.tail&&q2.head < q2.tail)
{
t = q1.data[q1.head];
if (arr[t] == 0)
{
q1.head++;
s.top++;
s.data[s.top] = t;
arr[t] = 1;
}
else
{
q1.head++;
q1.data[q1.tail] = t;
q1.tail++;
while (s.data[s.top] != t)
{
arr[s.data[s.top]] = 0;
q1.data[q1.tail] = s.data[s.top];
q1.tail++;
s.top--;
}
}
t = q2.data[q2.head];
if (arr[t] == 0)
{
q2.head++;
s.top++;
s.data[s.top] = t;
arr[t] = 1;
}
else
{
q2.head++;
q2.data[q2.tail] = t;
q2.tail++;
while (s.data[s.top] != t)
{
arr[s.data[s.top]] = 0;
q2.data[q2.tail] = s.data[s.top];
q2.tail++;
s.top--;
}
}
}
if (q2.head == q2.tail)
{
printf("a赢\n");
printf("a当前手中的牌是:");
for (i = q1.head; i <= q1.tail - 1; i++)
{
printf(" %d", q1.data[i]);
}
if (s.top > 0)
{
printf("\n桌上的牌是:");
for (i = 1; i <= s.top; i++)
{
printf(" %d", s.data[i]);
}
printf("\n");
}
else
{
printf("\n桌上已经没有牌了");
}
}
else
{
printf("b赢\n");
printf("b当前手中的牌是:");
for (i = q2.head; i <= q2.tail - 1; i++)
{
printf(" %d", q2.data[i]);
}
if (s.top > 0)
{
printf("\n桌上的牌是:");
for (i = 1; i <= s.top; i++)
{
printf(" %d", s.data[i]);
}
printf("\n");
}
else
{
printf("\n桌上已经没有牌了");
}
}
}
int main()
{
poker();
system("pause");
return 0;
}
运行的结果:
简单扑克牌游戏C语言,【算法】C语言实现简易的扑克牌游戏相关推荐
- mcem r语言代码_一个简单文本分类任务-EM算法-R语言
一.问题介绍 概率分布模型中,有时只含有可观测变量,如单硬币投掷模型,对于每个测试样例,硬币最终是正面还是反面是可以观测的.而有时还含有不可观测变量,如三硬币投掷模型.问题这样描述,首先投掷硬币A,如 ...
- 学校门口的树C语言算法,C语言校园导游程序设计汇报.doc
C语言校园导游程序设计汇报 <应用程序设计 课程设计>报告 班级: 学号: 姓名: 指导教师: 成绩评定: 目录 题目: 设计一个校园导游程序,为来访的客人提供各种信息查询服务 一.需求分 ...
- 田忌赛马c语言算法,C语言里关于田忌赛马的问题
C语言里关于田忌赛马的问题0 limmettle2014.10.24浏览83次分享举报 这是题目 题目描述 赛马是一古老的游戏,早在公元前四世纪的中国,处在诸侯割据的状态,历史上称为"战国时 ...
- 必背C语言算法 C语言小写转大写
算法思想 在计算机中,大小写字母的ASCII值差32,字符a的ASCII值为97,字符A的ASCII值为65. 程序代码 #include <stdio.h> int main() {ch ...
- 加法接力赛C语言算法,C语言循环结构
<C语言循环结构>由会员分享,可在线阅读,更多相关<C语言循环结构(47页珍藏版)>请在人人文库网上搜索. 1.UML和需求建模,第六章,循环控制,UML和需求建模,主要内容, ...
- 输出每行坐标的的c语言算法,C语言输出空心菱形的实现
http://www.cnblogs.com/liutogo/archive/2013/05/31/3110394.html 输出空心菱形是c语言初学者经常遇到的问题,由于涉及c语言的基础知识较多,也 ...
- mm1模型的c语言算法,C语言动画程序源码(1).pdf
C 语言动画程序 #include #include #include #include #define pi 3.1415926535 double ca3mm1(double m1,double ...
- 必背C语言算法 C语言求自然底数e
自然底数 e=2.718281828-,e 的计算公式如下: e=1+1/1!+1/2!+1/3!+- 要求当最后一项的值小于 10-10 时结束. 算法思想 使用循环实现累加求和,并在求和后计算下一 ...
- 残缺棋盘问题c语言算法,c语言算法--分而治之算法---残缺棋盘
残缺棋盘(defective chessboard)是一个有2k×2k 个方格的棋盘,其中恰有一个方格残缺.图2 - 3给出k≤2时各种可能的残缺棋盘,其中残缺的方格用阴影表示.注意当k= 0时,仅存 ...
- 一个简单的c 游戏编程语言,编程达人 c语言写一个简单的小游戏-推箱子
在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...
最新文章
- Linux下查看nginx apache mysql php的编译参数
- 蓝桥杯-矩阵乘法(java)
- C++基于多态实现依赖颠倒原则附源码
- boost::mpi模块指针序列化测试
- 【HDU 1711】Number Sequence(裸KMP算法)
- java导出生成word(类似简历导出)
- piwik抓取用户交互行为
- ORACLE利用STANDBY端RMAN备份进行数据恢复
- python单行箭头_在Python中,如何让箭头尖在指定的坐标处开始/结束?
- 【数据库实验课堂】实验二 使用SQL Server管理数据表
- Python中列表的del,remove和pop函数之间的区别
- 搜狗浏览器中如何删除自带工具 搜狗浏览器删除自带工具的方法步骤
- 机器人走进开放源代码
- cad怎么导出jpg图片格式?
- 音量控制 单片机c 语言,(封贴)请大神代写音响音量控制程序(有偿代写)单片机加TDA7313控制...
- postfix搭建纯邮件转发服务器
- 在Azure上搭建SQL云数据库
- 鸿蒙石之鉴老猴死了怎么办,智取芭蕉扇那个剧情选分支1过不了怎么办
- 北海屠龙记------一
- Arduino基础入门篇01—进入Arduino的世界