java实现扑克牌分发功能

 更新时间:2020年05月20日 09:16:19   作者:PowerAlan  
这篇文章主要为大家详细介绍了java实现扑克牌分发,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了java实现扑克牌分发的具体代码,供大家参考,具体内容如下

实现一个三人斗地主的扑克牌分发功能

思路:

1、准备一组54张的扑克牌
2、洗牌
3、将扑克牌分发到玩家手中
4、查看每个选手中的扑克牌和地主的底牌

思路补充:先创建两个花色和数字的数组,再创建一个List集合,和Map集合,运用双层for循环将花色和数字依次组合成52张扑克牌,之后分别在加添加进Map集合中的value值中,Map中的key值依次用0-51表示,双层for循环的同时将0-51的值依次赋值给List集合中,循环结束后在依次将大王、小王加入Map集合中的value中相对应的key值用52和53表示,还要讲52和53赋值到List集合中,此时所有牌组准备完毕。
分别创建四个新List集合,将存放序号的List集合中的序号打乱后分发到玩家手中,最后留三张底牌,添加到他们对应的List集合中
分别将三位玩家和底牌中的序号集合遍历,遍历出的数值带入到Map中的get方法的key值中,得到相对应得value值(也就是对应的牌),再将value值赋值给玩家手中对应的序号值处。
最后将三位玩家和底牌所对应的List集合输出打印出来即可看到他们被分到的牌。

具体代码如下:

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class TestPokerPlus {

 public static void main(String[] args) {
  //1.创建扑克牌集合
  //创建map集合,类似于字典 和 list序号集合
  List list = new ArrayList();
  HashMap<Integer,String> map = new HashMap<Integer,String>();
  //将花色和数字及JQK组合添加进扑克牌集合map中
  String[] color = {"♥","♦","♠","♣"};
  String[] number = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
  int num = 0;//计数器思想
  for(int i = 0 ;i< number.length;i++){
   for(int j = 0 ;j< color.length;j++){
    map.put(num,color[j]+number[i]);
    list.add(num);
    num++;
   }
  }
  //将序号集合中加入52,53两位序列,为之后map集合中加入“大王”、“小王”做准备
  list.add(list.size());
  list.add(list.size());
  //在加上大王、小王两张牌
  map.put(list.size()-2,"小王");
  map.put(list.size()-1,"大王");

  //2.打乱
  //将序号集合打乱
  Collections.shuffle(list);

  //3.分牌
  //创建三名玩家和底牌集合
  List player1 = new ArrayList();
  List player2 = new ArrayList();
  List player3 = new ArrayList();
  List cards = new ArrayList();
  //循环分发序号
  for(int i = 0 ;i<list.size();i++){
   if(i<list.size()-3){
    if(i % 3 == 1){
     player1.add(list.get(i));
    }else if(i % 3 == 2){
     player2.add(list.get(i));
    }else{
     player3.add(list.get(i));
    }
   }else{
    cards.add(list.get(i));
   }
  }
  //将分的的序号升序排列
  Collections.sort(player1);
  Collections.sort(player2);
  Collections.sort(player3);
  Collections.sort(cards);
  //遍历将3个玩家和底牌分得的序号集合 对照map集合重新将对应的牌赋值给对应的序号
  boardAssignment(map, player1);
  boardAssignment(map, player2);
  boardAssignment(map, player3);
  boardAssignment(map, cards);

  //4.看牌
  //打印输出三名玩家的牌的底牌
  System.out.println(player1);
  System.out.println(player2);
  System.out.println(player3);
  System.out.println(cards);
 }

 private static void boardAssignment(HashMap<Integer, String> map,List list) {
  for(int i = 0;i < list.size();i++){
   list.set(i, map.get(list.get(i)));
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解Reactor中Context的用法

    详解Reactor中Context的用法

    在Reactor中提供了Context来替代ThreadLocal,可以实现一个跨线程的共享变量的透明方式。本文主要为大家介绍了Context的用法的用法,感兴趣的可以了解一下
    2023-02-02
  • 在Mybatis中使用自定义缓存ehcache的方法

    在Mybatis中使用自定义缓存ehcache的方法

    这篇文章主要介绍了在Mybatis中使用自定义缓存ehcache的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • MybatisX无法自动生成entity实体类的解决方法

    MybatisX无法自动生成entity实体类的解决方法

    本文主要介绍了MybatisX无法自动生成entity实体类的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 深入学习JAVA GC日志的相关知识

    深入学习JAVA GC日志的相关知识

    JVM 在Java应用程序优化中是不可缺少的一大重项,如何合理配置Java参数,如何验证配置参数的有效性,从GC日志中可以获得很重要的提示。下面小编就带大家来一起学习一下吧
    2019-06-06
  • java后台验证码生成的实现方法

    java后台验证码生成的实现方法

    在我们使用进行系统开发时,为了提高系统的安全性,在登录的时候多数人都会要求输入验证,本文介绍了java后台验证码生成的实现方法,感兴趣的一起来了解一下
    2021-05-05
  • spring boot3整合AI组件及使用方法

    spring boot3整合AI组件及使用方法

    本文介绍了springboot开发后端服务中,AI组件(Spring AI)的整合与使用,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-05-05
  • java开发AOP基础JdkDynamicAopProxy

    java开发AOP基础JdkDynamicAopProxy

    这篇文章主要为大家介绍了java开发AOP基础JdkDynamicAopProxy源码示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Java实现List转换为Map的方法小结

    Java实现List转换为Map的方法小结

    这篇文章主要为大家详细介绍了Java实现List转换为Map的一些常见的方法,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下
    2024-03-03
  • Java中Scanner类与BufferReader类的不同点(非常详细)

    Java中Scanner类与BufferReader类的不同点(非常详细)

    这篇文章主要介绍了Java中Scanner类与BufferReader类的不同点(非常详细)的相关资料,需要的朋友可以参考下
    2016-08-08
  • javaWeb连接数据库实现简单登陆注册功能的全过程

    javaWeb连接数据库实现简单登陆注册功能的全过程

    初学javaWeb,老师留下一小作业,用JAVA实现与服务器端交互,实现登录和注册功能,下面这篇文章主要给大家介绍了关于javaWeb连接数据库实现简单登陆注册功能的相关资料,需要的朋友可以参考下
    2022-06-06

最新评论