使用Java集合、泛型等知识实现斗地主:
package com.study.java.Demo02;
import java.util.ArrayList;
import java.util.Collections;
public class DouDizhu {
public static void main(String[] args) {
// 泛型 String
/*
初始牌
*/
ArrayList<String> poker = new ArrayList<>();
// 定义两个数组,花色和序号
String[] colors = {"♠", "♥", "♣", "♦"};
String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
// 存储大王小王
poker.add("大王");
poker.add("小王");
// 循环嵌套遍历
for (String number: numbers) {
for (String color : colors) {
// System.out.println(color+number);
poker.add(color+number);
}
}
System.out.println(poker);
/*
洗牌:使用集合的工具类Collections中的shuffle(List<?> list)
使用默认随机源对指定列表进行置换
*/
Collections.shuffle(poker);
//System.out.println(poker);
/*
发牌:
定义四个集合,来存储玩家的牌和底牌
*/
ArrayList<String> play01 = new ArrayList<>();
ArrayList<String> play02 = new ArrayList<>();
ArrayList<String> play03 = new ArrayList<>();
ArrayList<String> diPai = new ArrayList<>();
/*
遍历poker集合,获取每一张牌
使用poker的索引,给三个玩家轮流发牌,最后剩余三张存在底牌
注意:先判断底牌>= 51
*/
for (int i = 0; i < poker.size(); i++) {
// 获取每一张
String p = poker.get(i);
if(i >= 51){
// 底牌
diPai.add(p);
} else if(i % 3 == 0){
play01.add(p);
} else if(i % 3 == 1){
play02.add(p);
} else if(i % 3 == 2){
play03.add(p);
}
}
/*
看牌:
*/
System.out.println("play01 : " + play01);
System.out.println("play02 : " + play02);
System.out.println("play03 : " + play03);
System.out.println("底牌 :" + diPai);
}
}