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

用java實(shí)現(xiàn)斗地主發(fā)牌過程

 更新時(shí)間:2020年11月23日 11:01:35   作者:weixin_52132674  
這篇文章主要為大家詳細(xì)介紹了用java實(shí)現(xiàn)斗地主發(fā)牌過程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

一、牌類實(shí)現(xiàn)

定義牌的相關(guān)屬性,點(diǎn)數(shù)、花色、大小

package com.softeem.lesson18.doudizhu;

import java.util.Objects;

public class Card {
 //牌面值
 private String name;
 //花色
 private String flower;
 //點(diǎn)數(shù)
 private int num;
 
 public Card() {
 // TODO Auto-generated constructor stub
 }

 public Card(String name, String flower, int num) {
 super();
 this.name = name;
 this.flower = flower;
 this.num = num;
 }
 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }

 public String getFlower() {
 return flower;
 }

 public void setFlower(String flower) {
 this.flower = flower;
 }

 public int getNum() {
 return num;
 }

 public void setNum(int num) {
 this.num = num;
 }

 @Override
 public String toString() {
 if(Objects.nonNull(flower)) {
 return name+"-"+num+"-"+flower;
 }
 return name+"-"+num;
 } 
 
}

二、玩家類

玩家類中定義了萬(wàn)家的相關(guān)屬性,名字,ID,還定義了一個(gè)牌類數(shù)組,將每位玩家的牌加入到數(shù)組中。

package com.softeem.lesson18.doudizhu;

import java.util.ArrayList;

public class Player {
 private int id;
 private String name;
 private boolean boss;
 private ArrayList<Card> cards = new ArrayList<>();
 
 public Player() {
 }

 public Player(int id, String name, boolean boss, ArrayList<Card> cards) {
 super();
 this.id = id;
 this.name = name;
 this.boss = boss;
 this.cards = cards;
 }

 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 isBoss() {
 return boss;
 }

 public void setBoss(boolean boss) {
 this.boss = boss;
 }

 public ArrayList<Card> getCards() {
 return cards;
 }

 public void setCards(ArrayList<Card> cards) {
 this.cards = cards;
 }

 @Override
 public String toString() {
 return name+(boss?"(地主)" : "") + cards;
 } 
}

三、功能類

功能類中實(shí)現(xiàn)了牌的分發(fā),每人17張牌,然后地主多三張牌的實(shí)現(xiàn),以及對(duì)玩家進(jìn)行隨機(jī)分配地主等功能。

package com.softeem.lesson18.doudizhu;

import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;

public class GameManage {
 
 private static ArrayList<Card> all = new ArrayList<>();
 private static String [] names = {"3","4","5","6","7","8","9","10","J","Q","K","A","2","Queen","King"};
 private static String [] flowers = {"紅桃","黑桃","方塊","梅花"};
 private ArrayList<Player> players = new ArrayList<Player>();
 private static Random randomGen = new Random();
 
 static {
 //初始化所有牌
 int i = 0;
 for(; i < names.length - 2;i++) {
 for(int j = 0;j < flowers.length;j++) {
 Card c = new Card(names[i],flowers[j],i);
 all.add(c);
 }
 }
 //加入大小王
 all.add(new Card(names[names.length - 2],null,i++));
 all.add(new Card(names[names.length - 1],null,i++)); 
 }
 public void addPlayer() {
 @SuppressWarnings("resource")
 Scanner sc = new Scanner(System.in);
 System.out.println("請(qǐng)輸入第一個(gè)玩家的名字:");
 String name1 = sc.nextLine();
 System.out.println("請(qǐng)輸入第二個(gè)玩家的名字:");
 String name2 = sc.nextLine();
 System.out.println("請(qǐng)輸入第三個(gè)玩家的名字:");
 String name3 = sc.nextLine();
 
 Player p1 = new Player();
 p1.setId(1);
 p1.setName(name1);
 
 Player p2 = new Player();
 p2.setId(2);
 p2.setName(name2);
 
 Player p3 = new Player();
 p3.setId(3);
 p3.setName(name3);
 
 players.add(p1);
 players.add(p2);
 players.add(p3);
 }
 
 public void randomBoss() {
 //添加玩家
 addPlayer();
 //隨機(jī)地址索引
 int i = randomGen.nextInt(players.size());
 players.get(i).setBoss(true);
 }
 
 public void sendCard() {
 randomBoss();
 //對(duì)玩家遍歷
 for(Player p : players) {
 //先為每一位玩家隨機(jī)發(fā)17張牌
 for(int i = 0;i <17;i++) {
 int cardIndex = randomGen.nextInt(all.size());
 Card card = all.get(cardIndex);
 //將牌加入到玩家的牌容器中
 p.getCards().add(card);
 //從牌組中移除已經(jīng)發(fā)出去的牌
 all.remove(card);
 }
 }
 //最后三張牌給地主
 for(Player p : players) {
 if(p.isBoss()) {
 p.getCards().addAll(all);
 }
 }
 for(Player p : players) {
 System.out.println(p);
 }
 } 
 public static void main(String[] args) {
 new GameManage().sendCard();
 }
}

更多有趣的經(jīng)典小游戲?qū)崿F(xiàn)專題,分享給大家:

C++經(jīng)典小游戲匯總

python經(jīng)典小游戲匯總

python俄羅斯方塊游戲集合

JavaScript經(jīng)典游戲 玩不停

java經(jīng)典小游戲匯總

javascript經(jīng)典小游戲匯總

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

相關(guān)文章

  • java開發(fā)RocketMQ之NameServer路由管理源碼分析

    java開發(fā)RocketMQ之NameServer路由管理源碼分析

    這篇文章主要為大家介紹了java開發(fā)中RocketMQ之NameServer路由管理源碼分析詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2021-11-11
  • Mybatis Plus select 實(shí)現(xiàn)只查詢部分字段

    Mybatis Plus select 實(shí)現(xiàn)只查詢部分字段

    這篇文章主要介紹了Mybatis Plus select 實(shí)現(xiàn)只查詢部分字段的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java連接Linux服務(wù)器過程分析(附代碼)

    Java連接Linux服務(wù)器過程分析(附代碼)

    這篇文章主要介紹了Java連接Linux服務(wù)器過程分析(附代碼),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • SpringBoot調(diào)用Poi-tl實(shí)現(xiàn)渲染數(shù)據(jù)并生成Word文檔

    SpringBoot調(diào)用Poi-tl實(shí)現(xiàn)渲染數(shù)據(jù)并生成Word文檔

    這篇文章主要為大家詳細(xì)介紹了SpringBoot如何調(diào)用Poi-tl實(shí)現(xiàn)渲染數(shù)據(jù)并生成Word文檔,文中的示例代碼講解詳細(xì),有需要的小伙伴可以了解下
    2023-09-09
  • 淺談java字符串比較到底應(yīng)該用==還是equals

    淺談java字符串比較到底應(yīng)該用==還是equals

    這篇文章主要介紹了淺談java字符串比較到底應(yīng)該用==還是equals,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • Java Web開發(fā)中過濾器和監(jiān)聽器使用詳解

    Java Web開發(fā)中過濾器和監(jiān)聽器使用詳解

    這篇文章主要為大家詳細(xì)介紹了Java中的過濾器Filter和監(jiān)聽器Listener的使用以及二者的區(qū)別,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-10-10
  • java實(shí)現(xiàn)可逆加密算法

    java實(shí)現(xiàn)可逆加密算法

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)可逆加密算法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • Spring?Security實(shí)現(xiàn)統(tǒng)一登錄與權(quán)限控制的示例代碼

    Spring?Security實(shí)現(xiàn)統(tǒng)一登錄與權(quán)限控制的示例代碼

    這篇文章主要介紹了Spring?Security實(shí)現(xiàn)統(tǒng)一登錄與權(quán)限控制,本文通過示例代碼重點(diǎn)看一下統(tǒng)一認(rèn)證中心和業(yè)務(wù)網(wǎng)關(guān)的建設(shè),需要的朋友可以參考下
    2022-03-03
  • SpringBoot整合MD5加密完成注冊(cè)和登錄方式

    SpringBoot整合MD5加密完成注冊(cè)和登錄方式

    MD5(MessageDigestAlgorithm5)是一種常見的哈希算法,用于生成固定長(zhǎng)度(128位)的哈希值,主要應(yīng)用于數(shù)據(jù)完整性校驗(yàn)和密碼存儲(chǔ),MD5具有快速計(jì)算、不可逆性和抗碰撞性等特點(diǎn),盡管存在碰撞漏洞,MD5仍廣泛應(yīng)用于文件下載校驗(yàn)和數(shù)字簽名等場(chǎng)景
    2024-10-10
  • java多線程-讀寫鎖原理

    java多線程-讀寫鎖原理

    本文主要介紹java多線程的知識(shí),這里整理了相關(guān)資料及簡(jiǎn)單示例代碼,有興趣的小伙伴可以參考下
    2016-09-09

最新評(píng)論