溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用java編寫一個斗地主小游戲

發(fā)布時間:2020-11-24 14:08:06 來源:億速云 閱讀:282 作者:Leah 欄目:開發(fā)技術

今天就跟大家聊聊有關使用java編寫一個斗地主小游戲,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據(jù)這篇文章可以有所收獲。

實現(xiàn)斗地主功能

共54張牌,地主比其他兩名玩家多三張牌。

有一個card牌類和player玩家類,還有一個發(fā)牌類用于實現(xiàn)發(fā)牌的方法。
為了模擬每個玩家的牌都是隨機的,我是這樣想的:
1)初始化方法:用于將54張牌存到一個數(shù)組里,每張牌都一個唯一的序號。
2) 利用隨機數(shù),將每個序號打亂存到一個新數(shù)組里。
3)再根據(jù)序號取到初始化牌庫數(shù)組內的牌,存到每個玩家的牌集合內。
附一個在老師指導下寫的:斗地主發(fā)牌功能,自己還是有些沒考慮周到。/_ \

代碼如下:

牌類

public class Card {

 /**花色*/
 private String HuaSe;
 /**點數(shù)*/
 private String DianShu;
 /**序號*/
 private int XuHao;

 
 public Card(String huaSe, String dianShu, int xuHao) {
 super();
 HuaSe = huaSe;
 DianShu = dianShu;
 XuHao = xuHao;
 }

 public String getHuaSe() {
 return HuaSe;
 }

 public void setHuaSe(String huaSe) {
 HuaSe = huaSe;
 }

 public String getDianShu() {
 return DianShu;
 }

 public void setDianShu(String dianShu) {
 DianShu = dianShu;
 }

 public int getXuHao() {
 return XuHao;
 }

 public void setXuHao(int xuHao) {
 XuHao = xuHao;
 }

 @Override
 public String toString() {
 return "[" + HuaSe + DianShu + "]";
 }

}

玩家類

public class Player {

 /**玩家id*/
 private int id;
 /**玩家姓名*/
 private String name;
 /**是否是地主*/
 private boolean dizhu;
 /**牌的集合*/
 private ArrayList<Card> list;

 public Player(int id, String name, boolean dizhu) {
 super();
 this.id = id;
 this.name = name;
 this.dizhu = dizhu;
 }

 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 boolean isDizhu() {
 return dizhu;
 }

 public void setDizhu(boolean dizhu) {
 this.dizhu = dizhu;
 }

 public ArrayList<Card> getList() {
 return list;
 }

 public void setList(ArrayList<Card> list) {
 this.list = list;
 }

 @Override
 public String toString() {
 return name + ", 牌:" + list ;
 }

}

發(fā)牌類: 這里還有許多缺陷 :例如地主是需要自己指定而不是隨機的,在給每個人發(fā)牌時,可以利用remove()方法將已經(jīng)發(fā)過的牌移除,這樣可以節(jié)省很多重復代碼。

public class SendCard {

 static ArrayList<Card> arrayList = new ArrayList<Card>();
 Random r = new Random();
 
 /**
 * 初始話牌庫
 */
 public void init() {
 for (int i = 1; i < 14; i++) {
 arrayList.add(new Card("梅花", Integer.toString(i), i));
 arrayList.add(new Card("方塊",Integer.toString(i),13 + i));
 arrayList.add(new Card("紅心", Integer.toString(i), 26 + i));
 arrayList.add(new Card("黑桃", Integer.toString(i), 39 + i));
 }
 arrayList.add(new Card("","大王",53));
 arrayList.add(new Card("", "小王", 54));
 }

 /**
 * 發(fā)牌(默認p3為地主)
 * @param p1
 * @param p2
 * @param p3
 */
 public void send(Player p1,Player p2,Player p3) {
 ArrayList<Integer> intList = new ArrayList<Integer>();
 intList = fenpei(intList);

 //給p1發(fā)牌
 ArrayList<Card> clist = new ArrayList<Card>();
 for (int i = 0; i < 17; i++) {
 clist.add(arrayList.get(intList.get(i)));
 }
 p1.setList(clist);
 
 //給p2發(fā)牌
 clist = new ArrayList<Card>();
 for (int i = 17; i < 34; i++) {
 clist.add(arrayList.get(intList.get(i)));
 }
 p2.setList(clist);
 
 //給p3發(fā)牌
 clist = new ArrayList<Card>();
 for (int i = 34; i < 54; i++) {
 clist.add(arrayList.get(intList.get(i)));
 }
 p3.setList(clist);
 }
 
 /**
 * 將初始化牌庫打亂后存入新數(shù)組
 * @param list
 * @return
 */
 public ArrayList<Integer> fenpei(ArrayList<Integer> list) {
 int index = 0;
 while (true) {
 int i = r.nextInt(54);
 for (Integer integer : list) {
 if (integer == i) {
 index = 1;
 break;
 }
 index = 0;
 }
 if(index == 0)
 list.add(i);
 if(list.size() == 54)
 break;
 }
 return list;
 }
}

看完上述內容,你們對使用java編寫一個斗地主小游戲有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業(yè)資訊頻道,感謝大家的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內容。

AI