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

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

 更新時間:2021年06月29日 15:56:34   作者:qq_35937045  
這篇文章主要為大家詳細(xì)介紹了java簡單實(shí)現(xiàn)斗地主發(fā)牌功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

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

問題:

參考斗地主的游戲規(guī)則,完成一個發(fā)牌的功能(54張牌,考慮點(diǎn)數(shù),花色;三名玩家,其中地主比其他玩家多3張牌)
要求實(shí)現(xiàn)以下功能:

1、洗牌
2、發(fā)牌(發(fā)牌按照常規(guī)方式A-B-C-A-B-C-A…,不允許一次性隨機(jī)17張給某個玩家)
3、玩家手中牌的展示(要求按點(diǎn)數(shù)實(shí)現(xiàn)排序)

分析

運(yùn)用面向?qū)ο蟮某绦蛟O(shè)計(jì)思維分為撲克、玩家和游戲三部分,撲克類屬性有花色,點(diǎn)數(shù),次序;玩家類屬性有玩家id,昵稱,是否地主,牌的集合;游戲過程分為洗牌,隨機(jī)產(chǎn)生地主,發(fā)牌,完成牌的排序,玩家手里的牌展示功能

程序?qū)崿F(xiàn)

package com.lesson17.homework;

/**
 * @author HUC
 *
 */

/**撲克類*/
public class Poker {

 /** 撲克花色 */
 private String flower;
 /** 撲克點(diǎn)數(shù) */
 private String pointer;
 /** 撲克順序 */
 private int sort;

 public Poker(String flower, String pointer, int sort) {
  super();
  this.flower = flower;
  this.pointer = pointer;
  this.sort = sort;
 }

 public String getFlower() {
  return flower;
 }

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

 public String getPointer() {
  return pointer;
 }

 public void setPointer(String pointer) {
  this.pointer = pointer;
 }

 public int getSort() {
  return sort;
 }

 public void setSort(int sort) {
  this.sort = sort;
 }

 @Override
 public String toString() {
  return flower + pointer;
 }

package com.lesson17.homework;
   
public class Player {

 /** 玩家id */
 private int id;
 /** 玩家昵稱 */
 private String name;
 /** 玩家拿到的牌 */
 private ArrayList<Poker> pokers = new ArrayList<>();
 /** 玩家是否地主 */
 private boolean boss;

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

 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 ArrayList<Poker> getPokers() {
  return pokers;
 }

 public void setPokers(ArrayList<Poker> pokers) {
  this.pokers = pokers;
 }

 public boolean isBoss() {
  return boss;
 }

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

package com.lesson17.homework;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Random;

public class PokerGame {

 static List<Player> players;
 static ArrayList<Poker> list = new ArrayList<>();
 static String[] flowers = {"方塊","梅花","黑桃","紅心"};
 static String[] pointers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};
 int bossIndex; //地主索引
 
 static{
  //初始化撲克
  for (int i = 0; i < flowers.length; i++) {
   for (int j = 0; j < pointers.length; j++) {
    //生成一張撲克對象
    Poker p = new Poker(flowers[i], pointers[j], j);
    list.add(p);
   }
  }
  //單獨(dú)將大小王加入集合
  list.add(new Poker("小", "王", 13));
  list.add(new Poker("大", "王", 14));
  
  //初始化玩家
  players = Arrays.asList(
    new Player(1, "劉備"),
    new Player(2, "關(guān)羽"),
    new Player(3, "張飛"));
 }
 
 /**洗牌*/
 public void washPoker(){
  Collections.shuffle(list);
 }
 
 /**隨機(jī)地主*/
 public void pushBoss(){
  Random r = new Random();
  bossIndex = r.nextInt(players.size());
  //設(shè)置被隨機(jī)到的玩家為地主
  players.get(bossIndex).setBoss(true);
 }
 

 /**依次發(fā)牌*/
 public void pushPoker(){
  for (int i = 0; i < 51; i+=3) {
   players.get(0).getPokers().add(list.get(i));
   players.get(1).getPokers().add(list.get(i+1));
   players.get(2).getPokers().add(list.get(i+2));
  }
  for(int i = 51;i < 54 ;i++){
   //將最后剩余的牌(3張)全部給地主
   players.get(bossIndex).getPokers().add(list.get(i));
  }
 }
 
 /**排序*/
 public void sortPoker() {
  Collections.sort(players.get(0).getPokers(), (a,b)->a.getSort()-b.getSort());
  Collections.sort(players.get(1).getPokers(), (a,b)->a.getSort()-b.getSort());
  Collections.sort(players.get(2).getPokers(), (a,b)->a.getSort()-b.getSort());
 }
 
 public void start(){
  //隨機(jī)地主
  pushBoss();
  //洗牌
  washPoker();
  //發(fā)牌
  pushPoker();
  //排序
  sortPoker();
  //展示牌
  for(Player p : players){
   System.out.println(p.getPokers());
  }
 }
 
 public static void main(String[] args) {
  new PokerGame().start();
 }
}

結(jié)果

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

相關(guān)文章

  • MybatisPlus實(shí)現(xiàn)邏輯刪除功能

    MybatisPlus實(shí)現(xiàn)邏輯刪除功能

    這篇文章主要介紹了MybatisPlus實(shí)現(xiàn)邏輯刪除功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Spring Boot單元測試中使用mockito框架mock掉整個RedisTemplate的示例

    Spring Boot單元測試中使用mockito框架mock掉整個RedisTemplate的示例

    今天小編就為大家分享一篇關(guān)于Spring Boot單元測試中使用mockito框架mock掉整個RedisTemplate的示例,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Java中sleep()與wait()的區(qū)別總結(jié)

    Java中sleep()與wait()的區(qū)別總結(jié)

    因?yàn)樽罱鼘W(xué)習(xí)時正好碰到這兩個方法,就查閱相關(guān)資料,并通過程序?qū)崿F(xiàn),進(jìn)行區(qū)別總結(jié)一下,所以下面這篇文章主要給大家總結(jié)介紹了關(guān)于Java中sleep()與wait()區(qū)別的相關(guān)資料,需要的朋友可以參考,下面來一起看看吧。
    2017-05-05
  • Spring AbstractRoutingDatasource 動態(tài)數(shù)據(jù)源的實(shí)例講解

    Spring AbstractRoutingDatasource 動態(tài)數(shù)據(jù)源的實(shí)例講解

    本文介紹如何使用 Spring AbstractRoutingDatasource 基于上下文動態(tài)切換數(shù)據(jù)源,因此我們會讓查找數(shù)據(jù)源邏輯獨(dú)立于數(shù)據(jù)訪問之外
    2021-07-07
  • Mybatis自關(guān)聯(lián)查詢一對多查詢的實(shí)現(xiàn)示例

    Mybatis自關(guān)聯(lián)查詢一對多查詢的實(shí)現(xiàn)示例

    這篇文章主要介紹了Mybatis自關(guān)聯(lián)查詢一對多查詢的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • Java工廠模式用法之如何動態(tài)選擇對象詳解

    Java工廠模式用法之如何動態(tài)選擇對象詳解

    工廠設(shè)計(jì)模式可能是最常用的設(shè)計(jì)模式之一,我想大家在自己的項(xiàng)目中都用到過。本文不僅僅是關(guān)于工廠模式的基本知識,更是討論如何在運(yùn)行時動態(tài)選擇不同的方法進(jìn)行執(zhí)行,你們可以看看是不是和你們項(xiàng)目中用的一樣
    2023-03-03
  • Java解決青蛙跳臺階問題流程

    Java解決青蛙跳臺階問題流程

    所謂的青蛙跳臺階問題,就是指一只青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。本文將用Java解決這一問題,需要的可以參考一下
    2022-03-03
  • SpringBoot Jpa企業(yè)開發(fā)示例詳細(xì)講解

    SpringBoot Jpa企業(yè)開發(fā)示例詳細(xì)講解

    這篇文章主要介紹了SpringBoot Jpa企業(yè)開發(fā)示例,Jpa可以通過實(shí)體類生成數(shù)據(jù)庫的表,同時自帶很多增刪改查方法,大部分sql語句不需要我們自己寫,配置完成后直接調(diào)用方法即可,很方便
    2022-11-11
  • SpringBoot2.1.3修改tomcat參數(shù)支持請求特殊符號問題

    SpringBoot2.1.3修改tomcat參數(shù)支持請求特殊符號問題

    最近遇到一個問題,比如GET請求中,key,value中帶有特殊符號,請求會報(bào)錯。接下來通過本文給大家分享解決SpringBoot2.1.3修改tomcat參數(shù)支持請求特殊符號 ,需要的朋友可以參考下
    2019-05-05
  • 三級聯(lián)動省市ajax的代碼

    三級聯(lián)動省市ajax的代碼

    這篇文章主要為大家詳細(xì)介紹了ajax實(shí)現(xiàn)省市三級聯(lián)動效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-07-07

最新評論