package 扑克牌完整;
public class Text01 {
public static void main(String[] args) {
Room01 room01 = new Room01();
room01.start();
}
}
package 扑克牌完整;
import 扑克牌.Card;
import java.util.*;
public class Room01 {
private List <Card01> allCards = new ArrayList<>();
public Room01(){
String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
String[] colors = {"♦","♣","♥","♠"};
int size =0;//表示每一张的大小
//存牌
for (String number : numbers) {
for (String color : colors) {
Card01 Card01 = new Card01(number, color, ++size);
allCards.add(Card01);
}
}
//存大小王
Card01 c1 = new Card01("","🃏",++size);
Card01 c2 = new Card01("","🤡",++size);
Collections.addAll(allCards,c1,c2);
System.out.println("新牌:"+ allCards);
}
public void start() {
//1.洗牌
Collections.shuffle(allCards);
System.out.println("洗牌:"+allCards);
//2.发牌,首先定义三个玩家(斗地主)
ArrayList<Card01> WanJia1 = new ArrayList<>();
ArrayList<Card01> WanJia2 = new ArrayList<>();
ArrayList<Card01> WanJia3 = new ArrayList<>();
//正式发牌给三个玩家,依次发出51张牌,剩余3张作为底牌
//洗牌:(假设)[♠3 , ♣10 , ♠K , ♠7 , ♠4 , ♣4 , ♣K , ♠6 , ♠8 , ♠J , ♥K , ♦7 , ♣5 , ♥3 , ♣9 ,
// ♥Q , ♥J , ♦5 , ♥2 , ♦9 , ♦Q , ♥4 , ♣6 , ♠2 , ♦4 , ♣Q , ♣2 , ♥8 , ♦6 , ♦3 ,
// ♦8 , ♥A , ♣J , ♣A , ♣3 , ♥10 , ♣8 , ♦J , ♥9 , ♠Q , ♠A , ♦K , ♥6 , ♥7 , 🤡 ,
// ♠10 , ♠5 , 🃏 , ♠9 , ♦10 , ♦2 , ♥5 , ♣7 , ♦A ]
//
//♠3 , ♣10 , ♠K , ♠7 , ♠4 , ♣4 , ♣K
//0 1 2 3 4 5 6
//家1 家2 家3 家1 家2 家3 .... 利用取余操作 % 3
for (int i = 0; i < allCards.size()-3; i++) {
Card01 c = allCards.get(i);
//判断牌发给谁
if( i%3 == 0){
//玩家一
WanJia1.add(c);
}else if(i%3 == 1){
//玩家二
WanJia2.add(c);
}else if(i%3 == 2){
WanJia3.add(c);
}
}
//3.对三个玩家的牌进行排序
sortCards(WanJia1);
sortCards(WanJia2);
sortCards(WanJia3);
//4.看牌
System.out.println("玩家1:"+WanJia1);
System.out.println("玩家2:"+WanJia2);
System.out.println("玩家3:"+WanJia3);
//截取最后三张牌
List<Card01> lastThreeCards = allCards.subList(allCards.size()-3, allCards.size() ); // 索引 51 52 53
System.out.println("底牌:"+lastThreeCards);
Scanner sc = new Scanner(System.in);
int[] arr = new int[]{0, 0, 0};
int count = 0;
while (count <= 2) {
count++;
System.out.println("*******开始抢地主*******");
System.out.println("输入Y //N");
System.out.print("玩家1:");
String r0 = sc.next();
if (r0.equals("Y")) {
arr[0]++;
}
System.out.print("玩家2:");
String r1 = sc.next();
if (r1.equals("Y")) {
arr[1]++;
}
System.out.print("玩家3:");
String r2 = sc.next();
if (r2.equals("Y")) {
arr[2]++;
}
// 记录最大下标,和最大值
int dex = 0;
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] >= max) {
max = arr[i];
dex = i;
}
}
String r = Arrays.toString(arr); // arr.toString
if (r.indexOf(max + "") == r.lastIndexOf(max + "")) {
if (dex == 0) {
WanJia1.addAll(lastThreeCards);
sortCards(WanJia1);
System.out.println("玩家1:" + WanJia1);
} else if (dex == 1) {
WanJia2.addAll(lastThreeCards);
sortCards(WanJia2);
System.out.println("玩家2:" + WanJia2);
} else if (dex == 2) {
WanJia3.addAll(lastThreeCards);
sortCards(WanJia3);
System.out.println("玩家3:" + WanJia3);
}
count++;
count++;
// break; // exit the loop
} else if (count == 3) {
// 在第二轮,两个玩家输入Y的情况下
int dext=0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] >= max) {
dext = i;
}
}
if (dext == 0) {
WanJia1.addAll(lastThreeCards);
sortCards(WanJia1);
System.out.println("玩家1:" + WanJia1);
} else if (dext == 1) {
WanJia2.addAll(lastThreeCards);
sortCards(WanJia2);
System.out.println("玩家2:" + WanJia2);
} else if (dext == 2) {
WanJia3.addAll(lastThreeCards);
sortCards(WanJia3);
System.out.println("玩家3:" + WanJia3);
}
} else {
count++;
}
}
}
public void sortCards(ArrayList<Card01> card01s){
Collections.sort(card01s, new Comparator<Card01>() {
@Override
public int compare(Card01 o1, Card01 o2) {
return o1.getSize()- o2.getSize();//升序排列
// return o2.getSize() - o1.getSize();降序排列
}
});
}
}
package 扑克牌完整;
public class Card01 {
private String number;
private String color;
private int size;
public Card01(String number, String color, int size) {
this.number = number;
this.color = color;
this.size = size;
}
public Card01() {
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public int getSize() {
return size;
}
public void setSize(int size) {
this.size = size;
}
@Override
public String toString() {
return color + number+" ";
}
}