java实现扑克牌发牌器

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

Java练习——扑克牌发牌器,供大家参考,具体内容如下

声明:学习自其他博主,感谢分享

实现思路

  • 构建一张扑克牌
  • 构建一套扑克牌
  • 测试

构建一张扑克牌

 /**
 * @author 冬冬
 * 定义一个单张扑克牌类
 * 有花型,大小
 */
public class Card {
 
  private String flower; // 花型
  private int daxiao;  // 点数
 
  /**构造方法
   * @param flower
   * @param daxiao
   */
  public Card(String flower, int daxiao) {
   this.flower = flower;
   this.daxiao = daxiao;
  }
 

  /* (non-Javadoc)
   * @see java.lang.Object#toString()
   * 获取本张卡牌的花型与大小,对于特殊的大小,如1——A,输出时进行转换
   */
  public String toString() {
   String daxiaoStr = "";
   switch(daxiao) {
   case 1: daxiaoStr = "A"; break;
   case 11: daxiaoStr = "J"; break;
   case 12: daxiaoStr = "Q"; break;
   case 13: daxiaoStr = "K"; break;
   default: daxiaoStr = String.valueOf(daxiao);
   }
   return flower + daxiaoStr;
  }
}

构建一套扑克牌

public class Poker {
 
 private static String[] flowers = {"黑桃", "红桃", "草花", "方块"};
 private static int[] daxiaos = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
 private Card[] cards;//卡片数组,应该有54张,这里去掉大小王,只52张
 
 /**
  * 构造器
  * 按顺序实例化52张扑克牌
  */
 public Poker() {
  cards = new Card[52];
  for(int i = 0; i < flowers.length; i++) {
   for(int j = 0; j < daxiaos.length; j++) {
    cards[i * 13 + j] = new Card(flowers[i], daxiaos[j]);
   }
  }
 }
 
 /**
  * 洗牌 (随机乱序)
  * 对于52个Card实例数组随机乱序排列
  */
 public void shuffle() {
  for(int i = 0, len = cards.length; i < len; i++) {
   int index = (int) (Math.random() * len);
   Card temp = cards[index];
   cards[index] = cards[i];
   cards[i] = temp;
  }
 }
 
 /**
  * 发牌
  * @param index 发牌的位置
  * 
  */
 public Card deal(int index) {
  return cards[index];
 }
 
}

测试

public class Test {
 
 public static void main(String[] args) {
  Poker poker = new Poker();//生成扑克牌
  poker.shuffle();   // 洗牌(乱序)
  Card c1 = poker.deal(0); // 发第一张牌
  //创建四个玩家,每个玩家13张空牌
  Card [] person1=new Card[13];
  Card [] person2=new Card[13];
  Card [] person3=new Card[13];
  Card [] person4=new Card[13];
  //为玩家的的空牌赋值
  for(int i=1;i<=52;i++)
  {
   if(i<=13) person1[i-1]=poker.deal(i-1);
   if(i>13&&i<=26) person2[i-1-13]=poker.deal(i-1);
   if(i>26&&i<=39) person3[i-1-26]=poker.deal(i-1);
   if(i>39&&i<=52) person4[i-1-39]=poker.deal(i-1); 
  }
  //打印
  System.out.println("玩家1");
  for (Card card : person1) {
 System.out.print(card+" ");
  }
  System.out.println("");
  System.out.println("玩家2");
  for (Card card : person2) {
  System.out.print(card+" ");
  }
  System.out.println("");
  System.out.println("玩家3");
  for (Card card : person3) {
  System.out.print(card+" ");
  }
  System.out.println("");
  System.out.println("玩家4");
  for (Card card : person4) {
  System.out.print(card+" ");
  }
 }
}

结果:

玩家1
红桃6 方块4 方块A 黑桃4 草花2 红桃Q 红桃J 红桃K 方块3 黑桃K 方块8 黑桃7 黑桃5
玩家2
草花A 黑桃2 红桃7 草花3 草花5 方块J 方块9 草花9 草花K 黑桃8 草花J 黑桃10 红桃8
玩家3
方块7 红桃4 红桃2 草花6 方块2 黑桃Q 黑桃9 黑桃A 草花10 草花7 红桃10 红桃A 方块Q
玩家4
红桃9 方块5 草花8 方块10 方块K 草花Q 黑桃3 红桃5 黑桃6 黑桃J 红桃3 方块6 草花4

注意事项

不要忘记在Poker类里导入Card类,在Test类里面导入Poker和Card;
自己想想,动手做一做才能真正理解。

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

相关文章

  • SpringBoot控制配置类加载顺序方式

    SpringBoot控制配置类加载顺序方式

    这篇文章主要介绍了SpringBoot控制配置类加载顺序方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 详解Java的MyBatis框架中的缓存与缓存的使用改进

    详解Java的MyBatis框架中的缓存与缓存的使用改进

    很多人在使用MyBatis的缓存后经常会遇到MySQL分页查询的显示问题,针对于此,这里我们就来详解Java的MyBatis框架中的缓存与缓存的使用改进,首先来回顾一下MyBatis的缓存机制与执行:
    2016-06-06
  • 解决Spring Mvc中对象绑定参数重名的问题

    解决Spring Mvc中对象绑定参数重名的问题

    最近在工作中遇到了参数绑定的一个问题,发现网上这方面的资料较少,索性自己来总结下,下面这篇文章主要给大家介绍了关于如何解决Spring Mvc中对象绑定参数重名问题的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • Java源码解析之HashMap的put、resize方法详解

    Java源码解析之HashMap的put、resize方法详解

    这篇文章主要介绍了Java源码解析之HashMap的put、resize方法详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有很大的帮助,需要的朋友可以参考下
    2021-04-04
  • 如何用IDEA调试BUG的几种方法

    如何用IDEA调试BUG的几种方法

    这篇文章主要介绍了如何用IDEA调试BUG的几种方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2020-03-03
  • Java后端接收前端数据的五种方法

    Java后端接收前端数据的五种方法

    本文概述了前后端分离中Vue与Java的数据交互方式,包括JSON、表单、URL参数、文件上传及路径参数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-08-08
  • ES多条件查询写法举例

    ES多条件查询写法举例

    这篇文章主要给大家介绍了关于ES多条件查询的相关资料,Elasticsearch多条件查询是指在查询数据时,可以同时使用多个条件来筛选数据,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-11-11
  • Java基于FFmpeg实现Mp4视频转GIF

    Java基于FFmpeg实现Mp4视频转GIF

    FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。本文主要介绍了在Java中如何基于FFmpeg进行Mp4视频到Gif动图的转换,感兴趣的小伙伴可以了解一下
    2022-11-11
  • Spring Gateway自定义请求参数封装的实现示例

    Spring Gateway自定义请求参数封装的实现示例

    这篇文章主要介绍了Spring Gateway自定义请求参数封装的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Java 精炼解读数据结构的顺序表如何操作

    Java 精炼解读数据结构的顺序表如何操作

    程序中经常需要将一组数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等。一组数据中包含的元素个数可能发生变化,顺序表则是将元素顺序地存放在一块连续的存储区里,元素间的顺序关系由它们的存储顺序自然表示
    2022-03-03

最新评论