java学习之扑克牌案例
package pocker;
import java.util.ArrayList;
import java.util.Collections;
/**
* 需求: 三个玩家 玩斗地主 每个人拿17 最后剩下3张牌
* 分析:
* 创建一个集合存放2,3,4,5,6,7,8,9,10
* 创建一个集合存放字母:J,Q,K,A
* 再创建一个集合存放花色 ♦ ,♣,♠,♥。
* 创建好牌以后进行洗牌使用Collections的工具类中的一个方法来打乱牌的顺序
* 然后需要创建三个玩家
* 每个玩家都会存放自己的牌,因此需要定义玩家集合
* 然后在定义当索引小于51时需要将牌分别存放在三个玩家手上。
* 大于等于51也就是三张底牌直接存放在底牌的集合中
*/
public class Poker_demo {
public static void main(String[] args) {
//创建牌
//创建牌盒的集合
ArrayList<String> pokers=new ArrayList<>();
//存放数字及其J Q K A
ArrayList<String> list = new ArrayList<>();
for (int i = 2; i <=10; i++) {
//将Integer类型直接转换成String添加到集合中
list.add(i+"");
}
list.add("J");
list.add("Q");
list.add("K");
list.add("A");
//存放花色
ArrayList<String> color = new ArrayList<>();
color.add("♦");
color.add("♣");
color.add("♠");
color.add("♥");
// 拿出每一个花色 然后跟每一个数字 进行结合 存储到牌盒中
for (String str:color) {
for (String st:list) {
String sts=str+st;
pokers.add(sts);
}
}
pokers.add("大王🃏");
pokers.add("小王🃏");
//遍历一下这个集合
for (int i = 0; i <pokers.size(); i++) {
System.out.println(pokers.get(i));
}
// 洗牌
xiPai(pokers);
//发牌
FaPai(pokers);
}
private static void FaPai(ArrayList pokers) {
ArrayList<String> wanJia1 = new ArrayList<>();
ArrayList<String> wanJia2 = new ArrayList<>();
ArrayList<String> wanJia3 = new ArrayList<>();
ArrayList<String> diPai = new ArrayList<>();
//一共有54张牌,每个人17张之后需要剩下3张作为底牌,51张牌是每个人必须的牌
for (int i = 0; i <pokers.size(); i++) {
String po = String.valueOf(pokers.get(i));
if (i>=51) {
diPai.add(po); }
else {
if (i % 3 == 0) {
wanJia1.add(po);
} else if (i % 3 == 1) {
wanJia2.add(po);
} else if (i % 3 == 2) {
wanJia3.add(po);
}
}
}
System.out.println("玩家一的牌:"+wanJia1);
System.out.println("玩家二的牌:"+wanJia2);
System.out.println("玩家三的牌:"+wanJia3);
System.out.println("底牌:"+diPai);
}
private static void xiPai(ArrayList pokers) {
Collections.shuffle(pokers);
}
}
思考:
1.那怎么去将底牌发给地主呢,又如何去确定地主?
2.三个玩家手中的牌又如何来再次排序呢?
网友评论