課程
/后端開發
/Java
/Java入門第三季
請問:如果玩家數也由鍵盤獲取,那么手牌這塊該怎么處理呢?
2016-04-11
源自:Java入門第三季 7-1
正在回答
package?gamecard; import?java.util.ArrayList; import?java.util.Collections; import?java.util.List; import?java.util.Scanner; public?class?GameTest?{ ???//?定義玩家數目和發牌數?????? ????public?static?final?int?playerNum?=?5;?//玩家五人 ????public?static?final?int?personalCardNum?=?10;?//每次發牌10張 ????????public?static?Scanner?in?=?new?Scanner(System.in); ????public?static?List<Player>?players?=?new?ArrayList<Player>(); ????public?static?Card?card?=?new?Card(); ????public?String?VVV?=?"2345678910JQKA王?"; ????public?String?CCC?=?"梅花方塊黑桃紅桃小大?"; ????/** ?????*?游戲流程 ?????*?@author?yyq ?????*?1、取牌,洗牌 ?????*?2、創建玩家 ?????*?3、輸入玩家信息、給玩家發牌 ?????*?4、顯示兩人最大牌 ?????*?5、比較牌的大小,宣布獲勝者 ?????*?6、打印兩玩家的手牌 ?????*/ ????public?static?void?main(String[]?args)?{ ????????GameTest?it?=?new?GameTest(); ???????? ????????//步驟一 ????????System.out.println("--------------------游戲開始--------------------"); ????????System.out.println("--------------------取出新牌--------------------"); ????????card.createCard(); ????????System.out.println("--------------------開始洗牌--------------------"); ????????card.shuffleCards(); ????????System.out.println("--------------------洗牌結束--------------------"); ???????? ????????//步驟二 ????????System.out.println("--------------------創建玩家--------------------"); ????????it.createPlayer(); ???????? ????????//步驟三 ????????System.out.println("--------------------開始發牌--------------------"); ????????it.getCards(); ????????System.out.println("--------------------發牌結束--------------------"); ???????? ????????//步驟四 ????????System.out.println("--------------------結果顯示--------------------"); ????????it.showMaxAndWonner(); ???????? ????????//步驟六 ????????System.out.println("--------------------手牌顯示--------------------"); ????????it.showCard(); ????} ???? ????/** ?????*?創建玩家 ?????*?1、新建玩家 ?????*?2、提示輸入ID,如果ID不符合規范重輸 ?????*?3、提示輸入姓名,并給對象當賦值 ?????*/ ????public?void?createPlayer()?{ ????????for?(int?i?=?0;?i?<?playerNum;?++i)?{ ????????????System.out.println("c創建第"?+?(i+1)?+?"位玩家!"); ????????????System.out.println("請輸入玩家ID:"); ????????????int?id; ????????????while?(true)?{ ????????????????try?{ ????????????????????id?=?in.nextInt(); ????????????????????break; ????????????????}?catch(Exception?e)?{ ????????????????????System.out.println("請輸入正整數:"); ????????????????????in.next();????//?吸收緩沖區 ????????????????}???????? ????????????} ???????? ????????????System.out.println("請輸入玩家姓名:"); ????????????String?name?=?in.next();? ???????????? ????????????players.add(new?Player(id,?name)); ????????} ????} ???? ????/** ?????*?給玩家發牌 ?????*/ ????public?void?getCards()?{ ????????int?n?=?playerNum*personalCardNum; ????????for?(int?i?=?0;?i?<?n;?++i)?{ ????????????System.out.println("玩家"?+?players.get(i%playerNum).getName()?+?"\t:?拿牌"); ????????????players.get(i%playerNum).pCards.add(card.cardList.get(i)); ????????} ????} ???? ????/** ?????*?比較獲勝者 ?????*/ ????public?void?showMaxAndWonner()?{ ???????? ????????int?n?=?players.get(0).pCards.size()-1; ???????? ????????for?(int?i?=?0;?i?<?playerNum;?++i)?{ ????????????Player?p?=?players.get(i%playerNum); ???????????? ????????????//手牌排序 ????????????Collections.sort(players.get(i).pCards); ???????????? ????????????System.out.println("玩家\t"?+?p.getName() ????????????????????+?"最大手牌是:\t"?+?p.pCards.get(n).toString()); ????????} ???????? ????????Card?card?=?players.get(0).pCards.get(n); ????????String?nameString?=?players.get(0).getName(); ???????? ????????for?(int?i?=?1;?i?<?playerNum;?++i)?{ ????????????if?(CCC.indexOf(card.getColor())?<?CCC.indexOf(players.get(i).pCards.get(n).getColor()))?{ ????????????????card?=?players.get(i).pCards.get(n); ????????????????nameString?=?players.get(i).getName(); ????????????}?else?if?(VVV.indexOf(card.getValue())?==?VVV.indexOf(players.get(i).pCards.get(n).getValue()) ????????????????????&&?VVV.indexOf(card.getValue())?<?VVV.indexOf(players.get(i).pCards.get(n).getValue()))?{ ????????????????????card?=?players.get(i).pCards.get(n); ????????????????????nameString?=?players.get(i).getName(); ????????????????} ????????}? ???????? ????????System.out.println(nameString?+?"獲勝!"); ????} ???? ????public?void?showCard()?{ ????????for?(int?i?=?0;?i?<?playerNum;?++i)?{ ????????????Collections.sort(players.get(i).pCards); ????????????System.out.println(players.get(i).toString()); ????????} ????} ???? } 有疑問@我
qq_侯杰_0 提問者
不知道
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
1 回答通過set列表承載玩家的Key值,最后獲取對應的玩家姓名時不知道該怎么實現! 求高手解答!
6 回答撲克牌游戲關于玩家獲得手牌出現空指針異常
2 回答如果這么洗牌,應該怎么改代碼?
1 回答交作業啦,利用索引值判斷牌大小,可以調節玩牌的人數和牌數
2 回答用contains判斷新發的牌是否已經在玩家手中了,不生效
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2016-05-29
2016-04-12
不知道