java实现扑克牌发牌器

所属分类: 软件编程 / java 阅读数: 41
收藏 0 赞 0 分享

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;
自己想想,动手做一做才能真正理解。

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

更多精彩内容其他人还在看

利用MultipartFile实现文件上传功能

这篇文章主要为大家详细介绍了利用MultipartFile实现文件上传功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Java编程实现NBA赛事接口调用实例代码

这篇文章主要介绍了Java编程实现NBA赛事接口调用实例代码,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Java编程之双重循环打印图形

这篇文章主要介绍了Java编程之双重循环打印图形,属于Java编程基础练习部分,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

java基础学习JVM中GC的算法

这篇文章主要介绍了java基础学习JVM中GC的算法,通过图文加深对GC算法思路的理解。
收藏 0 赞 0 分享

Java编程Post数据请求和接收代码详解

这篇文章主要介绍了Java编程Post数据请求和接收代码详解,涉及enctype的三种编码,post与get等相关内容,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Retrofit+Rxjava实现文件上传和下载功能

这篇文章主要介绍了Retrofit+Rxjava实现文件上传和下载功能,文中提到了单文件上传和多文件上传及相关参数的请求,需要的朋友参考下吧
收藏 0 赞 0 分享

Retrofit+Rxjava下载文件进度的实现

这篇文章主要介绍了Retrofit+Rxjava下载文件进度的实现,非常不错,具有参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

java检查服务器的连通两种方法代码分享

这篇文章主要介绍了java检查服务器的连通两种方法代码分享,涉及ping的介绍以及检查服务器连通的两种方法代码示例,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享

Java/Android 获取网络重定向文件的真实URL的示例代码

本篇文章主要介绍了Java/Android 获取网络重定向文件的真实URL的示例代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

java并发编程之同步器代码示例

这篇文章主要介绍了java并发编程之同步器代码示例,分享了相关代码,具有一定参考价值,需要的朋友可以了解下。
收藏 0 赞 0 分享
查看更多