紙牌遊戲 小貓釣魚

2021-09-08 12:45:08 字數 2268 閱讀 2343

將一副撲克牌平均分成兩份,每人拿乙份。小哼先拿出手中的第一張撲克牌放在桌上,然後小哈也拿出手中的第一張撲克牌,並放在小哼剛打出的撲克牌的上面,就像這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上某張牌的牌面相同,即可將兩張相同的牌及其中間所夾的牌全部取走,並依次放到自己手中牌的末尾。當任意一人手中的牌全部出完時,遊戲結束,對手獲勝。(小哼和小哈手中牌的牌面只有1~9)

1,首先我們來建立乙個結構體用來實現佇列:

struct

queue;

2,再建立乙個結構體用來實現棧:

struct

stack;

3,定義兩個佇列變數q1和q2:

struct queue q1,q2;  //

q1用來模擬小哼手中的牌,q2用來模擬小哈手中的牌

struct stack s; //

棧變數s用來模擬桌上的牌

4,初始化佇列和棧:

/*

初始化佇列q1和q2為空,因為此時兩人手中都還沒有牌

*/q1.head=1;q1.tail=1

;q2.head=1;q2.tail=1

;s.top=0; //

初始化棧s為空,因為最開始的時候桌上也沒有牌

5,讀入小哼和小哈最初時手中的牌,分兩次讀入,每次讀入6個數,分別插入q1和q2中:

for(i=1;i<=6;i++)

for(i=1;i<=6;i++)

6,遊戲開始,小哼先出牌:

t=q1.data[q1.head];  //

小哼先亮出一張牌

7,列舉桌上的每一張牌與t比較(判斷桌上的牌與t有沒有相同的):

if(flag==0

)

8,如果flag的值為1就標明小哼可以贏得桌上的牌,所以需要將贏得的牌依次放入小哼的手中:

if(flag==1)  //

小哼此輪可以贏牌

}

9,至此,小哼出牌的所有階段就模擬完了(小哈類似)。接下來我們要判斷遊戲如何結束:即只要兩人中有乙個人的牌用完了遊戲就結束。因此我們需要在模擬兩人出牌**的外面加乙個while迴圈來判斷:

while(q1.head//

當佇列不為空的時候執行迴圈

10,輸出誰最終贏得了遊戲,以及遊戲結束後獲勝者手中的牌和桌上的牌。(以小哼為例)

if(q2.head==q2.tail)//

如果小哼獲勝那麼小哈手中一定沒有牌了(佇列q2為空)

else

printf(

"\n桌上已經沒有牌了");

}

#includestruct

queue;

struct

stack;

intmain()

for(i=1;i<=6;i++)

while(q1.head//

當佇列不為空的時候執行迴圈

t=q1.data[q1.head]; //

小哼先亮出一張牌

if(book[t]==0

)

else

book[s.data[s.top]]=0

; q1.data[q1.tail]=s.data[s.top];

q1.tail++;

s.top--;

}if(q1.head==q1.tail) break

;

t=q2.data[q2.head];

if(book[t]==0

)

else

book[s.data[s.top]]=0

; q2.data[q2.tail]=s.data[s.top];

q2.tail++;

s.top--;}}

if(q2.head==q2.tail)//

如果小哼獲勝那麼小哈手中一定沒有牌了(佇列q2為空)

else

printf(

"\n桌上已經沒有牌了");

}else

else

printf(

"\n桌上已經沒有牌了");

} return0;

}

小貓釣魚

紙牌遊戲 小貓釣魚

小貓釣魚 遊戲規則 將一副撲克牌平均分成兩份,每人拿乙份。小哼先拿出手上的第一張撲克牌放在桌子上,然後小哈也拿出手上的第一張撲克牌,放在小哼剛打出的牌上面,就這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上的牌的牌面相同,即可將兩張相同的牌及其中間所加的牌全部取走,並依次放到自己手中牌的末尾,當任意...

紙牌遊戲 小貓釣魚

星期天小哼和小哈約在一起玩桌遊,他們正在玩乙個非常古怪的撲克遊戲 小貓釣魚 遊戲的規則是這樣的 將一副撲克牌平均分成兩份,每人拿乙份。小哼先拿出手中的第一張撲克牌放在桌上,然後小哈也拿出手中的第一張撲克牌,並放在小哼剛打出的撲克牌的上面,就像這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上某張牌的牌...

紙牌遊戲 小貓釣魚

將一副撲克牌平均分成兩份,每人拿乙份。小哼先拿出手中的第一張撲克牌放在桌上,然後小哈也拿出手中的第一張撲克牌,並放在小哼剛打出的撲克牌的上面,就像這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上某張牌的牌面相同,即可將兩張相同的牌及其中間所夾的牌全部取走,並依次放到自己手中牌的末尾。當任意一人手中的...