java實現(xiàn)小貓釣魚游戲
更新時間:2019年01月15日 14:54:51 作者:EchoZYK
這篇文章主要為大家詳細介紹了java實現(xiàn)小貓釣魚游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
題目要求:
兩人比賽,A,B,每人最開始分得6張手牌,手牌大小為從1到9
A先出牌,B后出牌,若出牌在桌面上存在,在出牌人獲得兩張相同牌中間的所有牌(包括兩張相同牌),放入出牌人手中。
最后誰手中無牌判為負
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
import java.util.Stack;
/**
* 模擬實現(xiàn)兩人玩小貓釣魚游戲
* 判斷誰先出完誰獲勝
* @author zyk
*
*/
public class PlayGame {
public static void main(String[] args) {
Stack<Integer> deskStack = new Stack<>();//桌子上的牌,用棧進行管理
Queue<Integer> playerA = new LinkedList();//用隊列管理每個選手的牌
Queue<Integer> playerB = new LinkedList();
int book[] = new int[10];
Scanner scanner = new Scanner(System.in);
//發(fā)牌,每人6張
for (int i = 0; i < 6; i++) {
playerA.add(scanner.nextInt());
}
for (int i = 0; i < 6; i++) {
playerB.add(scanner.nextInt());
}
//當兩個隊列都不為空,表示游戲沒有結(jié)束
while (!playerA.isEmpty() && !playerB.isEmpty()) {
int ta = playerA.peek();//A出一張牌
//判斷A出的牌能不能贏牌
if (book[ta] == 0) {//桌子上沒有這張牌
//A不能贏牌
playerA.remove();//打出的牌出隊列
deskStack.add(ta);//打出的牌入棧
book[ta]=1;//標記打出的牌出現(xiàn)在桌子上
}else {//A能贏牌
playerA.remove();//打出的牌出隊列
playerA.add(ta);//打出的牌入隊列
while (deskStack.lastElement()!=ta) {
book[deskStack.lastElement()] = 0;
playerA.add(deskStack.lastElement());
deskStack.pop();
}
}
int tb = playerB.peek();//B出一張牌
//判斷B出的牌能不能贏牌
if (book[tb] == 0) {//桌子上沒有這張牌
//B不能贏牌
playerB.remove();//打出的牌出隊列
deskStack.add(tb);//打出的牌入棧
book[tb]=1;//標記打出的牌出現(xiàn)在桌子上
}else {//B能贏牌
playerB.remove();//打出的牌出隊列
playerB.add(tb);//打出的牌入隊列
while (deskStack.lastElement()!=tb) {
book[deskStack.lastElement()] = 0;
playerB.add(deskStack.lastElement());
deskStack.pop();
}
}
}
if (playerA.isEmpty()) {
System.out.println("B贏了");
System.out.print("B手中的牌為:");
while (!playerB.isEmpty()) {
System.out.print(playerB.peek()+" ");
playerB.remove();
}
}else {
System.out.println("A贏了");
System.out.print("A手中的牌為:");
while (!playerA.isEmpty()) {
System.out.print(playerA.peek()+" ");
playerA.remove();
}
}
System.out.println("");
System.out.print("桌子上的牌為:");
while (!deskStack.isEmpty()) {
System.out.print(deskStack.lastElement()+" ");
deskStack.pop();
}
}
}
實例:
輸入:
2 4 1 2 5 6
3 1 3 5 6 4輸出:
A贏了
A手中的牌為:5 6 2 3 1 4 6 5
參考: 《啊哈算法》第二章 棧,隊列,鏈表
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot3實現(xiàn)webclient的通用方法詳解
Spring Boot WebClient 是 Spring Framework 5 中引入的一個新的響應式 Web 客戶端,用于異步和響應式地與外部服務(wù)進行通信,下面我們就來看看SpringBoot3實現(xiàn)webclient的通用方法吧2024-04-04
SpringBoot+JavaMailSender實現(xiàn)騰訊企業(yè)郵箱配置
這篇文章主要介紹了SpringBoot+JavaMailSender實現(xiàn)騰訊企業(yè)郵箱配置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2021-04-04

