Java纸牌游戏模拟器:规则,代码和玩法
import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Scanner;
public class CardGame {
public static void main(String[] args) {
// 创建一副扑克牌
List
// 创建两名玩家
Scanner scanner = new Scanner(System.in);
System.out.print("请输入玩家1的ID:");
String id1 = scanner.nextLine();
System.out.print("请输入玩家1的姓名:");
String name1 = scanner.nextLine();
Player player1 = new Player(id1, name1);
System.out.print("请输入玩家2的ID:");
String id2 = scanner.nextLine();
System.out.print("请输入玩家2的姓名:");
String name2 = scanner.nextLine();
Player player2 = new Player(id2, name2);
// 随机洗牌
Collections.shuffle(poker);
// 发牌
int n = 3; // 每个玩家发n张牌
for (int i = 0; i < n; i++) {
player1.addCard(poker.remove(0));
player2.addCard(poker.remove(0));
}
// 比较牌面
Card maxCard1 = player1.getMaxCard();
Card maxCard2 = player2.getMaxCard();
int cmp = maxCard1.compareTo(maxCard2);
if (cmp > 0) {
System.out.println(player1.getName() + "获胜!");
} else if (cmp < 0) {
System.out.println(player2.getName() + "获胜!");
} else {
int suitScore1 = maxCard1.getSuitScore();
int suitScore2 = maxCard2.getSuitScore();
if (suitScore1 > suitScore2) {
System.out.println(player1.getName() + "获胜!");
} else if (suitScore1 < suitScore2) {
System.out.println(player2.getName() + "获胜!");
} else {
System.out.println("平局!");
}
}
}
}
class Card implements Comparable
private final String suit; // 花色
private final 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 getRankScore() {
int rankScore;
switch (rank) {
case "J":
rankScore = 11;
break;
case "Q":
rankScore = 12;
break;
case "K":
rankScore = 13;
break;
case "A":
rankScore = 14;
break;
default:
rankScore = Integer.parseInt(rank);
break;
}
return rankScore;
}
public int getSuitScore() {
int suitScore;
switch (suit) {
case "黑桃":
suitScore = 4;
break;
case "红桃":
suitScore = 3;
break;
case "梅花":
suitScore = 2;
break;
case "方片":
suitScore = 1;
break;
default:
suitScore = 0;
break;
}
return suitScore;
}
@Override
public int compareTo(Card o) {
int cmp = Integer.compare(getRankScore(), o.getRankScore());
if (cmp != 0) {
return cmp;
} else {
return Integer.compare(getSuitScore(), o.getSuitScore());
}
}
@Override
public String toString() {
return suit + rank;
}
}
class Player {
private final String id; // ID
private final String name; // 姓名
private final List
public Player(String id, String name) {
this.id = id;
this.name = name;
this.hand = new ArrayList<>();
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public List<Card> getHand() {
return hand;
}
public void addCard(Card card) {
hand.add(card);
}
public Card getMaxCard() {
Card maxCard = null;
for (Card card : hand) {
if (maxCard == null || card.compareTo(maxCard) > 0) {
maxCard = card;
}
}
return maxCard;
}
原文地址: https://www.cveoy.top/t/topic/oQY5 著作权归作者所有。请勿转载和采集!