91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

java如何實現斗地主發牌功能

發布時間:2021-06-30 09:25:04 來源:億速云 閱讀:135 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關java如何實現斗地主發牌功能的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

具體內容如下

問題:

參考斗地主的游戲規則,完成一個發牌的功能(54張牌,考慮點數,花色;三名玩家,其中地主比其他玩家多3張牌)
要求實現以下功能:

1、洗牌
2、發牌(發牌按照常規方式A-B-C-A-B-C-A…,不允許一次性隨機17張給某個玩家)
3、玩家手中牌的展示(要求按點數實現排序)

分析

運用面向對象的程序設計思維分為撲克、玩家和游戲三部分,撲克類屬性有花色,點數,次序;玩家類屬性有玩家id,昵稱,是否地主,牌的集合;游戲過程分為洗牌,隨機產生地主,發牌,完成牌的排序,玩家手里的牌展示功能

程序實現

package com.lesson17.homework;

/**
 * @author HUC
 *
 */

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

 /** 撲克花色 */
 private String flower;
 /** 撲克點數 */
 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);
   }
  }
  //單獨將大小王加入集合
  list.add(new Poker("小", "王", 13));
  list.add(new Poker("大", "王", 14));
  
  //初始化玩家
  players = Arrays.asList(
    new Player(1, "劉備"),
    new Player(2, "關羽"),
    new Player(3, "張飛"));
 }
 
 /**洗牌*/
 public void washPoker(){
  Collections.shuffle(list);
 }
 
 /**隨機地主*/
 public void pushBoss(){
  Random r = new Random();
  bossIndex = r.nextInt(players.size());
  //設置被隨機到的玩家為地主
  players.get(bossIndex).setBoss(true);
 }
 

 /**依次發牌*/
 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(){
  //隨機地主
  pushBoss();
  //洗牌
  washPoker();
  //發牌
  pushPoker();
  //排序
  sortPoker();
  //展示牌
  for(Player p : players){
   System.out.println(p.getPokers());
  }
 }
 
 public static void main(String[] args) {
  new PokerGame().start();
 }
}

結果

java如何實現斗地主發牌功能

java如何實現斗地主發牌功能

感謝各位的閱讀!關于“java如何實現斗地主發牌功能”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

福州市| 驻马店市| 尚义县| 怀安县| 老河口市| 宁津县| 德州市| 漳浦县| 石台县| 阿鲁科尔沁旗| 竹北市| 融水| 望谟县| 望江县| 静乐县| 琼结县| 荣成市| 新平| 永城市| 阿克陶县| 利川市| 古浪县| 建德市| 元朗区| 泗阳县| 石渠县| 通渭县| 和田县| 铁岭市| 扬州市| 柘城县| 东平县| 定南县| 宝清县| 西丰县| 巴彦淖尔市| 开鲁县| 中宁县| 丹江口市| 蒙阴县| 天津市|