• java——斗地主小游戏之洗牌发牌


    遇到的问题:

      1.int和Integer的区别?

        1)Integer是int的包装类,int则是java的一种基本数据类型 。

        2)Integer变量必须实例化后才能使用,而int变量不需要 。

        3)Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 。

        4)Integer的默认值是null,int的默认值是0。

    Cards.java:

    import java.util.*;
    public class Card{
        public static void main(String[] args){
            ArrayList<String> color = new ArrayList<String>();
            ArrayList<String> num = new ArrayList<String>();
            color.add("♠️");
            color.add("♥️");
            color.add("◇");
            color.add("♣️");
            for(int i=2; i<=10; i++){
                //很神奇,可以把add()里面的数据变成字符串
                num.add(i+ "");
            }
            num.add("J");
            num.add("A");
            num.add("K");
            num.add("Q");//map是一副牌 54张
            HashMap<Integer, String> map = new HashMap<Integer, String>();
            int index = 0;
            for (String thisColor: color){
                for (String thisNum: num){
                    map.put(index++, thisColor + thisNum);
                }
            }
            map.put(index++, "小王");
            map.put(index++, "大王");
            ArrayList<Integer> cards = new ArrayList();
            //这里就是int
            for(int i=0; i<54; i++){
                cards.add(i);
            }
            //将cards顺序打乱
            Collections.shuffle(cards);
            //System.out.println(cards);
            //System.out.println(map);
    
            //创建三个玩家
            ArrayList<Integer> player1 = new ArrayList();
            ArrayList<Integer> player2 = new ArrayList();
            ArrayList<Integer> player3 = new ArrayList();
            ArrayList<Integer> SecreatCards = new ArrayList();
            for(int i=0; i<cards.size(); i++){
                if(i>50){
                    SecreatCards.add(cards.get(i));
                }else if(i%3 == 0){
                    player1.add(cards.get(i));
                }else if(i%3 == 1){
                    player2.add(cards.get(i));
                }else {
                    player3.add(cards.get(i));
                }
            }
            Collections.sort(player1);
            Collections.sort(player2);
            Collections.sort(player3);
            ArrayList<String> sPlayer1 = new ArrayList<String>();
            ArrayList<String> sPlayer2 = new ArrayList<String>();
            ArrayList<String> sPlayer3 = new ArrayList<String>();
            for(Integer key : player1){
                //这里的key应该是object类,所以用Integer而不是int
                sPlayer1.add(map.get(key));
            }
            for(Integer key : player2){
                sPlayer2.add(map.get(key));
            }
            for(Integer key : player3){
                sPlayer3.add(map.get(key));
            }
            System.out.println("player1:" + sPlayer1);
            System.out.println("player2:" + sPlayer2);
            System.out.println("player3:" + sPlayer3);
            System.out.println("底牌:" + SecreatCards);
        }
        
    }

    还是蛮有意思的~

     

  • 相关阅读:
    QQ视频直播架构及原理 流畅与低延迟之间做平衡 音画如何做同步?
    边缘推流与中心推流对比
    推流协议 支持RTMP协议推流
    改变原型
    window.onbeforeunload 埋点 页面停留时间
    修改/etc/hosts 云服务器 没有做外网转内网的优化
    :nohlsearch
    z waiting to receive.**B0100000023be50
    Powered by Flink
    负载均衡
  • 原文地址:https://www.cnblogs.com/gaoquanquan/p/9620066.html
Copyright © 2020-2023  润新知