欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java代碼實(shí)現(xiàn)斗地主發(fā)牌功能

 更新時(shí)間:2020年11月24日 10:33:04   作者:MK-T  
這篇文章主要介紹了java實(shí)現(xiàn)斗地主發(fā)牌功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java實(shí)現(xiàn)斗地主發(fā)牌功能的具體代碼,供大家參考,具體內(nèi)容如下

實(shí)現(xiàn)斗地主發(fā)牌功能
共54張牌,地主比其他兩名玩家多三張牌。

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

代碼如下:

牌類

public class Card {

 /**花色*/
 private String HuaSe;
 /**點(diǎn)數(shù)*/
 private String DianShu;
 /**序號(hào)*/
 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ā)牌類: 這里還有許多缺陷 :例如地主是需要自己指定而不是隨機(jī)的,在給每個(gè)人發(fā)牌時(shí),可以利用remove()方法將已經(jīng)發(fā)過(guò)的牌移除,這樣可以節(jié)省很多重復(fù)代碼。

public class SendCard {

 static ArrayList<Card> arrayList = new ArrayList<Card>();
 Random r = new Random();
 
 /**
 * 初始話牌庫(kù)
 */
 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ā)牌(默認(rèn)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);
 }
 
 /**
 * 將初始化牌庫(kù)打亂后存入新數(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;
 }
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • AgileBoot?項(xiàng)目?jī)?nèi)統(tǒng)一的錯(cuò)誤碼設(shè)計(jì)分析

    AgileBoot?項(xiàng)目?jī)?nèi)統(tǒng)一的錯(cuò)誤碼設(shè)計(jì)分析

    這篇文章主要為大家介紹了AgileBoot?項(xiàng)目?jī)?nèi)統(tǒng)一的錯(cuò)誤碼設(shè)計(jì)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Java實(shí)現(xiàn)簡(jiǎn)易畫圖板

    Java實(shí)現(xiàn)簡(jiǎn)易畫圖板

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)易畫圖板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • serialVersionUID作用全面解析

    serialVersionUID作用全面解析

    這篇文章全面解析了java中serialVersionUID的作用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • SpringBoot使用Redis實(shí)現(xiàn)消息隊(duì)列的方法小結(jié)

    SpringBoot使用Redis實(shí)現(xiàn)消息隊(duì)列的方法小結(jié)

    在應(yīng)用中把Redis當(dāng)成消息隊(duì)列來(lái)使用已經(jīng)屢見不鮮了,我想主要原因是當(dāng)代應(yīng)用十有八九都會(huì)用到 Redis,因此不用再引入其他消息隊(duì)列系統(tǒng),而且Redis提供了好幾種實(shí)現(xiàn)消息隊(duì)列的方法,用起來(lái)也簡(jiǎn)單,本文給大家介紹了SpringBoot使用Redis實(shí)現(xiàn)消息隊(duì)列的方法小結(jié)
    2024-04-04
  • Idea插件StopCoding的安裝使用教程

    Idea插件StopCoding的安裝使用教程

    這篇文章主要介紹了Idea插件StopCoding的安裝使用教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • Java使用sleep方法暫停線程Thread

    Java使用sleep方法暫停線程Thread

    這篇文章介紹了Java使用sleep方法暫停線程Thread,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • Java中Boolean與字符串或者數(shù)字1和0的轉(zhuǎn)換實(shí)例

    Java中Boolean與字符串或者數(shù)字1和0的轉(zhuǎn)換實(shí)例

    下面小編就為大家?guī)?lái)一篇Java中Boolean與字符串或者數(shù)字1和0的轉(zhuǎn)換實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • 設(shè)計(jì)模式之原型模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    設(shè)計(jì)模式之原型模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了設(shè)計(jì)模式之原型模式,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08
  • springBoot整合CXF并實(shí)現(xiàn)用戶名密碼校驗(yàn)的方法

    springBoot整合CXF并實(shí)現(xiàn)用戶名密碼校驗(yàn)的方法

    這篇文章主要介紹了springBoot整合CXF并實(shí)現(xiàn)用戶名密碼校驗(yàn)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Java中捕獲線程異常的幾種方式總結(jié)

    Java中捕獲線程異常的幾種方式總結(jié)

    這篇文章主要介紹了Java中捕獲線程異常的幾種方式總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11

最新評(píng)論