1. 程式人生 > 程式設計 >Java實現鬥地主最簡程式碼例項

Java實現鬥地主最簡程式碼例項

案例說明:使用Java實現簡單的鬥地主洗牌發牌的操作;

具體規則:

共有54張牌,順序打亂;

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

具體程式碼實現步驟:

撲克牌準備操作

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

public class PokerGame {

  public static void main(String[] args) {

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

    //組合撲克牌樣式
    //拿出每一個花色,然後跟每一個數字進行結合,儲存在牌組中
    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);

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

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

    //發牌操作
    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);

  }
}

結果展示

玩家一的牌:[♥️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]

例項補充

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、組合牌
 //建立Map集合,鍵:編號  值:牌
 HashMap<Integer,String> pooker = new HashMap<Integer,String>();
 //建立List集合,儲存編號
 ArrayList<Integer> pookerNumber = new ArrayList<Integer>();
 //定義13個點數的陣列
 String[] numbers = {"2","A","K","3"};
 //定義4個花色組合
 String[] colors = {"♠","♣","♥","♦"};
 
 //定義一個整數變數,作為Map的鍵
 int index = 2;
 //遍歷陣列,用花色+點數的組合,儲存到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);
 
 //單獨儲存大王和小王
 pooker.put(0,"大王");
 pookerNumber.add(0);
 pooker.put(1,"小王");
 pookerNumber.add(1);
 
 //洗牌,將牌的編號打亂
 Collections.shuffle(pookerNumber);
 //System.out.println(pookerNumber);
 
 //發牌,將牌編號,發給3個玩家集合+1個底牌集合
 ArrayList<Integer> player1 = new ArrayList<Integer>();
 ArrayList<Integer> player2 = new ArrayList<Integer>();
 ArrayList<Integer> player3 = new ArrayList<Integer>();
 ArrayList<Integer> buttom = new ArrayList<Integer>();
 //發牌,採用的是集合的索引%3
 for(int i = 0; i < pookerNumber.size();i++) {
 //現將底牌做好
 if(i<3) {
 //存到底牌去
 buttom.add(pookerNumber.get(i)); 
 //對索引%3判斷
 }else if(i % 3 == 0) {
 //索引上的編號,發給玩家1
 player1.add(pookerNumber.get(i));
 }else if(i % 3 == 1) {
 //發給玩家2
 player2.add(pookerNumber.get(i));
 }else if(i % 3 == 2) {
 //發給玩家3
 player3.add(pookerNumber.get(i));
 } 
 }
 //對玩家手中的編號進行排序
 Collections.sort(player1);
 Collections.sort(player2);
 Collections.sort(player3);
 
 //看牌,就是將玩家手中的編號,到Map集合中查詢,根據鍵找值
 //定義實現方法 
 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

到此這篇關於Java實現鬥地主最簡程式碼例項的文章就介紹到這了,更多相關Java實現簡單的鬥地主案例內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!