Java入門項目
- 鬥地主發牌系統
-
- 具體實作功能
- 項目實施
-
- 基本的類
- 成果展示
鬥地主發牌系統
簡介:按照現實的鬥地主玩法随機對玩家進行發牌
具體實作功能
- 完成随機位址
- 完成循環随機發牌
- 對玩家手中牌進行排序
項目實施
- 采用動态數組實作對 玩家和 撲克牌進行 資訊存儲
- 主要用到的是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 ^!
成果展示
在這裡插入圖檔描述
