Java-->发牌流程修改版
--> 这一次要封装得狠一点...
package com.xm.ddz; // 每一张牌的属性
public class Card { private String flowerColor;
private String number;
private int level; public int compareTo(Card c) {
return this.level - c.getLevel();
} public String getFlowerColor() {
return flowerColor;
} public void setFlowerColor(String flowerColor) {
this.flowerColor = flowerColor;
} public String getNumber() {
return number;
} public void setNumber(String number) {
this.number = number;
} public int getLevel() {
return level;
} public void setLevel(int level) {
this.level = level;
} @Override
public String toString() {
return "Card [flowerColor=" + flowerColor + ", number=" + number + ", level=" + level + "]";
} public Card(String flowerColor, String number, int level) {
this.flowerColor = flowerColor;
this.number = number;
this.level = level;
} public Card() {
} }
--> Poker 类照样存储54张牌 --> 但是每张牌都有一个 Level 值来确定它在扑克牌中的顺序
package com.xm.ddz; import java.util.ArrayList;
import java.util.List; public class Poker {
private String[] flowerColors = { "♠", "♥", "♣", "♦" };
private String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2" };
private String[] boss = { "小王", "大王" }; private List<Card> list = new ArrayList<>(); public List<Card> getList() {
return list;
} public Poker() {
for (int i = 0; i < flowerColors.length; i++) {
for (int j = 0; j < numbers.length; j++) {
list.add(new Card(flowerColors[i], numbers[j], j));
}
}
list.add(new Card("黑", boss[0], 99));
list.add(new Card("红", boss[1], 100));
} public void printInfo() {
for (Card c : list) {
System.out.println(c.toString());
}
} }
--> Player 类用来接收发到手上的牌
package com.xm.ddz; import java.util.ArrayList;
import java.util.List; public class Player { private String name;
private List<Card> list = new ArrayList<>(); public Player(String name) {
super();
this.name = name;
} /**
* 玩家 接收 卡片
*
* @param c
*/
public void addCard(Card c) {
list.add(c);
} /**
* 升序排列
*/
public void orderBy() {
for (int i = 0; i < list.size() - 1; i++) {
for (int j = 1; j < list.size() - i; j++) {
if (list.get(j - 1).compareTo(list.get(j)) > 0) {
final Card c = list.get(j);
list.set(j, list.get(j - 1));
list.set(j - 1, c);
}
}
}
} @Override
public String toString() {
orderBy();
StringBuilder sb = new StringBuilder();
sb.append("\n******************" + name + "*********************\n");
for (int i = 0; i < list.size(); i++) {
sb.append(list.get(i).toString());
sb.append("\n");
}
sb.append("***************************************");
return sb.toString();
} }
--> DealPoker 类执行发牌操作
package com.xm.ddz; import java.util.List;
import java.util.Random; public class DealPoker { private Player[] players;
private Poker p; public DealPoker(Player[] players, Poker p) {
this.players = players;
this.p = p;
} /**
* 发牌
*/
public void dispatchCard() {
final List<Card> list = p.getList();
Random r = new Random();
int i = 0;
while (list.size() > 0) {
int index = r.nextInt(list.size());// 随机从0-list.size()(不包含list.size())的Int值
players[i++ % players.length].addCard(list.remove(index));
} for (int j = 0; j < players.length; j++) {
System.out.println(players[j].toString()); } } }
--> Test 类测试
package com.xm.ddz;
public class Test {
public static void main(String[] args) {
Poker poker = new Poker();
Player[] players = { new Player("凤姐"), new Player("春哥"), new Player("老王") };
DealPoker dealPoker = new DealPoker(players, poker);
dealPoker.dispatchCard();
}
}
--> 看起来比上次好多了,不过还是没有实现抢地主啊...
Java-->发牌流程修改版的更多相关文章
- Java-->简单的斗地主发牌流程
package com.dragon.java.hwddz; import java.util.ArrayList; import java.util.HashMap; import java.uti ...
- [C语言]声明解析器cdecl修改版
一.写在前面 K&R曾经在书中承认,"C语言声明的语法有时会带来严重的问题.".由于历史原因(BCPL语言只有唯一一个类型——二进制字),C语言声明的语法在各种合理的组合下 ...
- Java的流程控制和C++的异同
Java的流程控制和C++基本相似 现将不同的地方总结一下,以便快速掌握. Java的特殊流程控制的特殊部分: 1.顺序结构 -- 没有区别 2.分之结构 -- 没有区别 3.循环结构 1> ...
- Medoo个人修改版
Medoo是一款轻量级的php数据库操作类,下面不会介绍Medoo的使用方法,想学习Medoo请前往官网自学:http://medoo.in/ 在接触Medoo之前,一直是用自己写的php数据库操作类 ...
- Android 仿美团网,大众点评购买框悬浮效果之修改版
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17761431),请尊重他人的辛勤劳动成果,谢谢! 我之前写 ...
- 黄聪:WordPress图片插件:Auto Highslide修改版(转)
一直以来很多人都很喜欢我博客使用的图片插件,因为我用的跟原版是有些不同的,效果比原版的要好,他有白色遮罩层,可以直观的知道上下翻图片和幻灯片放映模式.很多人使用原版之后发现我用的更加帅一些,于是很多人 ...
- sqm(sqlmapGUI) pcat修改版
sqlmap是一款开源的注入工具,支持几乎所有的数据库,支持get/post/cookie注入,支持错误回显注入/盲注,还有其他多种注入方法. 支持代理,指纹识别技术判断数据库 .而sqm(sqlma ...
- 转载:Eclipse+Spket插件+ExtJs4修改版提供代码提示功能[图]
转载:Eclipse+Spket插件+ExtJs4修改版提供代码提示功能[图] ExtJs是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架.功能丰富,无人能出其右.无论是界面 ...
- JNI NDK (AndroidStudio+CMake )实现C C++调用Java代码流程
JNI/NDK Java调用C/C++前言 通过第三篇文章讲解在实际的开发过程中Java层调用C/C++层的处理流程.其实我们在很大的业务里也需要C/C+ +层去调用Java层,这两层之间的相互调用 ...
随机推荐
- thinking in java 之Reference类的使用
Reference是java中的特殊引用类.描述的是特殊作用(主要是关于垃圾回收对象)的引用. 它有3个子类: 1.SoftReference; 2.WeakReference 3.PhantomRe ...
- [Js]布局转换
为什么要布局转换? 要这样的效果,单写css,只要给每个li浮动就行,不需要绝对定位.但是比如做一些效果(如鼠标移入图片变大),就需要改变位置了.直接给每个li在css上定好位置不方便,也不知道有几个 ...
- js基础之DOM
一.创建子节点 发帖在顶部显示: var oBtn = document.getElementById('btn1'); var oUl = document.getElementById('ul1' ...
- POJ 2739 Sum of Consecutive Prime Numbers 难度:0
题目链接:http://poj.org/problem?id=2739 #include <cstdio> #include <cstring> using namespace ...
- UVa 10561 - Treblecross
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- 飞天诚信usb-key登录windows+远程桌面
最近在尝试用智能卡做身份验证,以飞天诚信的ePass3000为例. 1.网络环境搭建: 用3台虚机+1台实体机搭一个单独的测试网段:172.16.188.x,如下: 机器名 IP 操作系统 作用 do ...
- bzoj 1185 旋转卡壳 最小矩形覆盖
题目大意 就是求一个最小矩形覆盖,逆时针输出其上面的点 这里可以看出,那个最小的矩形覆盖必然有一条边经过其中凸包上的两个点,另外三条边必然至少经过其中一个点,而这样的每一个点逆时针走一遍都满足单调性 ...
- Altium Designer 2013 13 复制出错的问题
刚换成Altium Designer 2013 13,谁知先碰了钉子,为了赶进度需要复制以前的一个原理图上的部分电路图,一复制尽然报错不能复制,通过百度和向高人求助,总结一下两种方法: 1.在电脑上虚 ...
- 基于反射的通过set方法的依赖注入,可以看成一种设计模式,自己来用
非常好用,在properties文件中配置字符串和类名之间的对应,在程序里读取文件,找到类名,通过反射,达到调用set方法的目的,然后直接将自己的指向其他类的对象的引用赋值,指向实体对象. 比如use ...
- poj3280 区间dp
//Accepted 15880 KB 250 ms #include <cstdio> #include <cstring> #include <iostream> ...