import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class CardGame {
/**
* 创建一副扑克牌,包含花色和点数
*/
public static void main(String[] args) {
Card cd = new Card();
cd.creatCard();
Collections.shuffle(cd.cards);
System.out.println("-----洗牌成功-----");
Player player = new Player();
Player player1 = player.playerList.get(0);
Player player2 = player.playerList.get(1);
System.out.println("-----现在开始随机发牌----- ");
// 玩家1的手牌!
player1.playerCard.add(cd.cards.get(0));
player1.playerCard.add(cd.cards.get(1));
System.out.println(player1.toString() + "的手牌为:\n"
+ player1.playerCard.toString());
// 玩家2的手牌!
player2.playerCard.add(cd.cards.get(2));
player2.playerCard.add(cd.cards.get(3));
System.out.println(player2.toString() + "的手牌为:\n"
+ player2.playerCard.toString());
// 玩家手中的最大手牌!
Card cardMax1 = new Card();
Card cardMax2 = new Card();
int player1Num = player1.playerCard.get(0).compareTo(
player1.playerCard.get(1));
int player2Num = player2.playerCard.get(0).compareTo(
player2.playerCard.get(1));
// 玩家1
if (player1Num > 0) {
cardMax1 = player1.playerCard.get(0);
} else {
cardMax1 = player1.playerCard.get(1);
}
// 玩家2
if (player2Num > 0) {
cardMax2 = player2.playerCard.get(0);
} else {
cardMax2 = player2.playerCard.get(1);
}
// 比较两人手中最大手牌的大小
int resultNum = cardMax1.compareTo(cardMax2);
if (resultNum > 0) {
System.out.println("-----" + player1.toString() + "胜利!-----");
} else {
System.out.println("-----" + player2.toString() + "胜利!-----");
}
System.out.println(player1.toString() + "的最大手牌为:\n"
+ cardMax1.toString());
System.out.println(player2.toString() + "的最大手牌为:\n"
+ cardMax2.toString());
}
}
// 定义扑克牌
class Card implements Comparable<Card> {
// 定义扑克牌有花色和大小
public static List<Card> cards;
static String colors[] = { "方块", "梅花", "红桃", "黑桃" };
static String numbers[] = { "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K", "A" };
private String color, number;
public Card(String color, String number) {
super();
this.color = color;
this.number = number;
}
// 无参构造方法为List实现,否则会报空指针异常
public Card() {
this.cards = new ArrayList();
}
public int compareTo(Card o) {
// asList将数组转化为
int a = Arrays.asList(colors).indexOf(this.color)
- Arrays.asList(colors).indexOf(o.color);
int b = Arrays.asList(numbers).indexOf(this.number)
- Arrays.asList(numbers).indexOf(o.number);
if (b > 0) {
return 1;
} else if (b == 0) {
if (a > 0) {
return 1;
} else if (a == 0) {
return 0;
} else {
return -1;
}
} else {
return -1;
}
}
// 完整一副牌
void creatCard() {
for (int i = 0; i < colors.length; i++) {
for (int j = 0; j < numbers.length; j++) {
cards.add(new Card(colors[i], numbers[j]));
}
}
System.out.println("-----创建扑克牌成功-----");
}
// 重写toString方法
@Override
public String toString() {
return "Card [color=" + color + ", number=" + number + "]";
}
}
class Player {
int id;
String name;
List<Player> playerList;
List<Card> playerCard;
Scanner console = new Scanner(System.in);
public Player(int id, String name) {
super();
this.id = id;
this.name = name;
this.playerCard = new ArrayList();
}
public Player() {
this.playerList = new ArrayList();
for (int i = 0; i < 2; i++) {
// 检验ID正确性
while (true) {
// Scanner 要在循环内,否则发生异常时,数据不会清楚,一直死循环下去!!!!
Scanner console = new Scanner(System.in);
try {
System.out.println("请输入玩家ID: ");
this.id = console.nextInt();
// 判断ID是否重复!!!
if (isInt(id)) {
continue;
}
System.out.println("请输入玩家姓名: ");
this.name = console.next();
System.out.println(" -----玩家创建成功-----\n" + this.toString());
playerList.add(new Player(id, name));
break;
} catch (Exception e) {
System.out.println("输入有误,请输入整数型ID!");
}
}
}
}
@Override
public String toString() {
return "Player [id=" + id + ", name=" + name + "]";
}
boolean isInt(int id) {
for (Player player : playerList) {
if (player.id == id) {
System.out.println("此ID已存在,请重新输入!");
return true;
}
}
return false;
}
}
热门评论
同学传授下学习技巧呗
谁会用GUI编写个小程序 发个 特别急 谢谢了