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


    }

  • 相关阅读:
    上帝永远不会问你的十件事
    discuz x1.5 showmessage函数和showDialog函数解析
    人生,没有那么简单…
    Proxy代理对象是如何调用invoke()方法的.
    实现简单的AOP前置后置增强
    浅谈设计模式visitor访问者模式
    了解jsp,这一篇就够了.
    jsp之el表达式jstl标签
    orale数据库.实例.表空间.用户.表
    题解 UVa10892
  • 原文地址:https://www.cnblogs.com/bluespot/p/911755.html
Copyright © 2011-2022 走看看