斗地主发牌系统
简介:按照现实的斗地主玩法随机对玩家进行发牌
具体实现功能
- 完成随机地址
- 完成循环随机发牌
- 对玩家手中牌进行排序
项目实施
- 采用动态数组实现对 玩家和 扑克牌进行 信息存储
- 主要用到的是Random 产生随机数 来完成随机地主随机发牌
基本的类
- 扑克类 Poker
- 玩家类 Player
- 游戏管理类 PokerGame
扑克类 Poker
package com.softeem.lesson14.exp02;
public class Poker {
private String flower;
private String pointer;
private int sort;
public Poker() {
// TODO Auto-generated constructor stub
}
public Poker(String flower, String pointer, int sort) {
super();
this.flower = flower;
this.pointer = pointer;
this.sort = sort;
}
public String getFlower() {
return flower;
}
public void setFlower(String flower) {
this.flower = flower;
}
public String getPointer() {
return pointer;
}
public void setPointer(String pointer) {
this.pointer = pointer;
}
public int getSort() {
return sort;
}
public void setSort(int sort) {
this.sort = sort;
}
@Override
public String toString() {
return flower+"-"+pointer;
}
}
玩家类 Player
package com.softeem.lesson14.exp02;
import java.util.ArrayList;
public class Player {
private int id;
private String name;
private ArrayList<Poker> pokers = new ArrayList<>();
private boolean boss;//是否地主
public Player() {
// TODO Auto-generated constructor stub
}
public Player(int id, String name) {
super();
this.id = id;
this.name = name;
}
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 ArrayList<Poker> getPokers() {
return pokers;
}
public void setPokers(ArrayList<Poker> pokers) {
this.pokers = pokers;
}
public boolean isBoss() {
return boss;
}
public void setBoss(boolean boss) {
this.boss = boss;
}
}
游戏管理类 PokerGame_
package com.softeem.lesson14.exp02;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
public class PokerGame {
static List<Player> players;
static ArrayList<Poker> list = new ArrayList<>();
static String[] flowers = {"方块","梅花","黑桃","红心"};
static String[] pointers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
int bossIndex; //地主索引
static{
//初始化扑克
for (int i = 0; i < flowers.length; i++) {
for (int j = 0; j < pointers.length; j++) {
//生成一张扑克对象
Poker p = new Poker(flowers[i], pointers[j], j);
list.add(p);
}
}
//单独将大小王加入集合
list.add(new Poker("小", "王", 13));
list.add(new Poker("大", "王", 14));
//初始化玩家
players = Arrays.asList(
new Player(1, "刘备"),
new Player(2, "关羽"),
new Player(3, "张飞"));
}
/**随机地主*/
public void pushBoss(){
Random r = new Random();
bossIndex = r.nextInt(players.size());
//设置被随机到的玩家为地主
players.get(bossIndex).setBoss(true);
}
/**发牌*/
public void pushPoker(){
int key =0;
Random r = new Random();
for(int n = 0;n<51;n++){
key++;
int index = r.nextInt(list.size());
switch (key) {
case 1:
players.get(0).getPokers().add(list.get(index));
break;
case 2:
players.get(1).getPokers().add(list.get(index));
break;
case 3:
players.get(2).getPokers().add(list.get(index));
break;
}
list.remove(index);
if (key % 3 ==0) {
key = 0;
}
}
//将最后剩余的牌(3张)全部给地主
players.get(bossIndex).getPokers().addAll(list);
for (int i = 0; i < 3; i++) {
Collections.sort(players.get(i).getPokers(), new Comparator<Poker>() {
@Override
public int compare(Poker a,Poker b) {
// TODO Auto-generated method stub
return a.getSort() - b.getSort();
}
});
}
}
public void xipai(){
Collections.shuffle(list);
}
public void start(){
//随机地主
pushBoss();
//洗牌
xipai();
//发牌
pushPoker();
for(Player p:players){
System.out.println("玩家姓名"+p.getName()+p.getPokers());
}
}
public static void main(String[] args) {
new PokerGame().start();
}
}
在这里我们的斗地主发牌系统已经写完了~~!
来看看成果吧 ^ v ^!
成果展示
在这里插入图片描述