• 派发牌算法的实现 (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();
        }


    }

  • 相关阅读:
    .NET实现Excel文件的读写 未测试
    权限管理设计
    struts1中配置应用
    POJ 2139 Six Degrees of Cowvin Bacon(floyd)
    POJ 1751 Highways
    POJ 1698 Alice's Chance
    POJ 1018 Communication System
    POJ 1050 To the Max
    POJ 1002 4873279
    POJ 3084 Panic Room
  • 原文地址:https://www.cnblogs.com/bluespot/p/911755.html
Copyright © 2020-2023  润新知