zoukankan      html  css  js  c++  java
  • 派发牌算法的实现 (java)


    import java.util.*;

    /** 
    * 派发牌算法的实现 
    * 要求:把2副牌,也就是108张,发给4个人,留8张底牌 
    */


    public class PaiPai {
        
        
    int[]    pokerpai = new int[54];
        
    int[]      allpai = new int[108];
        
    int[][] playerpai = new int[4][25];
        
    int[]       dipai = new int[8]; 
        
    int m_turn;
        
        Random rdm 
    = new Random(System.currentTimeMillis());

        
    int getRandom(int size)
        
    {
            
    return (rdm.nextInt() & 0x7FFFFFFF% size;
        }

        
        
    public PaiPai()
        
    {
            initPai();
            faPai();
        }

        
        
    public void initPai()
        
    {
            m_turn
    =0;
            
    int randomsite;
            
    int temppai;
            
    //赋初值--发牌一般形式:1.按点数发  2.牌数和花色发
            
    //下面是按点数发
            for(int i=0;i<pokerpai.length;i++)
            
    {
                pokerpai[i]
    =(i+1)%55;
            }

            
    //给两副牌
            for(int i=0;i<2;i++)
               
    for(int j=0;j<pokerpai.length;j++)
               
    {
                   allpai[m_turn]
    =pokerpai[j];
                   m_turn
    ++;
               }

            
    //洗牌
            for(int i=0;i<allpai.length;i++)
            
    {
                randomsite
    =getRandom(allpai.length);
                temppai
    =allpai[randomsite];
                allpai[randomsite]
    =allpai[i];
                allpai[i]
    =temppai;
                
            }

        }

        
        
        
    public void faPai()
        
    {
            
    //一轮发四人牌,共25轮
            for(int i=0;i<25;i++)
               
    for(int j=0;j<playerpai.length;j++)
               
    {
                   m_turn
    --;
                   playerpai[j][i]
    =allpai[m_turn];
               }

            
    //留底牌
            for(int i=0;i<dipai.length;i++)
            
    {
                m_turn
    --;
                dipai[i]
    =allpai[m_turn];
                
            }

            
    //显示四家牌
            for(int j=0;j<playerpai.length;j++)
                   showPai(playerpai[j]);
            
    //显示底牌
            showPai(dipai);
        }

        
        
    public void showPai(int[] m_pai)
        
    {
            System.out.println(
    "Showpai:start.");
            
    for(int i=0;i<m_pai.length;i++)
            
    {
                System.out.print(
    " "+m_pai[i]);
            }

            System.out.println();
            System.out.println(
    "Showpai:end.");
        }

        
        
    public static void main(String[] args)
        
    {
            
    new PaiPai();
        }


    }

  • 相关阅读:
    [转]SubVersion 和 CVSNT在Windows下的安装及初步管理
    [Java20071101]JDK配置
    [English20071023]疯狂英语永恒不变的18条黄金法则
    [文摘20071020]富人和穷人的经典差异
    [English20071024]疯狂突破高中句型300句
    [文摘20071017]回家真好 (工作是为了生活)
    [文摘20071020]老婆和老妈掉水里终于有答案啦
    [转]flash与后台数据交换方法整理
    Repeater使用:绑定时 结合 前台JS及后台共享方法
    [文摘20071019]九九重阳节的来历 重阳节传说故事 重阳节的活动习俗 重阳节诗篇
  • 原文地址:https://www.cnblogs.com/bluespot/p/911755.html
Copyright © 2011-2022 走看看