?
?
public class Player
implements Comparable<Player>
{int id;String name;List<Card>
cardList;Integer maxCard;public Player(
int id, String name){this.id =
id;this.name =
name;this.cardList =
new ArrayList<Card>
();}public int compareTo(Player o) {return this.maxCard.compareTo(o.maxCard);}
} ?
?
?
public class Card
implements Comparable<Card>
{Integer id;String value;public Card(Integer id, String value) {this.id =
id;this.value =
value;}public int compareTo(Card o) {return this.id.compareTo(o.id);}
} ?
public class PlayCards {Scanner console;List<Card>
cardlist;Map<Integer, Player>
playermap;List<Card>
shufflelist;public PlayCards(){console =
new Scanner(System.in);cardlist =
new ArrayList<Card>
();playermap =
new HashMap<Integer, Player>
();shufflelist =
new ArrayList<Card>
();}
//創(chuàng)建撲克牌的方法public void creatCard() {System.out.println("------創(chuàng)建撲克牌------"
);String[] head = {"方片","梅花","紅桃","黑桃"
};String[] number = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"
};int id = 0
;for (
int i = 0; i < 13; i++
) {for (
int j = 0; j < 4; j++
) {String tempstr = head[j] +
number[i];Card card =
new Card(id++
, tempstr);cardlist.add(card);}}System.out.println("------撲克牌創(chuàng)建成功!------"
);System.out.println("*********************************************"
);for (
int i = 0; i < 52; i++
) {if(i % 13 == 0
) {System.out.println();}System.out.print(cardlist.get(i).value);}System.out.println("\n**********************************************"
);}
//進(jìn)行洗牌的方法public void shuffle() {Random random =
new Random();System.out.println("------開始洗牌------"
);for (
int i = 52; i > 0; i--
) {int tempNum =
random.nextInt(i);Card tempcard =
cardlist.get(tempNum);cardlist.remove(tempNum);shufflelist.add(tempcard);}System.out.println("------洗牌結(jié)束!------"
);}
//創(chuàng)建玩家并錄入相關(guān)id與姓名的方法 public void creatPlayer() {System.out.println("------創(chuàng)建玩家------"
);int i = 1
;while(i < 3
) {try {System.out.println("請輸入第" + i + "位玩家的ID和姓名"
);System.out.println("請輸入整數(shù)ID:"
);Scanner input =
new Scanner(System.in);Integer integer =
input.nextInt();Player player =
playermap.get(integer);if(player ==
null) {System.out.println("請輸入姓名:"
);String name =
console.next();Player newPlayer =
new Player(integer, name);playermap.put(integer, newPlayer);i++
;}else {System.out.println("玩家ID被已占用,請重新輸入!"
);continue;}}catch(InputMismatchException e) {System.out.println("玩家ID輸入有誤,請輸入規(guī)定的整數(shù)"
);continue;}}Set<Entry<Integer, Player>> entry =
playermap.entrySet();for (Entry<Integer, Player>
ey: entry) {System.out.println("----歡迎玩家:" +
ey.getValue().name);}}
//進(jìn)行發(fā)牌給玩家的方法public void sendCardToPyer() {System.out.println("規(guī)定兩位玩家的手牌數(shù)小于27張"
);try {System.out.println("請輸入每位玩家的手牌數(shù):"
);Scanner input =
new Scanner(System.in);int cardNum =
input.nextInt();if (cardNum > 26 || cardNum < 1
) {sendCardToPyer();}else {System.out.println("------開始發(fā)牌------"
);int k = 0
;Set<Entry<Integer, Player>> entry =
playermap.entrySet();for (
int i = 0; i < cardNum; i++
) {for (Entry<Integer, Player>
ey: entry) {ey.getValue().cardList.add(shufflelist.get(k++
));System.out.println("玩家:" + ey.getValue().name + "-拿牌"
);}}System.out.println("------發(fā)牌結(jié)束------"
);}}catch(InputMismatchException e) {sendCardToPyer();}}
//兩位玩家取出最大的手牌比較并決定勝負(fù)以及亮手牌的方法public void whoIsWinner() {Set<Entry<Integer, Player>> entry =
playermap.entrySet();List<Player> playerlist =
new ArrayList<Player>
();for (Entry<Integer, Player>
ey: entry) {Collections.sort(ey.getValue().cardList);int listsize =
ey.getValue().cardList.size();ey.getValue().maxCard = ey.getValue().cardList.get(listsize -1
).id ;playerlist.add(ey.getValue());System.out.println("玩家:" + ey.getValue().name + "最大的手牌為:" + ey.getValue().cardList.get(listsize - 1
).value);}Collections.sort(playerlist);System.out.println("------玩家:" + playerlist.get(playerlist.size() - 1).name + "獲勝!------"
);System.out.println("玩家各自的手牌為:"
);for (Player player: playerlist){System.out.print(player.name + ": "
);for (Card card: player.cardList) {System.out.print(card.value + " "
);}System.out.println(); } }
} ?
?
public class Initial {public static void main(String[] args) {Scanner input =
null;int i = 0
;while(
true) {System.out.println("按 任意數(shù)字 開始游戲"
);try {input =
new Scanner(System.in);i =
input.nextInt(); break;}catch(InputMismatchException e) {System.out.println("請按要求輸入!!!"
);}}PlayCards playcards =
new PlayCards();playcards.creatCard();playcards.shuffle();playcards.creatPlayer();playcards.sendCardToPyer();playcards.whoIsWinner();System.out.println("歡迎下次游戲!!!"
);System.exit(0
);if (input !=
null) {input.close();input =
null;}}
} ?
?
轉(zhuǎn)載于:https://www.cnblogs.com/xinglichao/p/8945661.html
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖
總結(jié)
以上是生活随笔為你收集整理的Java学习之模拟纸牌游戏,List的ArrayList,Map的HashMap,重写Collections类的sort方法对指定类进行通过特定属性排序,输入异常处理等的学习...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。