將一副撲克牌平均分成兩份,每人拿乙份。小哼先拿出手中的第一張撲克牌放在桌上,然後小哈也拿出手中的第一張撲克牌,並放在小哼剛打出的撲克牌的上面,就像這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上某張牌的牌面相同,即可將兩張相同的牌及其中間所夾的牌全部取走,並依次放到自己手中牌的末尾。當任意一人手中的牌全部出完時,遊戲結束,對手獲勝。(小哼和小哈手中牌的牌面只有1~9)
1,首先我們來建立乙個結構體用來實現佇列:
struct2,再建立乙個結構體用來實現棧:queue;
struct3,定義兩個佇列變數q1和q2:stack;
struct queue q1,q2; //4,初始化佇列和棧:q1用來模擬小哼手中的牌,q2用來模擬小哈手中的牌
struct stack s; //
棧變數s用來模擬桌上的牌
/*5,讀入小哼和小哈最初時手中的牌,分兩次讀入,每次讀入6個數,分別插入q1和q2中:初始化佇列q1和q2為空,因為此時兩人手中都還沒有牌
*/q1.head=1;q1.tail=1
;q2.head=1;q2.tail=1
;s.top=0; //
初始化棧s為空,因為最開始的時候桌上也沒有牌
for(i=1;i<=6;i++)6,遊戲開始,小哼先出牌:for(i=1;i<=6;i++)
t=q1.data[q1.head]; //7,列舉桌上的每一張牌與t比較(判斷桌上的牌與t有沒有相同的):小哼先亮出一張牌
if(flag==08,如果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;
}
紙牌遊戲 小貓釣魚
小貓釣魚 遊戲規則 將一副撲克牌平均分成兩份,每人拿乙份。小哼先拿出手上的第一張撲克牌放在桌子上,然後小哈也拿出手上的第一張撲克牌,放在小哼剛打出的牌上面,就這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上的牌的牌面相同,即可將兩張相同的牌及其中間所加的牌全部取走,並依次放到自己手中牌的末尾,當任意...
紙牌遊戲 小貓釣魚
星期天小哼和小哈約在一起玩桌遊,他們正在玩乙個非常古怪的撲克遊戲 小貓釣魚 遊戲的規則是這樣的 將一副撲克牌平均分成兩份,每人拿乙份。小哼先拿出手中的第一張撲克牌放在桌上,然後小哈也拿出手中的第一張撲克牌,並放在小哼剛打出的撲克牌的上面,就像這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上某張牌的牌...
紙牌遊戲 小貓釣魚
將一副撲克牌平均分成兩份,每人拿乙份。小哼先拿出手中的第一張撲克牌放在桌上,然後小哈也拿出手中的第一張撲克牌,並放在小哼剛打出的撲克牌的上面,就像這樣兩人交替出牌。出牌時,如果某人打出的牌與桌上某張牌的牌面相同,即可將兩張相同的牌及其中間所夾的牌全部取走,並依次放到自己手中牌的末尾。當任意一人手中的...