建立一个扑克类
给他定义花色和大小
public class Poke implements Comparable<Poke> {
private String colors;
private Integer numbers;
private String colornum;
public String getColornum() {
String num = String.valueOf(this.numbers) ;
if(this.numbers==11){
num="J";
}
if(this.numbers==12){
num="Q";
}
if(this.numbers==13){
num="K";
}
if(this.numbers==14){
num="A";
}
if(this.numbers==15){
num="2";
}
if(this.numbers==16){
num="小王";
}
if(this.numbers==17){
num="大王";
}
return this.colors+num;
}
public void setColors(String colors) {
this.colors = colors;
}
public void setNumbers(Integer numbers) {
this.numbers = numbers;
}
public String getColors() {
return colors;
}
public Integer getNumbers() {
return numbers;
}
@Override
public int compareTo(Poke o) {
return numbers-o.numbers;
}
}
创建牌大小和牌的花色
public ArrayList<Poke> newPokeList(){
ArrayList<Poke> pokes=new ArrayList<Poke>();
List<String> colors=new ArrayList<>();
List<Integer> numbers=new ArrayList<>();
colors.add("♥");
colors.add("♠");
colors.add("♦");
colors.add("♥");
for (int i = 3; i <= 15; i++) {
numbers.add(i);
}
for(String c:colors){
for(int n:numbers){
Poke poke = new Poke();
poke.setColors(c);
poke.setNumbers(n);
pokes.add(poke);
}
}
Poke poke = new Poke();
poke.setColors("☀");
poke.setNumbers(16);
pokes.add(poke);
Poke poke2 = new Poke();
poke2.setColors("☾");
poke2.setNumbers(17);
pokes.add(poke2);
return pokes;
}
使用Collections带的shuffle洗牌
Collections.shuffle(pokes);
然后进行分牌
public ArrayList<ArrayList<Poke>> fenpai(ArrayList<Poke> pokes){
ArrayList<ArrayList<Poke>> fenpailist = new ArrayList<>();
ArrayList<Poke> ddz1=new ArrayList<>();
ArrayList<Poke> ddz2=new ArrayList<>();
ArrayList<Poke> ddz3=new ArrayList<>();
ArrayList<Poke> dp=new ArrayList<>();
for (int i = 0; i < pokes.size(); i++) {
Poke pai=pokes.get(i);
if(i>=51){
dp.add(pai);
}else {
if(i%3 == 0){
ddz1.add(pai);
}else if(i%3 == 1){
ddz2.add(pai);
}else {
ddz3.add(pai);
}
}
}
//理牌
Collections.sort(ddz1);
Collections.sort(ddz2);
Collections.sort(ddz3);
Collections.sort(dp);
fenpailist.add(ddz1);
fenpailist.add(ddz2);
fenpailist.add(ddz3);
fenpailist.add(dp);
return fenpailist;
}
顺带了下理牌
顺带一提这个类的排序是因为类继承了Comparable
不会的可以去https://blog.csdn.net/qq_37937537/article/details/80445731学一下
输出
完整代码块:
poke类
public class Poke implements Comparable<Poke> {
private String colors;
private Integer numbers;
private String colornum;
public String getColornum() {
String num = String.valueOf(this.numbers) ;
if(this.numbers==11){
num="J";
}
if(this.numbers==12){
num="Q";
}
if(this.numbers==13){
num="K";
}
if(this.numbers==14){
num="A";
}
if(this.numbers==15){
num="2";
}
if(this.numbers==16){
num="小王";
}
if(this.numbers==17){
num="大王";
}
return this.colors+num;
}
public void setColors(String colors) {
this.colors = colors;
}
public void setNumbers(Integer numbers) {
this.numbers = numbers;
}
public String getColors() {
return colors;
}
public Integer getNumbers() {
return numbers;
}
@Override
public int compareTo(Poke o) {
return numbers-o.numbers;
}
}
DouDiZhu类
import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
public class DouDiZhu {
public static void main(String[] args) {
DouDiZhu douDiZhu = new DouDiZhu();
ArrayList<Poke> pokes=new ArrayList<Poke>();
pokes = douDiZhu.newPokeList();//新建一个扑克list
douDiZhu.printPokefromList(pokes);
//洗牌
Collections.shuffle(pokes);
douDiZhu.printPokefromList(pokes);
//分牌
ArrayList<ArrayList<Poke>> fenpailist =douDiZhu.fenpai(pokes);
douDiZhu.printPokefromList(fenpailist.get(0));
douDiZhu.printPokefromList(fenpailist.get(1));
douDiZhu.printPokefromList(fenpailist.get(2));
douDiZhu.printPokefromList(fenpailist.get(3));
}
public void printPokefromList(ArrayList<Poke> pokelist){
for(Poke i :pokelist){
System.out.print(i.getColornum());
}
System.out.println("\n");
}
public ArrayList<Poke> newPokeList(){
ArrayList<Poke> pokes=new ArrayList<Poke>();
List<String> colors=new ArrayList<>();
List<Integer> numbers=new ArrayList<>();
colors.add("♥");
colors.add("♠");
colors.add("♦");
colors.add("♥");
for (int i = 3; i <= 15; i++) {
numbers.add(i);
}
for(String c:colors){
for(int n:numbers){
Poke poke = new Poke();
poke.setColors(c);
poke.setNumbers(n);
pokes.add(poke);
}
}
Poke poke = new Poke();
poke.setColors("☀");
poke.setNumbers(16);
pokes.add(poke);
Poke poke2 = new Poke();
poke2.setColors("☾");
poke2.setNumbers(17);
pokes.add(poke2);
return pokes;
}
public ArrayList<ArrayList<Poke>> fenpai(ArrayList<Poke> pokes){
ArrayList<ArrayList<Poke>> fenpailist = new ArrayList<>();
ArrayList<Poke> ddz1=new ArrayList<>();
ArrayList<Poke> ddz2=new ArrayList<>();
ArrayList<Poke> ddz3=new ArrayList<>();
ArrayList<Poke> dp=new ArrayList<>();
for (int i = 0; i < pokes.size(); i++) {
Poke pai=pokes.get(i);
if(i>=51){
dp.add(pai);
}else {
if(i%3 == 0){
ddz1.add(pai);
}else if(i%3 == 1){
ddz2.add(pai);
}else {
ddz3.add(pai);
}
}
}
//理牌
Collections.sort(ddz1);
Collections.sort(ddz2);
Collections.sort(ddz3);
Collections.sort(dp);
fenpailist.add(ddz1);
fenpailist.add(ddz2);
fenpailist.add(ddz3);
fenpailist.add(dp);
return fenpailist;
}
}