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

Java實(shí)現(xiàn)斗地主最簡代碼實(shí)例

 更新時(shí)間:2020年05月10日 12:01:04   作者:淡哈哈  
在本篇文章里小編給各位分享的是關(guān)于Java實(shí)現(xiàn)斗地主最簡代碼實(shí)例,有興趣的朋友們可以參考下。

案例說明:使用Java實(shí)現(xiàn)簡單的斗地主洗牌發(fā)牌的操作;

具體規(guī)則:

共有54張牌,順序打亂;

三個(gè)玩家參與游戲,三人交替摸牌,每人17張牌,最后留三張為底牌(地主牌)。

具體代碼實(shí)現(xiàn)步驟:

撲克牌準(zhǔn)備操作

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

public class PokerGame {

  public static void main(String[] args) {

    //定義撲克牌的花色以及數(shù)字的數(shù)組
    String[] flower = {"♥️","♠️","♣️","♦️"};
    String[] numbers = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
    
    //創(chuàng)建牌組集合
    List poker = new ArrayList();

    //組合撲克牌樣式
    //拿出每一個(gè)花色,然后跟每一個(gè)數(shù)字進(jìn)行結(jié)合,儲(chǔ)存在牌組中
    for (int i = 0; i < flower.length; i++) {
      for (int j = 0; j < numbers.length; j++) {
        poker.add(flower[i].concat(numbers[j]));
      }
    }

    //添加大小王到牌組集合中
    poker.add("大王");
    poker.add("小王");

    //打印輸出所有撲克牌測試
    System.out.println(poker);

    //定義三個(gè)玩家和地主牌的集合
    List player1 = new ArrayList();
    List player2 = new ArrayList();
    List player3 = new ArrayList();
    List dizhupai = new ArrayList();

    //洗牌操作,使用shuffle方法
    Collections.shuffle(poker);
    System.out.println(poker); //測試牌有沒有被打亂

    //發(fā)牌操作
    for (int k = 0; k<poker.size() ; k++) {
      //留出三張牌存到底牌的集合中
      if (k > 50) {
        dizhupai.add(poker.get(k));
      } else if (k % 3 == 0) {
        player1.add(poker.get(k));
      } else if (k % 3 == 1) {
        player2.add(poker.get(k));
      } else if (k % 3 == 2) {
        player3.add(poker.get(k));
      }
    }

    //最終看牌操作
    System.out.println("玩家一的牌"+player1);
    System.out.println("玩家二的牌"+player2);
    System.out.println("玩家三的牌"+player3);
    System.out.println("地主牌"+dizhupai);

  }
}

結(jié)果展示

玩家一的牌:[♥️9, ♠️A, ♠️5, ♥️A, ♥️2, ♥️10, ♠️7, ♣️J, ♥️3, ♠️2, ♣️5, ♦️2, ♠️6, ♥️7, ♦️K, ♣️9, 大王]
玩家二的牌:[♦️9, ♠️4, ♣️4, ♣️10, ♥️J, ♦️4, ♥️8, ♥️5, ♦️A, ♣️A, ♦️7, ♦️3, ♦️Q, ♣️K, ♥️6, ♣️3, ♠️Q]
玩家三的牌:[♣️Q, ♣️2, ♣️8, ♣️7, ♥️Q, ♦️10, ♠️8, ♣️6, ♥️4, ♠️10, 小王, ♥️K, ♠️3, ♦️8, ♦️6, ♠️K, ♠️J]
地主牌:[♠️9, ♦️5, ♦️J]

實(shí)例補(bǔ)充

package itcast.demo6;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
 
 
public class DouDiZhu {
 public static void main(String[] args) {
 //1、組合牌
 //創(chuàng)建Map集合,鍵:編號  值:牌
 HashMap<Integer,String> pooker = new HashMap<Integer,String>();
 //創(chuàng)建List集合,存儲(chǔ)編號
 ArrayList<Integer> pookerNumber = new ArrayList<Integer>();
 //定義13個(gè)點(diǎn)數(shù)的數(shù)組
 String[] numbers = {"2","A","K","Q","J","10","9","8","7","6","5","4","3"};
 //定義4個(gè)花色組合
 String[] colors = {"♠","♣","♥","♦"};
 
 //定義一個(gè)整數(shù)變量,作為Map的鍵
 int index = 2;
 //遍歷數(shù)組,用花色+點(diǎn)數(shù)的組合,存儲(chǔ)到Map集合中
 for(String number : numbers) {
 for(String color : colors) {
 pooker.put(index, color + number);
 pookerNumber.add(index);
 index++;
 }
 }
 //System.out.println(pooker);
 //System.out.println(pookerNumber);
 
 //單獨(dú)存儲(chǔ)大王和小王
 pooker.put(0, "大王");
 pookerNumber.add(0);
 pooker.put(1, "小王");
 pookerNumber.add(1);
 
 //洗牌,將牌的編號打亂
 Collections.shuffle(pookerNumber);
 //System.out.println(pookerNumber);
 
 //發(fā)牌,將牌編號,發(fā)給3個(gè)玩家集合+1個(gè)底牌集合
 ArrayList<Integer> player1 = new ArrayList<Integer>();
 ArrayList<Integer> player2 = new ArrayList<Integer>();
 ArrayList<Integer> player3 = new ArrayList<Integer>();
 ArrayList<Integer> buttom = new ArrayList<Integer>();
 //發(fā)牌,采用的是集合的索引%3
 for(int i = 0; i < pookerNumber.size();i++) {
 //現(xiàn)將底牌做好
 if(i<3) {
 //存到底牌去
 buttom.add(pookerNumber.get(i)); 
 //對索引%3判斷
 }else if(i % 3 == 0) {
 //索引上的編號,發(fā)給玩家1
 player1.add(pookerNumber.get(i));
 }else if(i % 3 == 1) {
 //發(fā)給玩家2
 player2.add(pookerNumber.get(i));
 }else if(i % 3 == 2) {
 //發(fā)給玩家3
 player3.add(pookerNumber.get(i));
 } 
 }
 //對玩家手中的編號進(jìn)行排序
 Collections.sort(player1);
 Collections.sort(player2);
 Collections.sort(player3);
 
 //看牌,就是將玩家手中的編號,到Map集合中查找,根據(jù)鍵找值
 //定義實(shí)現(xiàn)方法 
 look("包身工 ",player1,pooker); 
 look("清潔工 ",player2,pooker);
 look("洗碗工 ",player3,pooker);
 look("底牌  ",buttom,pooker);
 }
 
 public static void look(String name,ArrayList<Integer> player,HashMap<Integer,String> pooker) {
 //遍歷ArrayList集合,獲取元素,作為鍵,到集合Map中找值
 System.out.print(name+" ");
 for(Integer key : player) {
 String value = pooker.get(key);
 System.out.print(value+" ");
 }
 System.out.println();
 }
}

包身工 大王 ♣2 ♥2 ♦2 ♦A ♦K ♣J ♥10 ♠9 ♣9 ♥9 ♦9 ♣5 ♦5 ♦4 ♠3 ♦3
清潔工 小王 ♠K ♥K ♠Q ♣Q ♦Q ♦J ♠10 ♦10 ♥8 ♠7 ♥7 ♦7 ♥5 ♠4 ♣3 ♥3
洗碗工 ♠2 ♥A ♣K ♥Q ♠J ♥J ♣10 ♠8 ♦8 ♣7 ♠6 ♣6 ♥6 ♦6 ♠5 ♣4 ♥4
底牌 ♠A ♣A ♣8

到此這篇關(guān)于Java實(shí)現(xiàn)斗地主最簡代碼實(shí)例的文章就介紹到這了,更多相關(guān)Java實(shí)現(xiàn)簡單的斗地主案例內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論