随机发牌
运用的类和方法
运用的List集合
Random 随机生成
思维过程
先创造一个Card类将牌id 片面值 点数用getset方法生成
第二个创一个花色的类同上
第三个创一个玩家类玩家id 昵称 判断是够否是地主 和手中所有牌创建一个集合
测试类将点数和花色边成数组,之后创建一个牌点数加上花色将创建的牌加入集合再将大小王放进去,添加成员将id姓名赋值,将玩家添加集合,随机其中一个是地主,之后将遍历的所有牌发到三个玩家,将剩余的牌给地主。
代码
package exp;
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 NormalCar(id, names[i], i + 1 , flowers[j]);
//将创建的牌加入集合
allCards.add(c);
}
}
allCards.add(new Card(++id, "小王",666));
allCards.add(new Card(++id, "大王",888));
System.out.println(allCards.size());
allCards.forEach(c->System.out.println(c));
}
/**
* 添加成员
*/
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();
}
/**
* 随机地主
* @param args
*/
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();
}
}