Java 撲克發牌演算法實現,java撲克牌演算法

來源:互聯網
上載者:User

Java 撲克發牌演算法實現,java撲克牌演算法

原文:Java 撲克發牌演算法實現  代碼:http://www.zuidaima.com/share/1550463274224640.htm

兩種方法: A. 撲克發牌演算法是棋牌遊戲中常用的基礎演算法,也是遊戲開發人員需要熟悉的基礎演算法之一。下面介紹一下該演算法的一種實現方式。 B.利用Random類的對象的鏈表中一隨機的順序儲存一副52張的紙牌。用含有連個字元的字串代表紙牌,例如“1C”表示梅花A,”JD”表示方片J等。從棧中輸出4手牌,每手牌有13張紙牌。

首先給撲克牌中每張牌設定一個編號,下面演算法實現的編號規則如下:  u    紅桃按照從小到大依次為:1-13  u    方塊按照從小到大依次為:14-26  u    黑桃按照從小到大依次為:27-39  u    梅花按照從小到大依次為:40-52  u    小王為53,大王為54  演算法實現如下:  u    首先按照以上編號規則初始化一個包含108個數位數組  u    每次隨機從該數組中抽取一個數字,分配給儲存玩家資料的數組  實現該功能的代碼如下所示:    package com.zuidaima;  import Java.util.*;  /**  * 發牌演算法的實現  * 要求:把2副牌,也就是108張,發給4個人,留6張底牌*     @author www.zuidaima.com*/public class Exec{    public static void main(String[] args){       //儲存108張牌的數組       int[] total = new int[108];       //儲存四個玩家的牌       int[][] player = new int[4][25];       //儲存當前剩餘牌的數量       int leftNum = 108;       //隨機數字       int ranNumber;       //隨機對象       Random random = new Random();       //初始化數組       for(int i = 0;i < total.length;i++){           total[i] = (i + 1) % 54;           //處理大小王編號           if(total[i] == 0){              total[i] = 54;            }       }       //迴圈發牌       for(int i = 0;i < 25;i++){           //為每個人發牌           for(int j = 0;j < player.length;j++){              //產生隨機下標              ranNumber = random.nextInt(leftNum);              //發牌              player[j][i] = total[ranNumber];              //移動已經發過的牌              total[ranNumber] = total[leftNum - 1];              //可發牌的數量減少1              leftNum--;              }         }       //迴圈輸出玩家手中的牌       for(int i = 0;i < player.length;i++){           for(int j = 0;j < player[i].length;j++){              System.out.print(" " + player[i][j]);             }           System.out.println();       }       //底牌       for(int i = 0;i < 8;i++){           System.out.print(" " + total[i]);        }       System.out.println();    }}    

 標籤: 演算法 撲克 發牌 java話題: 語言基礎


Java四人撲克發牌,教將代碼進行更好的縮排,在簡潔點,最主要性可以

提點小小的建議:使用集合,同時可以使用Collections類的shuffle方法來發牌,效率比自己寫更高,更簡潔
 
java編寫撲克牌遊戲裡,洗牌時發牌時用到了隨機分配的功可以,問在那個包中哪個類哪個方法?

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

/**
* Author:danagao
* java 發牌程式,
* 不含大王,小王
* 可設定發牌人數
*/
public class Pai {

HashMap<String, String> map = new HashMap<String, String>();
private static final String[] colors = {"紅桃", "方塊", "梅花", "黑桃"};
private static final String[] values = {"3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};

private String[] newpai; private int len;
//初始化52張牌
public Pai() {
len = colors.length * values.length;
newpai = new String[len];
int k = 0;
for (int i = 0; i < colors.length; i++) {
for (int j = 0; j < values.length; j++) {
newpai[k] = colors[i] + values[j];
k++;
}
}
}

//洗牌(把牌打亂)
private void getNums() {
Random r = new Random();
int i = r.nextInt(len);
String s;
if (i >= 0 && !map.containsKey(String.valueOf(i))) {
s = String.valueOf(i);
map.put(s, newpai[i]);
} else {
getNums();
}
}

//發牌
public void showResult(int p) {
for (int i = 0; i < len; i++) {
getNums();
}

int l = len/p; //每人發幾張牌
int j=1;//計人數
int k=0;//計牌數

for (Map.Entry<String, String> entry : map.entrySet()) {
if(k%l==0 && j<=p){
......餘下全文>>
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.