java集合实现斗地主

需求:
通过程序实现斗地主过程中的洗牌,发牌和看牌

思路:
    1:创建一个牌盒,也就是定义一个集合对象,用ArrayList集合实现
    2:往牌盒里面装牌
    3:洗牌,也就是把牌打撒,用Collections的shuffle()方法实现
    4:发牌,也就是遍历集合,给三个玩家发牌
    5:看牌,也就是三个玩家分别遍历自己的牌
package DouDiZhu;

import java.util.ArrayList;
import java.util.Collections;

/*
    需求:
        通过程序实现斗地主过程中的洗牌,发牌和看牌

    思路:
        1:创建一个牌盒,也就是定义一个集合对象,用ArrayList集合实现
        2:往牌盒里面装牌
        3:洗牌,也就是把牌打撒,用Collections的shuffle()方法实现
        4:发牌,也就是遍历集合,给三个玩家发牌
        5:看牌,也就是三个玩家分别遍历自己的牌
* */
public class DouDiZhu_Poker {
    public static void main(String[] args) {
        ArrayList<String> arr = new ArrayList<>();
        String [] str1 = {"♠","♥","♣","♦"};
        String [] str2 = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        for (String s : str1) {
            for (String s1 : str2) {
                arr.add(s+s1);
            }
        }
        arr.add("大王");
        arr.add("小王");
        Collections.shuffle(arr);
        ArrayList<String> xiaohei = new ArrayList<>();
        ArrayList<String> xiaohua = new ArrayList<>();
        ArrayList<String> xiaobai = new ArrayList<>();
        ArrayList<String> dipai = new ArrayList<>();
        for (int i = 0; i < arr.size(); i++) {
            if(i>=arr.size()-3){
                dipai.add(arr.get(i));
            }else if(i%3==0){
                xiaohei.add(arr.get(i));
            }else if(i%3==1){
                xiaohua.add(arr.get(i));
            }else {
                xiaobai.add(arr.get(i));
            }
        }
        kanPoker("小白",xiaobai);
        kanPoker("小黑",xiaohei);
        kanPoker("小花",xiaohua);
        kanPoker("底牌",dipai);
    }
    public static void kanPoker(String name,ArrayList<String> arr){
        System.out.println(name+"的牌");
        for (String s : arr) {
            System.out.print(s+" ");
        }
        System.out.println();
    }
}

下面是斗地主升级版,就是要把发的牌给排序下,把小牌放到左边大牌放到右边

package DouDiZhu;

import java.util.*;

public class DouDiZhu_PokeMax {
    public static void main(String[] args) {
        String [] str1 = {"♠","♥","♣","♦"};
        String [] str2 = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
        HashMap<Integer,String> hm = new HashMap<>();
        ArrayList<Integer> arr = new ArrayList<>();
        int index = 0;
        for (String s : str2) {
            for (String s1 : str1) {
                String s2 = s1 + s;
                hm.put(index,s2);
                arr.add(index);
                index++;
            }
        }
        hm.put(index,"小王");
        arr.add(index);
        index++;
        hm.put(index,"大王");
        arr.add(index);
        Collections.shuffle(arr);
       // System.out.println(arr);
        TreeSet<Integer> xiaohei = new TreeSet<>();
        TreeSet<Integer> xiaobai = new TreeSet<>();
        TreeSet<Integer> xiaohua = new TreeSet<>();
        TreeSet<Integer> dipai = new TreeSet<>();
        for (int i = 0; i < arr.size(); i++) {
            if(i>=arr.size()-3){
                dipai.add(arr.get(i));
            }else if(i%3==0){
                xiaohei.add(arr.get(i));
            }else if(i%3==1){
                xiaohua.add(arr.get(i));
            }else {
                xiaobai.add(arr.get(i));
            }
        }



      /*  Set<Map.Entry<Integer, String>> entries = hm.entrySet();
        for (Map.Entry<Integer, String> entry : entries) {
            Integer key = entry.getKey();
            String value = entry.getValue();
            System.out.println(value);
        }*/
        kanPoker("小白",xiaobai,hm);
        kanPoker("小黑",xiaohei,hm);
        kanPoker("小花",xiaohua,hm);
        kanPoker("底牌",dipai,hm);
    }
    public static void kanPoker(String name,TreeSet<Integer> arr,HashMap<Integer,String> hm){
        System.out.println(name+"的牌");
        for (Integer integer : arr) {
            System.out.print(hm.get(integer)+" ");
        }
        System.out.println();
    }
}

大家有疑问可以留言,我会争取为大家解决,希望大家都能学号自己想学的语言。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值