声明:

1.此简易程序只包含,定义牌,洗牌,发牌三步,至于游戏环节会在后续的博客中给出。

2.此程序采用的存储结构为集合,如果想用数组存储也可以,自己转化一下就可以了。

简易斗地主

1.组装牌

首先,我们需要一个集合pokerBox用于存放54张扑克牌。54张扑克牌可分为两张特殊牌(大王,小王)和52张普通牌,其中普通牌均由花色和牌号两部分组成。因此,对于52张普通牌的存储可以通过定义两个集合——颜色pokeColor与数字pokeNums,并循环嵌套遍历两个集合来存储。

代码如下:

//组装54张牌ArrayList<String> pokerBox = new ArrayList();ArrayList<String> pokerColor = new ArrayList();//花色pokerColor.add("♠");pokerColor.add("♥");pokerColor.add("♣");pokerColor.add("♦");ArrayList<String> pokeNums = new ArrayList();//点数pokeNums.add("A");pokeNums.add("J");pokeNums.add("K");pokeNums.add("Q");for (int i=2 ; i<=10; i++){pokeNums.add(""+i);}

此时我们已经准备好了组装54张牌的前提,下面进行组装,其中大王与小王单独存储

//组装特殊数据pokerBox.add("大王");pokerBox.add("小王");//组装其他52张牌for(String color : pokerColor){for(String num:pokeNums){String temp = color + num;pokerBox.add(temp);}}

这样我们就完成了54张牌的组装.

2.洗牌

洗牌部分较为简单,用到了Collections下的shuffle函数,该函数用法简单,在此不过多说明,如果不太明白可以直接查询该函数来得到详细信息。

洗牌部分代码如下:

//洗牌Collections.shuffle(pokerBox);

如果大家在此想查看当前洗牌的结果,可以通过如下语句查看:

System.out.println(pokerBox);

3.发牌

斗地主中,发牌结束后牌将被分为四堆:底牌堆(dipai),第一个人(theFirst),第二个人(theSecond),第三个人(theThird),我们将这四组分别定义为一个集合,然后分别存储。

集合是一种可以通过角标索引的存储结构,因此我们可以通过控制角标(index)来获取元素。

因为共有三个人,所以可以通过index%3求余的结果来对应三个人的手牌。

代码如下:

//发牌ArrayList<String> diPai = new ArrayList();ArrayList<String> theFirst = new ArrayList();ArrayList<String> theSecond = new ArrayList();ArrayList<String> theThird = new ArrayList();for(int index = 0;index < pokerBox.size();index++){if(index >= 51){diPai.add(pokerBox.get(index));}else{if(index % 3 == 0){theFirst.add(pokerBox.get(index));}else{if(index % 3 == 1){theSecond.add(pokerBox.get(index));}else{if(index % 3 == 2){theThird.add(pokerBox.get(index));}}}}}

4.输出最后结果

我们可以通过如下代码来查询现在四堆牌的结果:

System.out.println(diPai);
System.out.println(theFirst);
System.out.println(theSecond);
System.out.println(theThird);

总代码如下:

package cn.huida.poker;import java.util.ArrayList;
import java.util.Collections;public class PokerTest {public static void main(String[] args) {//组装54张牌ArrayList<String> pokerBox = new ArrayList();ArrayList<String> pokerColor = new ArrayList();//花色pokerColor.add("♠");pokerColor.add("♥");pokerColor.add("♣");pokerColor.add("♦");ArrayList<String> pokeNums = new ArrayList();//点数pokeNums.add("A");pokeNums.add("J");pokeNums.add("K");pokeNums.add("Q");for (int i=2 ; i<=10; i++){pokeNums.add(""+i);}//组装特殊数据pokerBox.add("大王");pokerBox.add("小王");//组装其他52张牌for(String color : pokerColor){for(String num:pokeNums){String temp = color + num;pokerBox.add(temp);}}//洗牌Collections.shuffle(pokerBox);//发牌ArrayList<String> diPai = new ArrayList();ArrayList<String> theFirst = new ArrayList();ArrayList<String> theSecond = new ArrayList();ArrayList<String> theThird = new ArrayList();for(int index = 0;index < pokerBox.size();index++){if(index >= 51){diPai.add(pokerBox.get(index));}else{if(index % 3 == 0){theFirst.add(pokerBox.get(index));}else{if(index % 3 == 1){theSecond.add(pokerBox.get(index));}else{if(index % 3 == 2){theThird.add(pokerBox.get(index));}}}}}System.out.println(diPai);System.out.println(theFirst);System.out.println(theSecond);System.out.println(theThird);}
}

==========================分割线==========================

感觉这一篇解释的不是很详细,如果有不理解的可以直接问我....

Java实现简易斗地主相关推荐

  1. JAVA实现简易版【斗地主】小游戏

    JAVA实现简易版[斗地主]小游戏 gitee项目源码链接:https://gitee.com/xzq25_com/playcardtest 效果展示:快来人机对战吧 一 二 三

  2. 简单计算器的设计java_(基于java的简易计算器的设计.doc

    (基于java的简易计算器的设计 基于java的简易计算器的设计 摘要 自从java语言诞生以来,java语言就以不可抵挡的趋势很快成为国际上广泛流行的面向对象编程语言,它既具有高级语言的特点,又少了 ...

  3. 如何用Java写一个斗地主(一)

    如何用Java写一个斗地主(一) 序言 正文 创建卡牌 打乱牌序 发牌 课后吐槽 序言 作为一名大三的普普通通大学生,被实习老师(?)强迫下,第一次开始写CSDN的博客,如果写的不好,请多多包涵咯. ...

  4. Java swing简易浏览器(其二)前进后退与收藏夹实现

    [Java swing简易浏览器(其一)页面显示,超链接跳转与手动输入URL跳转] [Java swing简易浏览器(其二)前进后退与收藏夹实现] [java swing 简易浏览器(其三)下载器,智 ...

  5. java案例-实现斗地主游戏案例

    java案例-实现斗地主游戏案例 1.需求分析: 模拟斗地主游戏,利用集合,Map实现斗地主的逻辑,并且可以看分派好的牌 2.具体实现: (1)在牌盒(字符串数组)存储四个花色: String[] c ...

  6. Java命令简易入门-3:javac与java命令之(java与jar)

    Java命令简易入门-3:javac与java命令之二(java与jar) 文章目录 Java命令简易入门-3:javac与java命令之二(java与jar) 1. 实验环境与实验文件 2. Jav ...

  7. java实现简易计算器,实现加减乘除,括号,算式查错,

    java实现简易计算器 问题分析 一.计算机界面显示 二. 计算器计算数据处理 三. 部分源代码(该源码未加入算式查错,文件资源正在上传) 三.完整源码,加减乘除,括号,delete,算式查错 问题分 ...

  8. Java实现简易聊天软件_类QQ(含课程论文、实施计划书、演示视频、答辩PPT、源代码及运行环境)

    很多BUG很多BUG很多BUG 视频演示: http://v.youku.com/v_show/id_XMjg4MDAxNTAwNA 关键部分参考: 注册界面实现-JAVA应用开发系列教程 https ...

  9. java poker_Java超级高手成长之路!一个Java编写的斗地主游戏

    原标题:Java超级高手成长之路!一个Java编写的斗地主游戏 "斗地主"是全国民间流行的一款扑克牌娱乐游戏,游戏最少由3个玩家进行,最多5人,游戏逻辑简单易于上手,老少皆宜,是我 ...

最新文章

  1. webapi 控制json的字段(key)显示顺序
  2. Vsphere 回收未消使用的磁盘空间
  3. 乐鑫代理-启明云端分享ESP32系列教程之二:Linux搭建esp-idf环境
  4. hashmap 扩容是元素还是数组_HashMap 中的容量与扩容实现
  5. bzoj1049[HAOI2006]数字序列
  6. SQL Server 2016 开发版将免费
  7. 使用perl统计单词(字母)
  8. 华为电脑如何投屏到电视linux,华为无线投屏怎么用
  9. DC/OS的基本思想——为什么说他是数据中心操作系统
  10. c语言实验心得100字,实验心得100字_100个面试常见经典问题_100个面试问题和答案...
  11. spring context:property-placeholder无法加载配置文件,导致属性无效
  12. matlab中将数据导出到Excel表格、.txt、.xml等文件中
  13. 有沃更精彩,沃课堂理想的移动学习平台
  14. PVS-Vdisk升级tools
  15. 使用PMT函数计算贷款还款额
  16. Vivado调用DDS IP核实现扫频信号
  17. 移动办公oa系统该如何搭配其他工具使用?
  18. 霍尔传感器测电机的转速
  19. 社交平台常用营销工具
  20. 贝加莱触摸屏维修4PP065.0571-X74F

热门文章

  1. 目标检测算法之CVPR2019 GIoU Loss
  2. 目标检测 - IoU和GIoU作为边框回归的损失和代码实现
  3. 基于Arduino的智能垃圾桶
  4. DELL R710服务器亮黄灯故障
  5. Web音频API:制作自己的Web合成器
  6. 图片#如何用Python创建一张图片并保存
  7. java 自动微分,MIT开源高性能自动微分框架Enzyme:速度提升4.5倍
  8. 宝妈,大学生怎么在家赚钱
  9. iOS端SHA256加密
  10. [翻译]NUnit---Condition Asserts Comparisons Asserts Type Asserts (五)