思路:

i:创建牌
一张纸牌包含花色和字符
一副扑克牌:4种花色:黑桃、红桃、梅花、方块
                      17种字符:2~10  J~A
                      大、小王

ii:洗牌
通过随机数获取原数组下标,但是所参产生的随机数会重复,所以用个标识数组

iii:发牌
        玩家1的牌的数组下标是0,3,6,9...
        玩家2的牌的数组下标是1,4,7,10...
        玩家1的牌的数组下标是2,5,8,11...

代码:

package test01;import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;public class test01 {public static void main(String[] args) {//1.模拟软件while(true) {//3.打印提示信息System.out.println("【1】创建牌 【2】洗牌 【3】发牌 【-1】退出游戏");//4.从控制台获取一个整数int menu=getInt();//2.模拟关闭按钮if(menu==-1) {break;}//5.校验菜单boolean isCheck=check(menu);if(!isCheck) {System.out.println("输入的数字非法,请重新输入!");continue;}//6.处理菜单process(menu);}}//从控制台获取一个整数public static int getInt() {Scanner sc=new Scanner(System.in);return sc.nextInt();}//校验菜单public static boolean check(int menu) {if(menu>=1&&menu<=3)return true;else return false;}static String[] pokers=null;//处理菜单public static void process(int menu) {if(menu==1) {//创建牌pokers=create();}else if(menu==2) {//洗牌pokers=random(pokers);}else {//发牌fetch(pokers);}}//创建牌public static String[] create() {//1.准备花色数组String[] colors= {"红桃","黑桃","梅花","方块"};//2.准备字符String[] numbers= {"2","3","4","5","6","7","8","9","10","J","Q","K","A"};//3.准备大小王String[] kings= {"大王","小王"};//4.定义目标数组String[] destPokers=new String[0];//记得扩容//5.定义组合for(int i=0;i<colors.length;i++){for(int j=0;j<numbers.length;j++) {destPokers=Arrays.copyOf(destPokers,destPokers.length+1);destPokers[destPokers.length-1]=colors[i]+numbers[j];}}//拷贝两个王destPokers=Arrays.copyOf(destPokers,destPokers.length+kings.length);System.arraycopy(kings, 0, destPokers, destPokers.length-kings.length, kings.length);return destPokers;}//洗牌public static String[] random(String[] srcPokers) {//2.定义一个目标数组String[] destPokers=new String[srcPokers.length];//4.标识数组boolean[] flags=new boolean[srcPokers.length];//3.随机数要拿54次for(int i=0;i<srcPokers.length;i++){//1.拿到随机数Random ran=new Random();int index=ran.nextInt();//5.获取当前下标的标识boolean flag=flags[index];//6.判断如果标识为true,那么此次随机无效,如果为false ,这张牌就可以保存到目标数组if(flag) {i--;}else {destPokers[i]=srcPokers[index];flags[i]=true;}}return destPokers;}//发牌public static void fetch(String[] pokers) {//1.定义三个玩家String[] p1=new String[17];String[] p2=new String[17];String[] p3=new String[17];//2.遍历数组for(int i=0;i<pokers.length;i++) {if(i%3==0) {p1=Arrays.copyOf(p1, p1.length+1);//扩容p1[p1.length-1]=pokers[i];}else if(i%3==1) {p2=Arrays.copyOf(p2, p2.length+1);//扩容p2[p2.length-1]=pokers[i];}else if(i%3==2) {p3=Arrays.copyOf(p3, p1.length+1);//扩容p3[p3.length-1]=pokers[i];}}//3.打印玩家们手里的牌System.out.println("玩家一:\n",+Arrays.toString(p1));System.out.println("玩家二:\n",+Arrays.toString(p2));System.out.println("玩家三:\n",+Arrays.toString(p3));}
};

扑克牌游戏(Java实现)相关推荐

  1. 扑克牌游戏java代码_java实现简易扑克牌游戏

    本文实例为大家分享了java实现扑克牌游戏的具体代码,供大家参考,具体内容如下 游戏功能描述 1.创建一副扑克牌: 包括四种花色:黑桃,红桃,梅花,方片 包括十三种点数:2-10,J,Q,K,A 2. ...

  2. 简易扑克牌游戏JAVA源码_新手上路

    下面来看看具体代码的实现: 一.entity包 1.裁判类 package entity; /*** 裁判* @author Geek* @version 1.0* @date 2018年6月22日 ...

  3. JAVA控制台扑克牌游戏,洗牌,发牌,比较大小

    此游戏是一个简单的并且很基础的java控制台程序.这个扑克牌游戏主要的游戏过程是:首先创建一副扑克牌,创建好了后要进行洗牌,牌洗好了,需要玩家来玩,接下来就创建玩家.有洗好的牌,也有玩家了,那么就开始 ...

  4. Java实现扑克牌游戏(简易炸金花)

    本篇将实现Java版的扑克牌游戏 目录 一.创建扑克牌Poker 二.游戏玩法创建 2.1买牌 2.2洗牌 2.3揭牌 三.测试游戏代码 一.创建扑克牌Poker 在游戏开始之前要创建扑克牌,其中扑克 ...

  5. JAVA钓鱼游戏_5个小时写一个扑克牌游戏——金钩钓鱼

    罗大佑有歌云:"无聊的日子总是会写点无聊的歌曲......",我不是歌手,我是程序员,于是无聊的日子总是会写点无聊的程序.程序不能太大,不然没有时间完成:程序应该有趣,不然就达不到 ...

  6. Java入门第三季-综合实战:简易扑克牌游戏

    一.概述 第三季的综合实战部分是写一个简易扑克牌游戏,功能实现要求如下: 1.创建一副扑克牌 包括四种花色: 黑桃 红桃 梅花 方片 十三种点数 2-10,JQKA,不考虑大小王 2.创建两名玩家 玩 ...

  7. 用Java编写简单的扑克牌游戏

    昨天我帮助一位朋友解决了这个问题,今天我即兴想写一篇详细的关于用Java编写扑克牌游戏的文章. 当然我这里只是实现一些简单的功能. 关于扑克牌游戏的特征,想必大家都有所接触过,有扑克牌,玩扑克牌游戏的 ...

  8. java打印扑克牌_java实现简单扑克牌游戏

    本文实例为大家分享了java实现简单扑克牌游戏的具体代码,供大家参考,具体内容如下 扑克牌小游戏: 游戏玩法简介:定义五个People在玩扑克牌游戏,玩法是5个人从一副没有大小王的扑克牌中各抽取4张, ...

  9. 【Java】24点扑克牌游戏

    [Charloe原创] [前言] 这是学Java以来写的第一个比较有意思的东西--GUI界面的24点扑克牌游戏.大概是这个样子: [功能介绍] 一.随机生成四张扑克牌,按下Refresh按钮可以刷新牌 ...

  10. Java实验-02 模拟扑克牌游戏的洗牌

    结合面向对象设计原则,分析和设计模拟扑克牌游戏的洗牌过程. 编程定义一个表示扑克牌的类 Poke,用 suit 来表示扑克牌的花色,用 face 来表示扑克牌的 牌面值,每副牌为 52 张,不考虑包含 ...

最新文章

  1. LeetCode 35.搜索插入位置
  2. 通过document.domain实现跨域访问
  3. iOS开发实战-基于SpriteKit的FlappyBird小游戏
  4. qt 编译mysql wince_Qt4.8.6开发WinCE 5.0环境搭建
  5. 网站down掉后,自动发信的shell
  6. linux c之memcpy拷贝结构体到结构体、拷贝字符数组到结构体
  7. 字符串反序输出字符串
  8. 计算机软考培训网校,计算机软考培训中心
  9. TensorFlow——tf.contrib.layers库中的相关API
  10. 豪情-2014年年终总结
  11. 如何搭建数据标准管理平台
  12. 使用Python上传文件至服务器(不通过表单)
  13. 1597: [Usaco2008 Mar]土地购买
  14. 第二届Techo TVP 开发者峰会有感
  15. 计算机无法用630打印机,爱普生LQ-630型针式打印机突然打印几行乱码,就不工作了...
  16. 关于Android证书MD5获取
  17. Win10专业版企业版如何关闭系统更新
  18. 移动端键盘弹出后,导致背景图片上移解决方法(MUI)
  19. JavaScript实现京东轮播图效果——自动轮播,左右按钮切换图片,小圆圈跟随图片变化,点击小圆圈可跳转图片,无缝循环播放
  20. 经济法基础——第三章第一节、支付结算概述

热门文章

  1. 计算机控制技术直流电机调速控制实验报告,pid直流电机转速控制实验报告(31页)-原创力文档...
  2. Clustering by Passing Messages Between Data Points(Brendan J.Frey* and Delbert Dueck)例子
  3. 白魔法师--图的连通块问题(牛客小白月赛25)
  4. 杭电ACM-LCY算法进阶培训班-专题训练09
  5. 谷歌大脑提出VeLO优化器,无需调参,最高比Adam快16倍!
  6. 计算机网络的发展及其现状分析,计算机网络技术的发展现状和趋势分析
  7. 【游戏】Pes2021补丁
  8. poj2965 The Pilots Brothers' refrigerator
  9. 联发科技嵌入式_【MTK联发科技工资】嵌入式软件工程师待遇-看准网
  10. [Kerberos] Kerberos教程(一)