最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

  • Java Mybatis中的 ${ } 和 #{ }的區(qū)別使用詳解

    Java Mybatis中的 ${ } 和 #{ }的區(qū)別使用詳解

    這篇文章主要介紹了Mybatis中的 ${ } 和 #{ }的區(qū)別使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Springboot項(xiàng)目如何兼容老的Spring項(xiàng)目問(wèn)題

    Springboot項(xiàng)目如何兼容老的Spring項(xiàng)目問(wèn)題

    這篇文章主要介紹了Springboot項(xiàng)目如何兼容老的Spring項(xiàng)目問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 使用SpringBoot整合Jpa的過(guò)程詳解

    使用SpringBoot整合Jpa的過(guò)程詳解

    SpringBoot是一種快速開(kāi)發(fā)框架,它簡(jiǎn)化了Java應(yīng)用程序的開(kāi)發(fā)過(guò)程,而Jpa是Java持久化規(guī)范的一種實(shí)現(xiàn),將SpringBoot與Jpa整合可以更加方便地進(jìn)行數(shù)據(jù)庫(kù)操作,提高開(kāi)發(fā)效率,本文將介紹如何使用Spring Boot整合Jpa,幫助讀者快速上手并應(yīng)用于實(shí)際項(xiàng)目中
    2023-12-12
  • springboot接口參數(shù)為L(zhǎng)ist的問(wèn)題

    springboot接口參數(shù)為L(zhǎng)ist的問(wèn)題

    這篇文章主要介紹了springboot接口參數(shù)為L(zhǎng)ist的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • JVM的類加載過(guò)程詳細(xì)說(shuō)明

    JVM的類加載過(guò)程詳細(xì)說(shuō)明

    近來(lái)讀了《深入理解JVM虛擬機(jī)》的部分內(nèi)容,對(duì)JVM也慢慢有個(gè)整體的認(rèn)識(shí),今天就來(lái)分享一下我對(duì)JVM類加載過(guò)程的學(xué)習(xí)和理解,需要的朋友可以參考下
    2021-06-06
  • SpringBoot中的五種對(duì)靜態(tài)資源的映射規(guī)則的實(shí)現(xiàn)

    SpringBoot中的五種對(duì)靜態(tài)資源的映射規(guī)則的實(shí)現(xiàn)

    這篇文章主要介紹了SpringBoot中的五種對(duì)靜態(tài)資源的映射規(guī)則的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • kafka安裝部署超詳細(xì)步驟

    kafka安裝部署超詳細(xì)步驟

    這篇文章主要介紹了kafka安裝部署的詳細(xì)步驟,主要應(yīng)用場(chǎng)景是:日志收集系統(tǒng)和消息系統(tǒng),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • 詳解Java使用JMH進(jìn)行基準(zhǔn)性能測(cè)試

    詳解Java使用JMH進(jìn)行基準(zhǔn)性能測(cè)試

    本文主要介紹了Java使用JMH進(jìn)行基準(zhǔn)性能測(cè)試,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 淺析Java ClassName.this中類名.this關(guān)鍵字的理解

    淺析Java ClassName.this中類名.this關(guān)鍵字的理解

    Java ClassName.this中類名.this關(guān)鍵字 的理解大家都了解多少,有不太了解的朋友可以參考下本文一起學(xué)習(xí)學(xué)習(xí)
    2016-05-05
  • Java實(shí)現(xiàn)超簡(jiǎn)單抖音去水印的示例詳解

    Java實(shí)現(xiàn)超簡(jiǎn)單抖音去水印的示例詳解

    抖音去水印方法很簡(jiǎn)單,以前一直沒(méi)有去研究,以為搞個(gè)去水印還要用到算法去除,直到動(dòng)手的時(shí)候才發(fā)現(xiàn)這么簡(jiǎn)單,不用編程基礎(chǔ)都能做。所以本文將介紹一個(gè)超簡(jiǎn)單抖音視頻去水印方法,需要的可以參考一下
    2022-03-03

最新評(píng)論

同心县| 保定市| 大同县| 鄂尔多斯市| 道孚县| 太原市| 松潘县| 灌云县| 苗栗市| 东安县| 军事| 呈贡县| 巴塘县| 新民市| 四会市| 巨鹿县| 宁都县| 志丹县| 陵水| 武川县| 胶州市| 六枝特区| 大足县| 刚察县| 永和县| 绥芬河市| 浙江省| 新建县| 安泽县| 民丰县| 宝坻区| 玛沁县| 象州县| 吴旗县| 广州市| 东辽县| 甘孜| 江门市| 凤台县| 额济纳旗| 阿城市|