斗地主设计思路:
- 准备牌:54张牌,存储到一个集合中
特殊牌:大王,小王
其他52张牌:定义一个数组/集合,存储4种花色:♠,♥,♣,♦
定义一个数组/集合,存储13个序号:2,A,K,,,,,,3
循环镶套遍历俩个数组/集合,组装52张牌:♠2,♠A,,,,,,,
- 洗牌
使用集合工具类Collections的方法
Static void shuffle(List<?> list)使用指定的随机源对指定列表进行置换
会随机的打乱集合中元素的顺序
- 发牌
要求:1人17张牌,剩余3张作为底牌,一人一张轮流发牌:集合的索引(0-53)%3
定义4个集合存储3个玩家的牌和底牌
- 看牌
直接打印集合,遍历存储玩家和底牌的集合
package com.itheima.demo.demo1;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
/*斗地主案例:
1.准备牌
2.洗牌
3.发牌
4,看牌
*/
public class doudizhu {
public static void main(String[] args) {
//1.准备牌
//定义一个存储54张牌的arrayList集合,泛型使用String
ArrayList<String> poker=new ArrayList<>();
//定义俩个数组,一个花色,一个数字
String [] colors={"♠","♥","♣","♦"};
String [] numbers ={"2","A","k","q","j","10","9","8","7","6","5","4","3"};
//把大小王存储到poker里
poker.add("大王");
poker.add("小王");
//2.洗牌
//先把所有牌放入一个集合中
for (String number : numbers) {
for (String color : colors) {
poker.add(color+number);
//System.out.print(poker);
}
}
// System.out.print(poker);
//调用集合的工具类collection中的方法进行洗牌
Collections.shuffle(poker);
//System.out.print(poker);
//3.发牌
//定义4个集合代表3个玩家和一个底牌
ArrayList<String> wanjia1=new ArrayList<>();
ArrayList<String> wanjia2=new ArrayList<>();
ArrayList<String> wanjia3=new ArrayList<>();
ArrayList<String> dipai=new ArrayList<>();
//然后发牌,最后三张给底牌,前51张用模3,0给玩家1,1给玩家2,2给玩家三
for(int i=0;i<poker.size();i++){
String p=poker.get(i);
if(i>=51){
dipai.add(p);
}else if(i%3 ==0){
wanjia1.add(p);
}else if(i%3 ==1){
wanjia2.add(p);
}else if(i%3 ==2){
wanjia3.add(p);
}
}
//System.out.print(dipai);
//4看牌
System.out.println("小海"+wanjia1);
System.out.println("贺哥"+wanjia2);
System.out.println("娅姐"+wanjia3);
System.out.println("底牌"+dipai);
}
}