import java.util.ArrayList; import java.util.Collections; import java.util.Scanner;

public class CardGame { public static void main(String[] args) { // 创建一副扑克牌 ArrayList poker = new ArrayList<>(); String[] suits = {'黑桃', '红桃', '梅花', '方片'}; String[] ranks = {'2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'}; for (String suit : suits) { for (String rank : ranks) { poker.add(new Card(suit, rank)); } }

    // 创建两名玩家
    Scanner scanner = new Scanner(System.in);
    System.out.println('请输入玩家1的ID:');
    String id1 = scanner.next();
    System.out.println('请输入玩家1的姓名:');
    String name1 = scanner.next();
    Player player1 = new Player(id1, name1);
    System.out.println('请输入玩家2的ID:');
    String id2 = scanner.next();
    System.out.println('请输入玩家2的姓名:');
    String name2 = scanner.next();
    Player player2 = new Player(id2, name2);

    // 洗牌
    Collections.shuffle(poker);

    // 发牌
    for (int i = 0; i < 3; i++) {
        player1.addCard(poker.remove(0));
        player2.addCard(poker.remove(0));
    }

    // 比较大小
    Card maxCard1 = player1.getMaxCard();
    Card maxCard2 = player2.getMaxCard();
    if (maxCard1.compareTo(maxCard2) > 0) {
        System.out.println(player1.getName() + '赢了!');
    } else if (maxCard1.compareTo(maxCard2) < 0) {
        System.out.println(player2.getName() + '赢了!');
    } else {
        if (maxCard1.getSuitValue() > maxCard2.getSuitValue()) {
            System.out.println(player1.getName() + '赢了!');
        } else if (maxCard1.getSuitValue() < maxCard2.getSuitValue()) {
            System.out.println(player2.getName() + '赢了!');
        } else {
            System.out.println('平局!');
        }
    }

    // 显示手牌
    player1.showCards();
    player2.showCards();
}

}

class Card implements Comparable { private String suit; // 花色 private String rank; // 点数

public Card(String suit, String rank) {
    this.suit = suit;
    this.rank = rank;
}

public String getSuit() {
    return suit;
}

public String getRank() {
    return rank;
}

public int getSuitValue() {
    if (suit.equals('黑桃')) {
        return 4;
    } else if (suit.equals('红桃')) {
        return 3;
    } else if (suit.equals('梅花')) {
        return 2;
    } else {
        return 1;
    }
}

@Override
public int compareTo(Card o) {
    if (this.rank.equals('A')) {
        return 1;
    } else if (o.getRank().equals('A')) {
        return -1;
    } else {
        return Integer.compare(getRankValue(), o.getRankValue());
    }
}

private int getRankValue() {
    if (rank.equals('J')) {
        return 11;
    } else if (rank.equals('Q')) {
        return 12;
    } else if (rank.equals('K')) {
        return 13;
    } else {
        return Integer.parseInt(rank);
    }
}

@Override
public String toString() {
    return suit + rank;
}

}

class Player { private String id; // ID private String name; // 姓名 private ArrayList cards; // 手牌

public Player(String id, String name) {
    this.id = id;
    this.name = name;
    this.cards = new ArrayList<>();
}

public String getId() {
    return id;
}

public String getName() {
    return name;
}

public void addCard(Card card) {
    cards.add(card);
}

public Card getMaxCard() {
    Card maxCard = cards.get(0);
    for (int i = 1; i < cards.size(); i++) {
        if (cards.get(i).compareTo(maxCard) > 0) {
            maxCard = cards.get(i);
        }
    }
    return maxCard;
}

public void showCards() {
    System.out.println(name + '的手牌:');
    for (Card card : cards) {
        System.out.print(card + ' ');
    }
    System.out.println();
}

}

// 关系图:

CardGame类 -----> Player类 | | ------> Card类

Java 扑克牌游戏:比大小

原文地址: https://www.cveoy.top/t/topic/oRdL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录