概述
/**
* Player.java
*
*/
package com.tarena.day10.card;
import java.util.Arrays;
public class Player {
private int id;
private String name;
private Card[] cards={};
public Player() {
}
public Player(int id, String name) {
this.id = id;
this.name = name;
}
public void add(Card card){
this.cards = Arrays.copyOf(cards, cards.length+1);
cards[cards.length-1] = card;
}
public Card[] getCards() {
return cards;
}
public void setCards(Card[] cards) {
this.cards = cards;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return id+" "+ name + Arrays.toString(cards);
}
}
package com.tarena.day10.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; //王
public final 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代表梅花, 2代表红桃, 3代表黑桃,4:王*/
private int suit;
/** 点数 规定: 0代表3, 1代表4, 2代表5,... */
private int rank;
public Card() {
}
public Card(int suit, int rank){
//this.rank = rank;
//this.suit = suit;
setRank(rank);
setSuit(suit);
}
public int getSuit(){
return suit;
}
public void setSuit(int suit){
if(suit<DIAMOND || suit>JOKER)
throw new RuntimeException("花色超过范围!");
this.suit = suit;
}
public int getRank(){
return rank;
}
public void setRank(int rank){
if(rank<THREE || rank>COLOR){
throw new RuntimeException("点数超过范围!");
}
this.rank = rank;
}
private static final String[] RANK_NAMES =
{"3","4","5","6","7","8","9","10","J","Q","K",
"A","2","小王","大王"};
private static final String[] SUIT_NAMES =
{"方块","梅花","红桃","黑桃",""};
//覆盖Object 类的toStirng() 方法. 实现对象的文本描述
public String toString(){
return SUIT_NAMES[suit]+RANK_NAMES[rank];
}
public boolean equals(Object obj) {
if(obj==null){
return false;
}
if(this==obj){
return true;
}
if(obj instanceof Card){
Card other = (Card)obj;
return this.rank == other.rank &&
this.suit == other.suit;
}
return false;
}
public int hashCode() {
//return suit*100+rank;
//suit=3= 00000000 00000000 00000000 00000011
//rank=10=00000000 00000000 00000000 00000011
//suit<<16=00000000 00000011 00000000 00000000
// 00000000 00000011 00000000 00000011
return (suit<<16)+rank;//(x<<16)+y
}
}
package com.tarena.day10.card;
/**
* CardDemo.java
* 洗牌发牌
/
import java.util.Arrays;
import java.util.Random;
public class CardDemo {
public static void main(String[] args) {
//Card card = new Card(3,0);
//Card c = new Card(Card.SPADE, Card.THREE);
Card[] cards = new Card[54];
int i=0;
for(int rank=Card.THREE; rank<=Card.DEUCE; rank++){
cards[i++]=new Card(Card.DIAMOND, rank);
cards[i++]=new Card(Card.HEART, rank);
cards[i++]=new Card(Card.CLUB, rank);
cards[i++]=new Card(Card.SPADE, rank);
}
cards[i++]=new Card(Card.JOKER, Card.BLACK);
cards[i++]=new Card(Card.JOKER, Card.COLOR);
System.out.println(Arrays.toString(cards));
//洗牌(打乱算法) i 代表最后一张的位置, j代表前面某张的位置
Random random = new Random();
for(i=cards.length-1; i>0; i--){
int j = random.nextInt(i);
Card t = cards[i];
cards[i] = cards[j];
cards[j] = t;
}
System.out.println(Arrays.toString(cards));
//发牌
Player[] players = new Player[3];
players[0] = new Player(1, "姜文");
players[1] = new Player(2, "葛大爷");
players[2] = new Player(3, "刘嘉玲");
int index=0;
for(i=0; i<cards.length; i++){
// Card card = cards[i];
// Player someone = players[index++%players.length];
// someone.add(card);
players[index++%players.length].add(cards[i]);
}
System.out.println(players[0].toString());
System.out.println(players[1]);
System.out.println(players[2]);
}
}
最后
以上就是冷傲小懒虫为你收集整理的达内刘苍松老师的斗地主洗牌发牌算法 - (仅存回忆一点)的全部内容,希望文章能够帮你解决达内刘苍松老师的斗地主洗牌发牌算法 - (仅存回忆一点)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复