首页 > 编程语言 >java实现扑克牌游戏(洗牌,发牌,排序)

java实现扑克牌游戏(洗牌,发牌,排序)

时间:2022-11-26 16:46:35浏览次数:41  
标签:pokers java 扑克牌 ArrayList List add new keyList 发牌

package poker.bean;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.lang.annotation.ElementType;
import java.util.*;

/**
 * @Author:Liku
 * @Date:2022/11/26-14:05
 * @Name:JavaSE
 * @Since:jdk1.8
 * @Description:
 */
@Setter
@Getter
public class Poker {

    private Poker() {
    }

    public static void allPoker() {
        String[] color = {"♠", "♥", "♦", "♣"};
        String[] num = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};
        Map<Integer, String> pokers = new HashMap<>();
        List<Integer> keyList = new ArrayList<>();
        int index = 0;
        //外层循环数字,内层循环花色,这样能保证k值跟牌面值相匹配
        for (String s : num) {//外层循环数字
            for (String s1 : color) {//内层加上颜色
                pokers.put(index, s1 + s);
                keyList.add(index++);
            }
        }
        pokers.put(index, "♚");
        keyList.add(index++);
        pokers.put(index, "♔");
        keyList.add(index);
        Collections.shuffle(keyList);//打乱扑克牌下标序号,并且分配每个玩家的key值
        List<Integer> player1 = new ArrayList<>(17);
        List<Integer> player2 = new ArrayList<>(17);
        List<Integer> player3 = new ArrayList<>(17);
        List<Integer> dzPlay = new ArrayList<>(3);
        //给每个人发牌
        for (int i = 0; i < keyList.size(); i++) {
            if (i >= keyList.size() - 3) {
                dzPlay.add(keyList.get(i));
            } else if (i % 3 == 1) player1.add(keyList.get(i));
            else if (i % 3 == 2) player2.add(keyList.get(i));
            else if (i % 3 == 0) player3.add(keyList.get(i));

        }
        //将各位玩家的手牌排序
        Collections.sort(player1);
        Collections.sort(player2);
        Collections.sort(player3);
        Collections.sort(dzPlay);
        //创建玩家的list来装牌
        List<String> poker1 = new ArrayList<>();
        List<String> poker2 = new ArrayList<>();
        List<String> poker3 = new ArrayList<>();
        List<String> dzPoker = new ArrayList<>();
        //排完序根据key值,将扑克牌的value给玩家
        for (Integer integer : player1) {
            poker1.add(pokers.get(integer));
        }
        for (Integer integer : player2) {
            poker2.add(pokers.get(integer));
        }
        for (Integer integer : player3) {
            poker3.add(pokers.get(integer));
        }
        for (Integer integer : dzPlay) {
            dzPoker.add(pokers.get(integer));
        }
        System.out.println(poker1);
        System.out.println(poker2);
        System.out.println(poker3);
        System.out.println(dzPoker);
    }

    public static void main(String[] args) {
        allPoker();
    }
}

结果展示:

image

标签:pokers,java,扑克牌,ArrayList,List,add,new,keyList,发牌
From: https://www.cnblogs.com/Liku-java/p/16927686.html

相关文章

  • java反射
    反射的概念:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调......
  • java——数据库连接池——概念简介
        1.概念:其实就是一个容器(集合),存放数据库连接的容器。当系统初始化好后,容器被创建,容器中会申请一些连接对象,当用户来访问数据库时,从容器......
  • javascript面试题
    1.null和undefined区别首先Undefined和Null都是基本数据类型,这两个基本数据类型分别都只有一个值,就是undefined和null。undefined代表的含义是未定义,null代表......
  • 如何用JavaScripte和HTML 实现一整套的考试答题卡和成绩表
    相信在学校的你都有这样的体验,临近考试,要疯狂的“背诵”否则成绩单就要挂零,因为答题卡全部涂抹都是错的。那么毕业多年的你,没有了考试,有没有一丝怀念涂答题卡的时候,有没有......
  • java——JDBC——JDBC事务管理
      ##JDBC控制事务:1.事务:一个包含多个步骤的业务操作。如果这个业务操作被事务管理,则这多个步骤要么同时成功,要么同时失败。2.操作:1.开启事务......
  • java——JDBC——JDBC各个类详解——PreparedStatement类
    5.PreparedStatement:执行sql的对象1.SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题1.输入......
  • 力扣153(java&python)-寻找旋转排序数组中的最小值(中等)
    题目:已知一个长度为n的数组,预先按照升序排列,经由1到n次旋转后,得到输入数组。例如,原数组nums=[0,1,2,4,5,6,7]在变化后可能得到:若旋转4次,则可以得到[4,5,6,......
  • java——JDBC——JDBC各个类详解——ResultSet
    4.ResultSet:结果集对象,封装查询结果*booleannext():游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false,如果不是则......
  • java——JDBC——JDBC各个类详解——练习
    代码:Statementstmt=null;Connectionconn=null;try{......
  • java——JDBC——JDBC各个类详解——Statement
                     3.Statement:执行sql的对象1.执行sql1.booleanexecute(Stringsql):可......