基于java开发一个小程序实现斗地主洗牌发牌功能
开发工具:eclipse
开发环境:jdk1.8
创建Card类
/**
* 牌类
*
* @author Freedom
*
*/
public class Card implements Comparable<Card> {
private int id;
private String name;
private int point;
public Card(int id, String name, int point) {
super();
this.id = id;
this.name = name;
this.point = point;
}
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 int getPoint() {
return point;
}
public void setPoint(int point) {
this.point = point;
}
@Override
public int compareTo(Card c) {
return this.point - c.point;
}
@Override
public String toString() {
return name;
}
}
创建NormalCard类
/**
* 普通牌类(3~2:3,4,5,6,7,8,9,10,J,Q,K,A,2)
*
* @author Freedom
*
*/
public class NormalCard extends Card {
private String flower;
public NormalCard(int id, String name, int point, String flower) {
super(id, name, point);
this.flower = flower;
}
public String getFlower() {
return flower;
}
public void setFlower(String flower) {
this.flower = flower;
}
@Override
public String toString() {
return flower + getName();
}
}
创建Player类
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* 玩家类
*
* @author Freedom
*
*/
public class Player {
/** 玩家id */
private int id;
/** 玩家昵称 */
private String nickname;
/** 是否地主 */
private boolean boss;
/** 玩家手中的所有牌 */
private List<Card> cards = new ArrayList<>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public boolean isBoss() {
return boss;
}
public void setBoss(boolean boss) {
this.boss = boss;
}
public List<Card> getCards() {
return cards;
}
public void setCards(List<Card> cards) {
this.cards = cards;
}
public Player() {
// TODO Auto-generated constructor stub
}
public Player(int id, String nickname, boolean boss, List<Card> cards) {
super();
this.id = id;
this.nickname = nickname;
this.boss = boss;
this.cards = cards;
}
@Override
public String toString() {
// 对牌排序
Collections.sort(cards);
return "玩家:" + nickname + "\t是否为地主:" + boss + ", 牌:" + cards;
}
}
创建PokerGame类
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class PokerGame {
private static String[] names = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2" };
private static String[] flowers = { "♥", "♦", "♣", "♠" };
private static List<Card> allCards;
private static int id = 0;
/** 声明存储玩家的引用 */
private List<Player> players;
private Random r = new Random();
static {
allCards = new ArrayList<Card>();
for (int i = 0; i < names.length; i++) {
for (int j = 0; j < flowers.length; j++) {
id++;
// 创建一张牌
Card c = new NormalCard(id, names[i], i + 1, flowers[j]);
// 将创建的牌加入集合
allCards.add(c);
}
}
allCards.add(new Card(++id, "小王", 666));
allCards.add(new Card(++id, "大王", 888));
}
/**
* 初始化玩家
*/
public void initPlayer() {
players = new ArrayList<Player>();
Player p1 = new Player();
p1.setId(1);
p1.setNickname("艾希");
Player p2 = new Player();
p2.setId(2);
p2.setNickname("盖伦");
Player p3 = new Player();
p3.setId(3);
p3.setNickname("易大师");
// 将玩家加入集合
players.add(p1);
players.add(p2);
players.add(p3);
// 随机地主
randomBoss();
}
/**
* 随机地主
*/
public void randomBoss() {
// 随机地主的索引
int i = r.nextInt(players.size());
// 设置指定索引的玩家为地主
players.get(i).setBoss(true);
}
/**
* 发牌
*/
public void sendCard() {
// 声明临时变量表示该谁抽取了
int pos = 0;
// 遍历所有牌
for (int i = 0; i < allCards.size() - 3; i++) {
// 获取一张牌
Card card = allCards.get(i);
// 获取抽牌的玩家
Player player = players.get(pos);
// 将牌给玩家
player.getCards().add(card);
pos = pos == 0 ? 1 : pos == 1 ? 2 : 0;
}
// 将剩余的牌给地主
for (Player p : players) {
if (p.isBoss()) {
// 获取最后三张牌
List<Card> cards = allCards.subList(allCards.size() - 3, allCards.size());
// 将最后三种牌给地主
p.getCards().addAll(cards);
}
}
}
/**
* 显示所有牌
*/
public void show() {
for (Player p : players) {
System.out.println(p);
}
}
/**
* 洗牌
*/
public void shuffleCard() {
Collections.shuffle(allCards);
Collections.shuffle(allCards);
Collections.shuffle(allCards);
}
public static void main(String[] args) {
PokerGame pg = new PokerGame();
pg.initPlayer();
pg.shuffleCard();
pg.sendCard();
pg.show();
}
}
运行截图