* 将54张洗乱的牌一次发给三个人,并且留三张底牌,要求每个人的牌都按顺序排序然后控制台显示出每个人手中的牌以及底牌*

package work;import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.junit.Test;public class PokerDemo {private Person player1 = new Person();private Person player2 = new Person();private Person player3 = new Person();private List<Poker> bottom = new ArrayList<Poker>();/*** 斗地主: 1组装54张扑克牌   2将54张牌顺序打乱(查看API手册中的Collections工具类中的shuffle方法)* 3 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。             4查看三人各自手中的牌(按照牌的大小排序)、底牌*/@Testpublic void test() {List<Poker> pokers = getPoker();System.out.println("--------------------------------");System.out.println("洗过的牌");System.out.println(pokers);System.out.println("--------------------------------");cutOfDeal(pokers);}// 组装一副牌public List<Poker> getPoker() {List<Poker> pokers = new ArrayList<Poker>();String[] colors = { "♦", "♣", "❤", "♠" };String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q","K", "A", "2" };for (String c : colors) {for (String n : numbers) {pokers.add(new Poker(c, n));}}pokers.add(new Poker("大", "王"));pokers.add(new Poker("小", "王"));Collections.shuffle(pokers);return pokers;}public void cutOfDeal(List<Poker> pokers) {for (int i = 0; i < pokers.size() - 3; i++) {if (i % 3 == 0) {Poker poker = pokers.get(i);player1.getList().add(poker);}if (i % 3 == 1) {Poker poker = pokers.get(i);player2.getList().add(poker);}if (i % 3 == 2) {Poker poker = pokers.get(i);player3.getList().add(poker);}}for (int i = pokers.size() - 3; i < pokers.size(); i++) {bottom.add(pokers.get(i));}// 打印player1的牌List<Poker> p1 = player1.getList();Collections.sort(p1);System.out.println(p1);// 打印player2的牌List<Poker> p2 = player2.getList();Collections.sort(p2);System.out.println(p2);// 打印player3的牌List<Poker> p3 = player3.getList();Collections.sort(p3);System.out.println(p3);// 打印底牌System.out.println(bottom);}
}class Person {// 存放牌的private List<Poker> list = new ArrayList<Poker>();public List<Poker> getList() {return list;}public void setList(List<Poker> list) {this.list = list;}
}class Poker implements Comparable<Poker> {// 花色private String color;// 数字private String number;private static Map<String, Integer> colorDic = new HashMap<String, Integer>();private static Map<String, Integer> numberDic = new HashMap<String, Integer>();static {colorDic.put("♦", 1);colorDic.put("♣", 2);colorDic.put("❤", 3);colorDic.put("♠", 4);colorDic.put("小",5 );colorDic.put("大",6 );numberDic.put("3", 3);numberDic.put("4", 4);numberDic.put("5", 5);numberDic.put("6", 6);numberDic.put("7", 7);numberDic.put("8", 8);numberDic.put("9", 9);numberDic.put("10", 10);numberDic.put("J", 11);numberDic.put("Q", 12);numberDic.put("K", 13);numberDic.put("A", 14);numberDic.put("2", 15);numberDic.put("王", 16);}public String getColor() {return color;}public void setColor(String color) {this.color = color;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}public Poker(String color, String number) {super();this.color = color;this.number = number;}public Poker() {super();}@Overridepublic String toString() {return this.color +" "+ this.number;}@Overridepublic int compareTo(Poker o) {String color = o.getColor();String number = o.getNumber();if (numberDic.get(number) != numberDic.get(this.number)) {/*System.out.println("-----------");System.out.println(number);System.out.println(numberDic.get(number));System.out.println(this.number);System.out.println(numberDic.get(this.number));System.out.println("+++++++++++");*/return numberDic.get(number)-numberDic.get(this.number) ;}return colorDic.get(color) - colorDic.get(this.color);}}

运行如下图:

Java小程序之斗地主相关推荐

  1. java 获取文件所在的文件夹_带你0基础编写一个Java小程序,领略Java程序从编写到编译再到运行的全流程...

    在学习Java之前我们需要先认识下什么是计算机语言?计算机语言又有哪些分类?在了解这些后对我们理解学习帮助是很大的. 要知道计算机语言是人与计算机之间进行信息交流沟通的一种特殊语言,又分为机械语言.汇 ...

  2. java小程序之学生信息_java小程序之学生信息录入界面

    小程序我的项目下载链接:点击打开链接 因为这学期比赛太多,蓝桥杯,团体程序设计大赛,ACM省赛等原因基本这学期的课程都没上,比赛完后开始去上课,java老师让用java写一个学生信息录入界面,把界面中 ...

  3. 【开发日常】【Java】Java小程序汽车租赁

    <Java小程序--汽车租赁> 1.描述:刚学Java写的小程序,用到类的继承,多态,abstract抽象方法. 2.工具:eclipse.exe 3.功能:选择子类(轿车 / 客车) 选 ...

  4. Wifi热点java_用笔记本电脑开启热点Java小程序

    用笔记本电脑开启热点Java小程序是一条命令设置笔记本成无线热点, 制作"开启无线热点工具,这个小工具实际上是用java来执行cmd命令来完成操作,当然也可以反射jar里边的字节码文件. 使 ...

  5. 简单Java小程序----有界面ATM机

    继<简单Java小程序---无界面ATM机>以后,尝试对有界面ATM机改写,对面向对象的了解又深了一层! 桌面的创建过程       由于使用的NetBean软件没有提供专用的控件拖拽使用 ...

  6. java小程序_Java小程序

    java小程序 An applet is a special kind of Java program that runs in a Java enabled browser. This is the ...

  7. 3.每天一个java小程序之累加累乘

    3.每天一个java小程序之累加累乘 java小练习之数的累加累乘,在于锻炼数学计算思维. 每天一个小程序,每天进步一点点. 代码如下: package com.zou; import java.ut ...

  8. 基于Bluemix快速构建部署一款Java小程序——微博影响力分析器

    一.前言 近年来IT界风云际会,各种新概念如大数据.云平台.虚拟化等,如雨后春笋般层出不穷.而云平台,可以说是近些年来引领时代新潮的边缘概念之一,各大厂商竞相推出各种云产品,抢占云市场高地.近期,IT ...

  9. dw网页插入java小程序_DW网页设计100例35:构建Java插入模块

    Java 是一种程序设计语言, Java applet ( Java 小程序)是在 Java 的基础上演变而成的.能够嵌入在网页中的.可以执行一定小任务的应用程序. 20060407140110aa1 ...

最新文章

  1. C语言merge sort归并排序算法(附完整源码)
  2. MySQL 的各个json 函数说明
  3. IFIX上位机网络测试画面
  4. 国内现在web前端高手薪资都拿多少?
  5. Filter过滤器的生命周期
  6. SlideSwitch仿iphone滑动开关组件,仿百度魔图滑动开关组件Android
  7. iOS设计模式之备忘录模式
  8. FISCO BCOS 同态加密 实例
  9. css 的z-index研究
  10. Vue教程20:Vuex入门
  11. 资料分析——基础知识
  12. 必须安装三星系列android系统智能手机usb驱动程序,三星N9109W Android 5.0 (GALAXY Note 4 电信4G)usb驱动下载安装教程...
  13. matlab 安装coder工具包,matlab coder 工具箱使用教程
  14. cs5计算机丢失msvcp71,win7系统msvcp71.dll丢失怎么修复_win7计算机丢失msvcp120dll修复方法-win7之家...
  15. PSpice for TI和TINA-TI的区别
  16. 计算机能安装几个硬盘,一台电脑最多能接多少个硬盘?
  17. XCode+gtest快速搭建接口测试工程
  18. 自动提取全部EXCEL sheet 名称
  19. 什么原因让你对程序员失去了往日的热情?
  20. 十个高质量自学网站,让你的技术突飞猛进

热门文章

  1. 《逃离100层》攻略13、19关
  2. Java实现斐波那契数列与黄金分割比精确位数问题
  3. CSS3多重背景结合动画打造会飘动的热气球
  4. 用 AI 做了一个体感游戏!真人拳皇搞起!
  5. 沙滘小学 计算机老师,面向全镇,电脑摇号!乐从第一实验学校初一招生300人...
  6. Android 绘制原理
  7. 股票程序化交易软件好用吗?
  8. jq中的contains方法
  9. asp_php_flash_java,Flash 和 ASP / PHP 以及 Javascript 的交互-ASP教程,ASP应用
  10. 怎么样创作鼠标指针?