派發牌演算法的實現 (java)

來源:互聯網
上載者:User

 


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

}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.