供参考 有问题请指出
纸牌类
package imooc.imoocGame; import java.util.Objects; public class Card implements Comparable<Card>{ private String flower; private String num; private int id; public void setInd(int ind) { this.ind = ind; } public int getInd() { return ind; } private int ind; public void setId(int id) { this.id = id; } public void setFlower(String flower) { this.flower = flower; } public void setNum(String num) { this.num = num; } public String getNum() { return num; } public String getFlower() { return flower; } public int getId() { return id; } @Override public int compareTo(Card o) { if(this.num.equals(o.num)){ return this.id-o.id; }else{ return this.ind-o.ind; } } }
玩家类
package imooc.imoocGame; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; public class Player { private int id; private String name; private List<Card> handCard; public Player() { this.handCard = new ArrayList<>(); } public Player(int id,String name) { this.handCard = new ArrayList<>(); this.id=id; this.name=name; } public int getId() { return id; } public String getName() { return name; } public List<Card> getHandCard() { return handCard; } public void setId(int id) { this.id = id; } public void setName(String name) { this.name = name; } public void setHandCard(List<Card> handCard) { this.handCard = handCard; } }
游戏类
package imooc.imoocGame; import com.Car; import java.util.*; public class Game { private List<Card> cards; private Scanner console; private List<Player> players; private Game() { this.cards = new ArrayList<>(); this.console = new Scanner(System.in); this.players = new ArrayList<>(); } // 创建扑克牌 private void EstablishCards() { System.out.println("------创建扑克牌------"); String[] flower = {"方块", "梅花", "黑桃", "红桃"}; int id = 0; for (String val : flower) { switch (val) { case "方块": id = 1; break; case "梅花": id = 2; break; case "黑桃": id = 3; break; case "红桃": id = 4; break; } for (int i = 2; i <= 14; i++) { String num = String.valueOf(i); Card card = new Card(); card.setInd(i); card.setFlower(val); card.setId(id); switch (num) { case "11": card.setNum("J"); break; case "12": card.setNum("Q"); break; case "13": card.setNum("K"); break; case "14": card.setNum("A"); break; default: card.setNum(num); } cards.add(card); } } System.out.println("------扑克牌创建成功------"); System.out.print("扑克牌为:"); for (Card val : cards) { System.out.print(val.getFlower() + val.getNum() + ","); } System.out.println(); } //洗牌 private void Shuffle() { System.out.println("------开始洗牌------"); List<Integer> num = new ArrayList<>(); Random random = new Random(); Integer k; for (int i = 0; i < 52; i++) { Card resetCard = cards.get(i); do { k = random.nextInt(52); } while (num.contains(k)); num.add(k); cards.set(k, resetCard); } System.out.println("------洗牌结束------"); } // 创建玩家 private void EstablishPlayer() { System.out.println("------创建玩家------"); System.out.println("------请输入第一位玩家的id和姓名------"); int player1Id = CatchInput(); System.out.println("------输入姓名------"); String player1Name = console.next(); System.out.println("------请输入第二位玩家的id和姓名------"); int player2Id = CatchInput(); System.out.println("------输入姓名------"); String player2Name = console.next(); System.out.println(player1Id + ":" + player2Id); Player player1 = new Player(player1Id, player1Name); Player player2 = new Player(player2Id, player2Name); players.add(player1); players.add(player2); System.out.println("---欢迎玩家:" + player1.getName()); System.out.println("---欢迎玩家:" + player2.getName()); } // 捕捉输入id错误的异常 private int CatchInput() { while (true) { Scanner console = new Scanner(System.in); try { System.out.println("------输入id------"); return console.nextInt(); } catch (InputMismatchException e) { System.out.println("------输入错误------"); } } } // 发牌 private void Licensing() { System.out.println("------开始发牌------"); System.out.println("----玩家" + players.get(0).getName() + "-拿牌"); players.get(0).getHandCard().add(cards.get(0)); System.out.println("----玩家" + players.get(1).getName() + "-拿牌"); players.get(1).getHandCard().add(cards.get(1)); System.out.println("----玩家" + players.get(0).getName() + "-拿牌"); players.get(0).getHandCard().add(cards.get(2)); System.out.println("----玩家" + players.get(1).getName() + "-拿牌"); players.get(1).getHandCard().add(cards.get(3)); System.out.println("------发牌结束------"); } private void gameStart() { System.out.println("------开始游戏------"); Collections.sort(players.get(0).getHandCard()); Collections.sort(players.get(1).getHandCard()); System.out.println("玩家:" + players.get(0).getName() + "最大的手牌为:" + players.get(0).getHandCard().get(1).getFlower() + players.get(0).getHandCard().get(1).getNum()); System.out.println("玩家:" + players.get(1).getName() + "最大的手牌为:" + players.get(1).getHandCard().get(1).getFlower() + players.get(1).getHandCard().get(1).getNum()); List<Card> lc = new ArrayList<>(); lc.add(players.get(0).getHandCard().get(1)); lc.add(players.get(1).getHandCard().get(1)); Collections.sort(lc); Player winner = new Player(); for (Player pl : players) { if (pl.getHandCard().contains(lc.get(1))) { winner = pl; } } System.out.println("------玩家:" + winner.getName() + "获胜------"); System.out.println("------玩家各自的手牌为------"); System.out.print(players.get(0).getName() + ":["); for (Card ca : players.get(0).getHandCard()) { System.out.print(ca.getFlower() + ca.getNum() + " "); } System.out.print("]"); System.out.println(); System.out.print(players.get(1).getName() + ":["); for (Card ca : players.get(1).getHandCard()) { System.out.print(ca.getFlower() + ca.getNum() + " "); } System.out.print("]"); } public static void main(String[] args) { Game game = new Game(); // 创建扑克牌 game.EstablishCards(); // 洗牌 game.Shuffle(); // 创建玩家 game.EstablishPlayer(); // 发牌 game.Licensing(); // 开始游戏 game.gameStart(); } }