java案例-实现斗地主游戏案例
1.需求分析:
模拟斗地主游戏,利用集合存储,可以看分派好的牌
2.具体实现:
(1)在牌盒(字符串数组)存储四个花色:
String color[] = {"♠","♥","♣","♦"};
(2)按照斗地主游戏规则由大到小:
String number[] = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
(3)在Map中存储键值对,键是索引值,值是花色和点数组成的字符串,索引用来指定派,利用索引进行洗牌操作
(4)把索引值存储到ArrayList集合中,以便进行洗牌操作
(5)利用集合工具类Collections的shuffle()方法实现洗牌功能
(6)按照斗地主的发牌规则发牌,这里发的是洗牌操作之后的索引值
(7)看牌
public class Doudizu {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList<String> arr = new ArrayList<>();
String color[] = {"♠","♥","♣","♦"};
String number[] = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
//放入大王小王
arr.add("大王");
arr.add("小王");
//生成牌
for( String c : color) {
for(String s : number) {
arr.add(s+c);
}
}
//洗牌
Collections.shuffle(arr);
//System.out.println(arr);
//发牌
ArrayList<String> user1 = new ArrayList<>();
ArrayList<String> user2 = new ArrayList<>();
ArrayList<String> user3 = new ArrayList<>();
ArrayList<String> dipai= new ArrayList<>();
for (int i = 0; i < arr.size(); i++) {
String s =arr.get(i);
//底牌设置
if(i>=51) {
dipai.add(s);
//轮流发牌
}else if(i%3==1) {
user1.add(s);
}else if(i%3==2) {
user2.add(s);
}else if(i%3==0) {
user3.add(s);
}
}
//看牌
System.out.println("陈志朋: "+user1);
System.out.println("金庸: "+user2);
System.out.println("马云: "+user3);
System.out.println("底牌: "+dipai);
}
}
输出结果为:
陈志朋: [Q♦, K♥, 4♥, 9♥, 8♠, 7♥, 6♣, J♥, A♣, K♦, 2♠, A♠, 10♥, 6♠, 4♦, Q♣, 5♦]
金庸: [2♣, 6♥, 4♠, Q♠, 3♦, A♥, 9♦, 6♦, 8♥, J♦, 10♠, 2♥, J♠, 小王, 5♠, 5♣, 3♥]
马云: [3♣, 10♦, 8♦, 5♥, 4♣, 9♠, 7♦, 大王, 8♣, J♣, A♦, 7♣, K♣, K♠, Q♥, 7♠, 10♣]
底牌: [9♣, 3♠, 2♦]