模拟扑克牌类,生成一副扑克牌,打乱顺序,发牌
来源:互联网 发布:underscore源码解析 编辑:程序博客网 时间:2024/04/29 03:57
定义一个Card类,用于存储构建扑克牌的基本元素
public class Card {
public static final int DIAMOND = 0; // 方块(钻石)
public final static int CLUB = 1; // 梅花
public static final int HEART = 2; // 红桃(红心)
public static final int SPADE = 3; // 黑桃(花锄)
public static final int JOKER = 4; // 王
final public static int THREE = 0;
public final static int FOUR = 1;
public final static int FIVE = 2;
public final static int SIX = 3;
public final static int SEVEN = 4;
public final static int EIGHT = 5;
public final static int NINE = 6;
public final static int TEN = 7;
public final static int JACK = 8;// J
public final static int QUEEN = 9;// Q
public final static int KING = 10;// K
public final static int ACE = 11;// A
public final static int DEUCE = 12; // 2
public final static int BLACK = 13; // 小王
public final static int COLOR = 14;// 大王
/** 花色, 0代表方块, 1代表梅花 */
private int suit;
/** 点数, 0代表3, 1代表4, 2代表5 ... */
private int rank;
public Card() {
}
public Card(int suit, int rank) {
setRank(rank);
setSuit(suit);
}
public int getRank() {
return rank;
}
public void setRank(int rank) {
this.rank = rank;
}
public int getSuit() {
return suit;
}
public void setSuit(int suit) {
this.suit = suit;
}
private static final String[] SUIT_NAMES = { "方块", "梅花", "红桃", "黑桃", "" };
private static final String[] RANK_NAMES = { "3", "4", "5", "6", "7", "8",
"9", "10", "J", "Q", "K", "A", "2", "小王", "大王" };
/** 覆盖Object 类的toString() */
public String toString() {
return SUIT_NAMES[this.suit] + RANK_NAMES[this.rank];
}
// public static void main(String[] args) {
// System.out.println(new Card(0, 0).toString());
// }
}
定义玩家类Player
import java.util.Arrays;
public class Player {
private String name;
Card[] cards = {};
public Player() {
super();
// TODO Auto-generated constructor stub
}
public Player(String name) {
super();
this.name = name;
}
/*
* 发牌实现方法
*/
public void add(Card card){
cards = Arrays.copyOf(cards, cards.length+1);
cards[cards.length-1] = card;
}
@Override
public String toString(){
return name+"->"+Arrays.toString(cards);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
构造一个测试类
import java.util.Arrays;
import java.util.Random;
public class TestCard {
public static void main(String[] args) {
//生成一副扑克牌
Card[] cards = new Card[54];
int index = 0;
for (int i = Card.THREE; i <= Card.DEUCE; i++) {//等同于 for(int i = 0; i<=12;i++)
cards[index++] = new Card(index%4,i);
cards[index++] = new Card(index%4,i);
cards[index++] = new Card(index%4,i);
cards[index++] = new Card(index%4,i);
}
cards[index++] = new Card(Card.JOKER,Card.BLACK);//小王
cards[index++] = new Card(Card.JOKER,Card.COLOR);//大王
System.out.println(Arrays.toString(cards));
/*
* 打乱次序
*/
Random scn = new Random();
for (int i = 0; i < cards.length-1; i++) {
int rNum = scn.nextInt(cards.length-1-i);
Card card = cards[rNum];
cards[rNum] = cards[cards.length-1-i];
cards[cards.length-1-i] = card;
}
System.out.println(Arrays.toString(cards));
/*
* 发牌
*定义三个玩家
*/
Player[] players ={new Player("胡歌"),
new Player("霍建华"),
new Player("王凯"),
};
for (int i = 0; i < cards.length-3; i++) {//留三张底牌
players[i%3].add(cards[i]);//给每个玩家发牌
}
System.out.println(players[0]);//输出每个玩家手中的扑克牌
System.out.println(players[1]);
System.out.println(players[2]);
}
}
- 模拟扑克牌类,生成一副扑克牌,打乱顺序,发牌
- 洗牌、发牌算法 (打乱扑克牌顺序)
- 洗牌、发牌算法 (打乱扑克牌顺序)
- 一副扑克牌的随机发牌
- 利用LinkList生成一副扑克牌
- 模拟扑克牌的洗牌发牌
- 扑克牌与一副扑克牌
- 扑克牌发牌
- 显示一副扑克牌
- 扑克牌排序打乱Collections
- 扑克牌发牌器
- Java 扑克牌发牌
- cocos2dx《单机斗地主》源码解剖之二 把一副扑克牌打乱(洗牌)
- 扑克牌顺序
- 扑克牌顺序
- 扑克牌顺序
- 用C#模拟实现扑克牌发牌、排序程序。
- 用C#模拟实现扑克牌发牌、排序程序…
- jquery的append和after方法
- 在eclipse使用中adb报错出现cannot parse version string:kg01的解决方法
- [shell] file
- MongoDB-JAVA-Driver 3.2版本常用代码全整理(3) - 聚合
- @RequestMapping 用法详解之地址映射(转)
- 模拟扑克牌类,生成一副扑克牌,打乱顺序,发牌
- test
- Android 自定义组合组件的总结
- 策略模式
- 关于浮点型数的保存方式!!!
- Leetcode Everyday: 226. Invert Binary Tree
- @RequestBody, @ResponseBody 注解详解(转)
- 动态链接库 DLL
- abs数学函数应用实例