Java实现扑克牌洗牌和发牌

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

实现原理:使用4种花色和13个数字组合成52张牌,放进一个集合中;通过把集合数据排序打乱实现洗牌操作,然后在通过循环把牌抽出来实现发牌操作。

下面是实现代码:

import java.util.ArrayList;
import java.util.Collections;

public class Card {
  private static ArrayList<String> list = new ArrayList<>();
  private static String[] colors = {"黑桃","红桃","梅花","方块"};
  private static String[] nums = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
  private static String[] jokers = {"Joker","joker"}; //大小王
  private static ArrayList<String> A = new ArrayList<>(); //小人A
  private static ArrayList<String> B = new ArrayList<>(); //小人B
  private static ArrayList<String> C = new ArrayList<>(); //小人C
  private static ArrayList<String> D = new ArrayList<>(); //小人D

  //初始化扑克牌
  public static void initCards(boolean need){
    for(String color:colors){
      for (String num:nums) {
        list.add(color + num);
      }
    }
    //是否添加大小王
    if (need) {
      list.add(jokers[0]);
      list.add(jokers[1]);
    }
  }

  //洗牌
  public static void xiPai(){
    Collections.shuffle(list);
  }

  //性感荷官,在线发牌
  public static void faPai(){
    A.clear();
    B.clear();
    C.clear();
    D.clear();
    for (int i = 0; i < list.size();i++) {
      if (i%4 == 0) {
        A.add(list.get(i));
      }
      if (i%4 == 1) {
        B.add(list.get(i));
      }
      if (i%4 == 2) {
        C.add(list.get(i));
      }
      if (i%4 == 3) {
        D.add(list.get(i));
      }
    }
  }

  //主方法
  public static void main(String args[]){
    initCards(true);
    xiPai();
    faPai();
    System.out.print("小人A" + A + "\n");
    System.out.print("小人B" + B + "\n");
    System.out.print("小人C" + C + "\n");
    System.out.print("小人D" + D + "\n");
  }
}

下面是运行结果

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

(0)

相关推荐

  • Java扑克牌速算24的方法

    已知一副扑克牌有54张,去除大王和小王,剩余52张.在其中随机抽取4张牌,利用加减乘除进行计算得到24. 从A到10,他们的值分别为1到10. 从J到K,他们对应的值是减去10以后的值.编写程序生成一副扑克牌,随机抽取4张,进行计算是否能得到24. 如果可以,列出可能的计算表达式,可能有多种计算形式. 主要思想就是先生成除去大小王的52张扑克牌,然后从中随机抽取四张.接着用排列组合的方式找到能计算得到24的表达式. package Poker; import java.util.Random;

  • Java模拟扑克牌洗牌实现生成52张扑克的方法示例

    本文实例讲述了Java模拟扑克牌洗牌实现生成52张扑克的方法.分享给大家供大家参考,具体如下: 要求: 生成52张扑克,模拟扑克牌洗牌,并输出. 实现代码: package com.NCU.ZHANGhuirong; import java.util.ArrayList; import java.util.Collections; public class Card { public String poker(int num) { String str = ""; String[] f

  • java用扑克牌计算24点

    一副扑克牌的每张牌表示一个数(J.Q.K 分别表示 11.12.13,两个司令都表示 6).任取4 张牌,即得到 4 个 1~13 的数,请添加运算符(规定为加+ 减- 乘* 除/ 四种)使之成为一个运算式.每个数只能参与一次运算,4 个数顺序可以任意组合,4 个运算符任意取 3 个且可以重复取.运算遵从一定优先级别,可加括号控制,最终使运算结果为 24.请输出一种解决方案的表达式,用括号表示运算优先.如果没有一种解决方案,则输出 -1 表示无解. 输入格式: 输入在一行中给出 4 个整数,每个

  • Java基础高级综合练习题扑克牌的创建

    最近学了很多的知识,脑容量小,记不清,还是得做做练习! 今天就做了一个扑克牌的练习 首先呢..这个逻辑一定要非常清楚,我们要想做出一副扑克牌,必定要弄清楚每一张牌和整的一副牌 首先分析 一张扑克 一张牌里面有什么?相信大家看图(图不是我写的)就应该懂了,一张扑克有属于它自己的花色(红桃,黑桃,梅花,方块) 以及自己的点数(A,2,3-..J,Q,K)就这两种属性,对吧! 那么花色符号,点数符号是个啥? 花色符号就是来代替我们的花色的,我们不可能拿着"红桃"这种文字写进程序吧!所以我们可

  • JAVA collection集合之扑克牌游戏实例

    Collection 层次结构中的根接口.Collection表示一组对象,这些对象也称为collection的元素.一些 collection 允许有重复的元素,而另一些则不允许.一些 collection 是有序的,而另一些则是无序的.JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现.此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection. 主要内容:这里使用collection集合,模拟香港电影中大佬们玩的

  • Java实现扑克牌洗牌和发牌

    本文实例为大家分享了Java实现扑克牌洗牌发牌的具体代码,供大家参考,具体内容如下 实现原理:使用4种花色和13个数字组合成52张牌,放进一个集合中:通过把集合数据排序打乱实现洗牌操作,然后在通过循环把牌抽出来实现发牌操作. 下面是实现代码: import java.util.ArrayList; import java.util.Collections; public class Card { private static ArrayList<String> list = new Array

  • Java模拟实现扑克牌洗牌和发牌的示例代码

    目录 一. 需求 二. 全局代码 poker.java pokers.java 三. 设计分析 1. 设计一张扑克牌 2. 得到一副新牌 3. 洗牌 4. 发牌 一. 需求 设计一副新的的扑克牌, 4个花色(♥, ♠, ♦, ♣)对应 1 到 13 , 不算大小王一共52张牌 ; 然后将扑克牌随机打乱顺序 , 最后实现三个人进行摸牌 , 三个人轮流进行摸牌(每次摸一张牌) , 最终每个人手里有五张牌 二. 全局代码 poker.java public class poker { private

  • java集合模拟实现斗地主洗牌和发牌

    本文实例为大家分享了java实现斗地主洗牌和发牌的具体代码,供大家参考,具体内容如下 1:用ArrayList集合实现 案例分析: 我们现在要做的是模拟斗地主小游戏来进行洗牌和发牌. 具体步骤: A:首先,创建一个ArrayList集合来存储牌,将牌的花色和点数存储在俩个字符串数组中中,然后用for循环加强遍历将每张牌的花色点数及大王小王存储在集合中. B:进行洗牌,调用collectionas的shuffle方法. C:进行发牌,创建四个ArrayList集合,分别用来存储玩家一,玩家二,玩家

  • Java模拟实现斗地主的洗牌和发牌

    本文实例为大家分享了Java实现斗地主的洗牌和发牌的具体代码,供大家参考,具体内容如下 案例分析: 我们需要模拟斗地主过程中的洗牌.发牌和看牌.而且要求牌是排好序的. 1.每张扑克牌都有花色和点数,所以我们可以先把花色和点数存进两个字符串数组,然后再存进集合里,而因为我们后面涉及到对牌进行洗牌还有排序等等,所以我们选择TreeMap集合来存储,键是扑克牌的编号,值是扑克牌的花色和点数(把花色和点数拼接成一个字符串). 2.洗牌洗的是编号,我们再用ArrayList集合来存储牌的编号,调用Coll

  • C语言实现洗牌与发牌游戏

    本文实例为大家分享了C语言实现洗牌与发牌游戏的具体代码,供大家参考,具体内容如下 普通版 #include<stdio.h> #include<stdlib.h> #include<time.h> #define SUITS 4 #define FACES 13 #define CARDS 52 void shuffle(int wDeck[][FACES]); void send(int wDeck[][FACES], const char* wSuit[], con

  • javascript实例--教你实现扑克牌洗牌功能

    我们一般都会按照顺序把随机摸过来的牌从小到大的顺序在手上理整齐(记得小时候打牌两副牌手都抓不过来),这篇随笔就是想通过实现这个功能来熟悉下js中排序数组等相关知识. 用到知识点: 1.工厂方式创建对象 2.js数组sort()方法 复制代码 代码如下: var testArr = [1, 3, 4, 2];     testArr.sort(function (a,b) {         return a - b;     })     alert(testArr.toString());//

  • C++扑克牌的洗牌发牌游戏设计

    笔者在大学二年级期间,做过的一次C++程序设计:扑克牌的洗牌发牌游戏.具体内容是:除去大王和小王,将52张扑克牌洗牌,并发出5张牌.然后判断这5张牌中有几张相同大小的牌,是否是一条链,有几个同花等. 笔者在学习他人设计的基础上,完成了自己的程序设计.这里将源程序分享给大家. [1] 文件"card.h" #ifndef CARD_H #define CARD_H #include<string> using namespace std; class Card { publi

  • Java实现斗地主之洗牌发牌

    本文通过实例为大家分享了Java实现斗地主之洗牌发牌的具体代码,供大家参考,具体内容如下 案例分析 需求: 实现斗地主过程中的洗牌,发牌和看牌. 并且确保每一位玩家手上拿到的牌是随机并且按照大小排序好的 思路 1.创建一个牌盒,也就是定义一个集合对象,用ArrayList集合实现 2.往牌盒里面装牌 3.洗牌,也就是把牌打散,用Collections的shuffle()方法实现 4.发牌,也就是遍历结合,给三个玩家发牌 5.看牌,也就是三个玩家分别遍历自己的牌 代码实现 1.创建牌盒,存放所有牌

  • C++实现洗牌发牌排序功能的示例代码

    在内存中模拟出一副牌,然后模拟洗牌,发牌等动作. 流程是这样的:构建一副牌保存到一个数组中-洗牌-创建玩家-向玩家发牌–输出每个玩家的牌. #include <stdio.h> #include <stdlib.h> #include <time.h> //定义扑克的花色 enum Suit{ heart, spade, diamond, club, joker1, joker2 }; //一副牌的数量 #define CARD_COUNT 54 //定义扑克 type

随机推荐