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

用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;
 } 
 
}

二、玩家類

玩家類中定義了萬家的相關(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),以及對玩家進(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("請輸入第一個(gè)玩家的名字:");
 String name1 = sc.nextLine();
 System.out.println("請輸入第二個(gè)玩家的名字:");
 String name2 = sc.nextLine();
 System.out.println("請輸入第三個(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();
 //對玩家遍歷
 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)典小游戲匯總

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

相關(guān)文章

  • 在SpringBoot中使用YourKit進(jìn)行性能調(diào)優(yōu)的教程詳解

    在SpringBoot中使用YourKit進(jìn)行性能調(diào)優(yōu)的教程詳解

    在應(yīng)用程序的開發(fā)過程中,性能調(diào)優(yōu)是一個(gè)重要的環(huán)節(jié),在SpringBoot應(yīng)用程序中,我們可以使用YourKit來進(jìn)行性能調(diào)優(yōu),YourKit是一款非常強(qiáng)大的Java性能調(diào)優(yōu)工具,在本文中,我們將介紹如何在 SpringBoot應(yīng)用程序中使用YourKit進(jìn)行性能調(diào)優(yōu)
    2023-06-06
  • MyBatis分頁插件PageHelper的使用與原理

    MyBatis分頁插件PageHelper的使用與原理

    提到插件相信大家都知道,插件的存在主要是用來改變或者增強(qiáng)原有的功能,MyBatis中也一樣,下面這篇文章主要給大家介紹了關(guān)于Mybatis第三方PageHelper分頁插件的使用與原理,需要的朋友可以參考下
    2023-02-02
  • Maven解決jar包版本沖突的4種方法詳解

    Maven解決jar包版本沖突的4種方法詳解

    這篇文章主要給大家介紹了關(guān)于Maven解決jar包版本沖突的4種方法代碼,maven工程要導(dǎo)入jar包的坐標(biāo),就必須要考慮解決jar包沖突,文中介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • 基于IO版的用戶登錄注冊實(shí)例(Java)

    基于IO版的用戶登錄注冊實(shí)例(Java)

    下面小編就為大家?guī)硪黄贗O版的用戶登錄注冊實(shí)例(Java)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • Spring @Order注解的使用小結(jié)

    Spring @Order注解的使用小結(jié)

    本文主要介紹了Spring @Order注解的使用小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • Java中Object類的理解和使用

    Java中Object類的理解和使用

    Object類是java.lang包下的核心類,Object類是所有類的父類,何一個(gè)類時(shí)候如果沒有明確的繼承一個(gè)父類的話,那么它就是Object的子類,本文將通過代碼示例詳細(xì)介紹一下Java中Object類的理解和使用,需要的朋友可以參考下
    2023-06-06
  • Java NIO異步文件通道原理及用法解析

    Java NIO異步文件通道原理及用法解析

    這篇文章主要介紹了Java NIO異步文件通道原理及用法解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 如何對jdk版本升級或降級

    如何對jdk版本升級或降級

    這篇文章主要介紹了如何對jdk版本升級或降級方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java輕松實(shí)現(xiàn)表單提交的三種方法

    Java輕松實(shí)現(xiàn)表單提交的三種方法

    在Web開發(fā)中,表單是用戶與網(wǎng)站交互的主要方式之一,本文將詳細(xì)介紹如何在Java中實(shí)現(xiàn)表單提交,并通過代碼和案例為新手朋友提供詳細(xì)的指導(dǎo),有需要的可以參考下
    2024-10-10
  • java  BASE64Encoder詳細(xì)介紹及簡單實(shí)例

    java BASE64Encoder詳細(xì)介紹及簡單實(shí)例

    這篇文章主要介紹了java BASE64Encoder詳細(xì)介紹及簡單實(shí)例的相關(guān)資料,需要的朋友可以參考下
    2017-01-01

最新評論

沙湾县| 河源市| 大邑县| 华坪县| 沙田区| 满洲里市| 吉木乃县| 淮阳县| 大渡口区| 灵石县| 洪泽县| 海安县| 同江市| 如皋市| 锡林郭勒盟| 黔西| 砚山县| 巫溪县| 蒙阴县| 合川市| 平武县| 成武县| 霍山县| 满城县| 蕲春县| 隆尧县| 舟山市| 乌兰县| 盘锦市| 广河县| 同江市| 青州市| 横山县| 缙云县| 德阳市| 墨竹工卡县| 尚志市| 育儿| 竹溪县| 桓仁| 舞钢市|