栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java系列之:Collections实现斗地主游戏

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java系列之:Collections实现斗地主游戏

Java系列之:Collections实现斗地主游戏

需求:通过程序实现斗地主过程中的洗牌、发牌和看牌。要求:对牌进行排序。


思路:

  1. 创建HashMap,键是编号,值是牌
  2. 创建ArrayList,存储编号
  3. 创建花色数组和点数数组
  4. 从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里面存储编号
  5. 洗牌(洗的是编号),用Collections的shuffle()方法实现
  6. 发牌(洗的是编号),用Collections的shuffle()方法实现
  7. 发牌(发的也是编号,为了保证编号是排序的,创建TreeSet集合接收)
  8. 定义方法看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
  9. 调用看牌方法
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;

public class CollectionsDemo {

    public static void main(String[] args) {
        //创建HashMap,键是编号,值是牌
        HashMap hm = new HashMap();

        //创建ArrayList,存储编号
        ArrayList array = new ArrayList<>();

        //创建花色数组和点数数组

        String[] colors = {"♦️","♠️","♥️","♣️"};
        String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};

        //从0开始往HashMap里面存储编号,并存储对应的牌,同时往ArrayList里面存储编号
        int index = 0;

        for(String number : numbers){
            for(String color : colors){
                hm.put(index,color+number);
                array.add(index);
                index ++;
            }
        }

        hm.put(index,"小王");
        array.add(index);
        index++;
        hm.put(index,"大王");
        array.add(index);
        System.out.println("总共组合数:" + index);

        //洗牌(洗的是编号),用Collections的shuffle
        Collections.shuffle(array);

        //发牌(发的也是编号,为了保证编号是排序的,创建TreeSet集合接收)
        TreeSet player1 = new TreeSet();
        TreeSet player2 = new TreeSet();
        TreeSet player3 = new TreeSet();
        TreeSet dpSet = new TreeSet();

        for(int i = 0; i < array.size();i++){
            int x = array.get(i);
            if(i>=array.size() - 3){
                dpSet.add(array.get(i));
            }else if(i%3==0){
                player1.add(x);
            }else if(i%3 == 1){
                player2.add(x);
            }else if(i%3==2){
                player3.add(x);
            }
        }

        //调用看牌方法
        look("玩家一",player1,hm);
        look("玩家2",player2,hm);
        look("玩家3",player3,hm);
        look("底牌",dpSet,hm);

    }

    //定义方法看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)
    public static void look(String name,TreeSet ts, HashMap hm) {
        System.out.println(name + "的牌是:");
        for(Integer key : ts){
            String value = hm.get(key);
            System.out.print(value + "");
        }
        System.out.println();
    }
}

输出如下所示:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/844592.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号