Java实现斗地主实例
分析:
首先,我们来梳理一下规则:
准备牌阶段:斗地主一般用一副牌,有54张,其中有大王小王各1张,其他52张牌,分别是4个花色,每种花色13张。四种花色分别为♥ ♦ ♠ ♣,定义一个集合来存储它们;而每一种花色中的13张牌为:(由大到小)2 A K Q J 10 9 8 7 6 5 4 3,也定义一个集合来存储它们。遍历这两个集合,可以组装成为52张牌,例如♣7 ♥A
洗牌阶段:使用集合工具类Collections方法,其中static void shuffle(List<?> list)使用指定的随机数对指定列表进行置换,会随机的打乱集合中的元素的顺序
发牌阶段:要求每一位玩家拥有17张牌,剩余三张作为底牌,一人一张轮流发牌:集合的索引(0-53)%3,定义4个集合,来存储3个玩家的牌和场上的底牌。索引%3,有三个值(0,1,2),0%3=0,1%3=1,2%3=2,3%3=0,当索引>=51时,改为发底牌
看牌阶段:直接打印集合,遍历存储玩家和底牌的集合
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;public class PokerDemo {public static void main(String[] args) {HashMap<Integer,String> hm=new HashMap<Integer,String>();//创建arraylist,存储编号ArrayList<Integer> array=new ArrayList<Integer>();//创建花色数组和点数数组String[] colors={"♦","♣","♠","❤"};String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"};//从0开始向Hashmap存取编号,并存储对应的牌。同时往Arraylist存取编号int index=0;for (String number:numbers){for (String color:colors){hm.put(index,color+number);array.add(index);index++;}}hm.put(index,"小王");array.add(index);index++;hm.put(index,"大王");array.add(index);//洗牌(洗的时编号),用collection的shuffle方法实现Collections.shuffle(array);//发牌TreeSet<Integer> lqx=new TreeSet<Integer>();TreeSet<Integer> ly=new TreeSet<Integer>();TreeSet<Integer> fqx=new TreeSet<Integer>();TreeSet<Integer> dp=new TreeSet<Integer>();for (int i=0;i<array.size();i++){int x=array.get(i);if (i>=array.size()-3){dp.add(x);} else if (i%3==0) {lqx.add(x);} else if (i%3==1) {ly.add(x);} else if (i%3==2) {fqx.add(x);}}lookPoker("林青霞",lqx,hm);lookPoker("柳岩",ly,hm);lookPoker("风清扬",fqx,hm);lookPoker("底牌",dp,hm);//定义方法看牌}public static void lookPoker(String name,TreeSet<Integer> ts,HashMap<Integer,String> hm){System.out.print(name+"的牌是:");for (Integer key:ts){String Poker = hm.get(key);System.out.print(Poker+" ");}System.out.println("\n");}
}
结果展示:
Java实现斗地主实例相关推荐
- java版斗地主_Java实现斗地主简化版
本文实例为大家分享了Java实现斗地主的具体代码,供大家参考,具体内容如下 package com.westos.chinesePoker; import java.util.ArrayList; i ...
- java局部变量全局变量,实例变量的理解
java局部变量全局变量,实例变量的理解 局部变量 可以理解为写在方法中的变量. public class Variable {//类变量static String name = "小明&q ...
- 用 XStream 序列化/反序列化 XML 为 Java 对象(实例)
用 XStream 序列化/反序列化 XML 为 Java 对象(实例) Posted on 2007-06-05 19:06 Stephen Wong 阅读(1224) 评论(0) 编辑 收藏 网 ...
- JAVA实现SFTP实例(JSCH)
JAVA实现SFTP实例 最近写的一个JAVA实现SFTP的实例: /* * Created on 2009-9-14 * Copyright 2009 by www.xfok.net. All Ri ...
- java rmi 入门实例
java rmi 入门实例 (2009-06-16 16:07:55) 转载▼ 标签: java rmi 杂谈 分类: java-基础 java rmi即java远程接口调用,实现了2台虚拟机之间的 ...
- c++ java通信 protocol buffer,google protocol buffer (C++,Java序列化应用实例)
google protocol buffer (C++,Java序列化使用实例) 转载,请注明出处: http://blog.csdn.net/eclipser1987/article/details ...
- java ldap操作实例_Java Spring Security示例教程中的2种设置LDAP Active Directory身份验证的方法...
java ldap操作实例 LDAP身份验证是世界上最流行的企业应用程序身份验证机制之一,而Active Directory (Microsoft为Windows提供的LDAP实现)是另一种广泛使用的 ...
- Java Web Start实例
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. JWS让用户可以下载服务器端的Java Application到本机运行,并且没有安装.配置等繁琐的 ...
- axis2 webservice入门学识(JS,Java,PHP调用实例源码)
来源:http://www.myexception.cn/web/952419.html axis2 webservice入门知识(JS,Java,PHP调用实例源码) 背景简介 最近接触到一个银行接 ...
最新文章
- linux删除指定创建时间文件(文件夹)脚本
- Vue打包之后会出现.map文件用处
- bootstrap下拉选择框选中事件_CAD制图初学入门之CAD软件中布局功能详解
- 剧情介绍:“我是山姆”
- quilleditor 字体大小设置_quill-editor如何更改字体配置?
- 最新云EC在线商城系统网站源码V1.3版 开源版
- win10无法运行jre java_win10系统无法安装jre的解决方法
- 提升bitcomet下载速度的方法
- Java第一个程序的相关解释
- P1757 通天之分组背包 (分组背包 模板
- uni-app解析及配置(小程序对应的转换)
- 解魔方神器开源啦!摄像头看一眼,就能还原全步骤
- 如何使用EasyNVR+CDN突破萤石云在直播客户端数量上的限制,做到低成本高性价比的直播...
- 树莓派【树莓派关机命令,putty下载与远程控制树莓派,vnc控制树莓派(还没写完)】
- 中秋国庆长假,SEO你在坚持吗?
- 对HBase整个框架的理解
- 策略究龟交易法(附源码
- allergro音乐术语什么意思_意大利语音乐表情术语发音 allegro assai
- 张越:每张脸背后都有故事
- iview 组件的用法
热门文章
- 【小白视角】大数据基础实践(五) MapReduce编程基础操作
- 高速球滑环在监控方面的应用
- 社群管理工具帮助更好管理社群
- UG NX 12 设置定向视图
- 网络安全是怎样练成的.4——我们要到哪里去
- 丹东御空服务器维修,部分服务器苍穹星图奖励显示异常说明
- 上传图片到七牛云(前端和后端)
- Python如何将写好的代码打包成exe文件
- 【经典算法大全】收集51种经典算法 初学者必备
- u盘维护工具 linux,【制作简单,启动兼容性好的U盘维护工具:DOS工具+WINPE+PUPPY LINUX】...