要求:
能够实现发牌,自动排序的功能
public class Poker { private String point;//点数 private String flower;//花色 private int power ;//大小 public Poker() { } public Poker(String point ,String flower) { this.point = point; this.flower = flower; } public int getPower() { return power; } public void setPower(int power) { this.power = power; } public String getPoint() { return point; } public void setPoint(String point) { this.point = point; } public String getFlower() { return flower; } public void setFlower(String flower) { this.flower = flower; } @Override public String toString() { if (Objects.isNull(flower)){ return point; } return flower+point; } }
=================华丽的分割线==================
class Player{ private String name; private boolean boss; private List<Poker> pokers = new ArrayList<>(); public Player() { } public Player(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isBoss() { return boss; } public void setBoss(boolean boss) { this.boss = boss; } public List<Poker> getPokers() { return pokers; } public void setPokers(List<Poker> pokers) { this.pokers = pokers; } @Override public String toString(){ return name+(boss?"(地主)":"(农民)")+pokers; } }
=================华丽的分割线==================
class Game{ //存储所有牌集合 static private List<Poker> list = new ArrayList<>(); static private String[] points ={"3","4","5","6","7","8","9","10","J","Q","K","A","2","大王","小王"}; static private String[] flowers = {"♠","♥","♣","♦"}; private List<Player> players = new ArrayList<>(); private Scanner sc = new Scanner(System.in); static private Random ra = new Random(); // private String sizeSort = "345678910JOKA2小王大王"; 和下面注释的大小排序方法是一体的,注释部分排序打开这个. //发牌 { for (int i = 0; i < points.length - 2; i++) { for (int j = 0; j < flowers.length; j++) { list.add(new Poker(points[i],flowers[j])); } } list.add(new Poker("大王",null)); list.add(new Poker("小王",null)); for (int k = 0; k < list.size(); k++) { list.get(k).setPower(k);//将54张牌设置大小 } }
//初始化三名玩家 public void playerJoin(){ System.out.println("请输入玩家1的昵称"); String p1 = sc.next(); System.out.println("请输入玩家2的昵称"); String p2 = sc.next(); System.out.println("请输入玩家3的昵称"); String p3 = sc.next(); players.add(new Player(p1)); players.add(new Player(p2)); players.add(new Player(p3)); startGame(); } private void startGame() { //随机地主的索引 int index=ra.nextInt(players.size()); //设置指定位置的玩家为地主 Player Boos = players.get(index); Boos.setBoss(true); System.out.println(Boos.getName()+"是地主"); //开始发牌 for (int i = 0; i < players.size(); i++) { //获取当前遍历到的玩家对象 Player p = players.get(i); for (int j = 0; j < 17; j++) { //获取牌给当前玩家 int n = ra.nextInt(list.size()); p.getPokers().add(list.get(n)); list.remove(n); } } Boos.getPokers().addAll(list); pokerSort(); showPokers(); } public void pokerSort(){ for (int i = 0; i < players.size(); i++) { for (int j = 0; j < players.get(i).getPokers().size(); j++) { Collections.sort(players.get(i).getPokers(), new Comparator<Poker>() { @Override public int compare(Poker p1, Poker p2) { return p1.getPower()-p2.getPower(); } }); } } } // public void pokerSort(){ // for (int i = 0; i <players.size(); i++) { // Collections.sort(players.get(i).getPokers(), new Comparator<Poker>() { // @Override // public int compare(Poker p1, Poker p2) { // return (sizeSort.indexOf(p1.getPoint()) - sizeSort.indexOf(p2.getPoint())); // // } // }); // } // } public void showPokers(){ for (Player player : players) { System.out.println(player); } } public static void main(String[] args) { new Game().playerJoin(); } }
都是自学时写的小案例,发上来就是记载一下!