程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java實現撲克發牌算法

Java實現撲克發牌算法

編輯:關於JAVA

撲克發牌算法是棋牌游戲中常用的基礎算法,也是游戲開發人員需要熟悉的基礎算法之一。下面介紹一下該算法的一種實現方式。

首先給撲克牌中每張牌設定一個編號,下面算法實現的編號規則如下:

u 紅桃按照從小到大依次為:1-13

u 方塊按照從小到大依次為:14-26

u 黑桃按照從小到大依次為:27-39

u 梅花按照從小到大依次為:40-52

u 小王為53,大王為54

算法實現如下:

u 首先按照以上編號規則初始化一個包含108個數字的數組

u 每次隨機從該數組中抽取一個數字,分配給保存玩家數據的數組

實現該功能的代碼如下所示:

import java.util.*;

/**

* 發牌算法的實現

* 要求:把2副牌,也就是108張,發給4個人,留6張底牌

*/
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();
    }
}

出自:http://blog.csdn.net/Mailbomb/archive/2006/05/14/728176.aspx

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved