斗地主案例分析
准备牌
一副扑克总共54张牌,其中包含两个特殊牌,大小王.
52张牌分为4种花色(“♠”,“♥”,“♣”,“♦”)
每种花色13张牌.(“3”,“4”,“5”,“6”,“7”,“8”,“9”,“10”,“J”,“Q”,“K”,“A”,“2”)
首先要组装一副扑克.定义一个(poker) String的ArrayList集合;
先要把特殊牌大小王放进去
之后利用循环嵌套数组,组装52张牌 for each增强for循环 外围是数字,里面是颜色.
洗牌
使用集合的工具类Collections中的方法
static void shuffle(List<?> list)使用默认随机源对指定列表进行置换.
Collections.shuffle(poker);
发牌
定义四个集合,存储三个玩家的牌和底牌
遍历poker集合,获取每一张牌
使用poker集合的索引%3给三个玩家轮流发牌
剩余三张给底牌
注意:
先判断底牌(i>=51),否则牌发没了
这里使用fori循环,判断是否还有牌,然后用ifelse语句来轮流发牌 if中用i%3来判定.
1%3=1, 2%3=2 , 3%3=0,
4%3=1, 5%3=2 , 6%3=0.
.
.
.
.
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
public class DouDiZhu {
public static void main(String[] args) {
//1.准备牌
//定义String的ArrayList集合
ArrayList<String> poker=new ArrayList<>();
//
String[] colors={"♠","♥","♣","♦"};
String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
//先把大王小王存储在poker集合中
poker.add("大王");
poker.add("小王");
//循环嵌套遍历两个数组,组装52张牌
for (String number:numbers)
{
for (String color:colors)
{
poker.add(color+number);
}
}
/*
2.洗牌
使用集合的工具类Collections中的方法
static void shuffle(List<?> list)使用默认随机源对指定列表进行置换.
*/
Collections.shuffle(poker);
System.out.println(poker);
/*
发牌
*/
//定义四个集合,存储三个玩家的牌和底牌
ArrayList<String> player01=new ArrayList<>();
ArrayList<String> player02=new ArrayList<>();
ArrayList<String> player03=new ArrayList<>();
ArrayList<String> dipai=new ArrayList<>();
/*
遍历poker集合,获取每一张牌
使用poker集合的索引%3给三个玩家轮流发牌
剩余三张给底牌
注意:
先判断底牌(i>=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){
player01.add(p);
} else if (i%3==1){
player02.add(p);
} else if (i%3==2){
player03.add(p);
}
}
//看牌 打印字符串方式
System.out.print("玩家一的手牌:"+player01);
System.out.println("");
System.out.print("玩家二的手牌:"+player02);
System.out.println("");
System.out.print("玩家三的手牌:"+player03);
System.out.println("");
System.out.print("底牌:"+dipai);
System.out.println("");
//看牌 迭代器方式
Iterator py1=player01.iterator();
Iterator py2=player02.iterator();
Iterator py3=player03.iterator();
Iterator py4=dipai.iterator();
System.out.print("玩家一的手牌:");
while (py1.hasNext()){
System.out.print(py1.next()+",");
}
System.out.println("");
System.out.print("玩家二的手牌:");
while (py2.hasNext()){
System.out.print(py2.next()+",");
}
System.out.println("");
System.out.print("玩家三的手牌:");
while (py3.hasNext()){
System.out.print(py3.next()+",");
}
System.out.println("");
System.out.print("底牌:");
while (py4.hasNext()){
System.out.print(py4.next()+",");
}
}
}