C語言實(shí)現(xiàn)紙牌游戲之小貓釣魚算法
本文實(shí)例為大家分享了C語言實(shí)現(xiàn)小貓釣魚算法的具體代碼,供大家參考,具體內(nèi)容如下
星期天小哼和小哈約在一起玩桌游,他們正在玩一個(gè)非常古怪的撲克游戲——“小貓釣魚”。游戲的規(guī)則是這樣的:將一副撲克牌平均分成兩份,每人拿一份。小哼先拿出手中的第一張撲克牌放在桌上,然后小哈也拿出手中的第一張撲克牌,并放在小哼剛打出的撲克牌的上面,就像這樣兩人交替出牌。出牌時(shí),如果某人打出的牌與桌上某張牌的牌面相同,即可將兩張相同的牌及其中間所夾的牌全部取走,并依次放到自己手中牌的末尾。當(dāng)任意一人手中的牌全部出完時(shí),游戲結(jié)束,對(duì)手獲勝。(用兩個(gè)隊(duì)列和一個(gè)棧完成)
代碼如下:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
/*
* 游戲規(guī)則是這樣的,將一副撲克牌平均分成兩份,每人拿一份。小哼先拿出手中的第一張撲克牌放桌上,然后小哈也拿出手中的第一張撲克牌,并放在小哼剛打出的撲克牌的上面,就像這樣兩個(gè)人交替出牌。出牌時(shí),如果某人打出的牌與桌上某張牌的牌面相同,即可將兩張相同的牌及中間的牌全部拿走,并依次放到自己手中的牌的末尾。當(dāng)任意一個(gè)人手上的牌全部打完時(shí),另一個(gè)人獲勝
* 郭文峰
* 2018/9/29
*/
struct queue
{
int data[1000];
int head;
int tail;
};
struct stack
{
int data[10];
int top;
};
int main(void)
{
struct queue q1, q2;
struct stack s;
int i = 0;
int t = 0;
int book[10];
//初始化隊(duì)列
q1.head = 1;
q1.tail = 1;
q2.head = 1;
q2.tail = 1;
//初始化棧
s.top = 0;
for (i = 0; i < 10; i++)
{
book[i] = 0;
}
//依次向隊(duì)列插入6個(gè)數(shù)
//給小哼6張牌
for (i = 1; i <= 6; i++)
{
scanf("%d", &q1.data[q1.tail]);
q1.tail++;
}
//依次向隊(duì)列插入6個(gè)數(shù)
//給小哈6張牌
for (i = 1; i <= 6; i++)
{
scanf("%d", &q2.data[q2.tail]);
q2.tail++;
}
//當(dāng)隊(duì)列不為空的時(shí)候執(zhí)行循環(huán)
while (q1.head < q1.tail && q2.head < q2.tail)
{
t = q1.data[q1.head];//小哼出一張牌
//判斷小哼打出的牌是否能贏
if (book[t] == 0)//表明桌上沒有牌面為t 的牌
{
q1.head++;
s.top++;
s.data[s.top] = t;
book[t] = 1;
}
else
{
q1.head++;
q1.data[q1.tail] = t;
q1.tail++;
while (s.data[s.top] != t)
{
book[s.data[s.top]] = 0;
q1.data[q1.tail] = s.data[s.top];
q1.tail++;
s.top--;
}
}
t = q2.data[q2.head];//小哈出一張牌
//判斷小哈打出的牌是否能贏
if (book[t] == 0)//表明桌上沒有牌面為t 的牌
{
q2.head++;
s.top++;
s.data[s.top] = t;
book[t] = 1;
}
else
{
q2.head++;
q2.data[q2.tail] = t;
q2.tail++;
while (s.data[s.top] != t)
{
book[s.data[s.top]] = 0;
q2.data[q2.tail] = s.data[s.top];
q2.tail++;
s.top--;
}
}
}
if (q2.head == q2.tail)
{
printf("小哼WIN\n");
printf("小哼手上還剩的牌為:");
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]);
}
}
else
{
printf("桌上沒有牌了!\n");
}
}
else
{
printf("小哈WIN\n");
printf("小哈手上還剩的牌為:");
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]);
}
}
else
{
printf("桌上沒有牌了!\n");
}
}
system("pause");
return 0;
}
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:C++線程安全的單例模式講解
欄 目:C語言
本文標(biāo)題:C語言實(shí)現(xiàn)紙牌游戲之小貓釣魚算法
本文地址:http://m.jygsgssxh.com/a1/Cyuyan/515.html
您可能感興趣的文章
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用函數(shù)刪除字符
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)式函數(shù)庫
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)數(shù)怎么表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段函數(shù)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排序法函數(shù)
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段函數(shù)
- 04-02C語言中怎么打出三角函數(shù) c語言中怎么打出三角函數(shù)的值
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求階乘


閱讀排行
- 1C語言 while語句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語言函數(shù)調(diào)用后清空內(nèi)存 c語言調(diào)用
- 04-02func函數(shù)+在C語言 func函數(shù)在c語言中
- 04-02c語言的正則匹配函數(shù) c語言正則表達(dá)
- 04-02c語言用函數(shù)寫分段 用c語言表示分段
- 04-02c語言中對(duì)數(shù)函數(shù)的表達(dá)式 c語言中對(duì)
- 04-02c語言編寫函數(shù)冒泡排序 c語言冒泡排
- 04-02c語言沒有round函數(shù) round c語言
- 04-02c語言分段函數(shù)怎么求 用c語言求分段
- 04-02C語言中怎么打出三角函數(shù) c語言中怎
- 04-02c語言調(diào)用函數(shù)求fibo C語言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10C#中split用法實(shí)例總結(jié)
- 04-02jquery與jsp,用jquery


