学习日志---随机发牌(easy)

package com.poker;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class PokerDemo {
    
    private static final int PLAYER_NUM=4;
    private static final int PLAYER_HAND_NUM=13;
    private static String[] roles = new String[]{"fp","mh","h","ht"};
    private static ArrayList<String> pokers=new ArrayList<String>();
    private static String[][] hand_pokers = new String[4][13];
    
    //初始化一副扑克牌
    //这里是把所有牌都初始化并放入pokers这个集合中
    private static void init()
    {
      for(int i=0;i<roles.length;i++)
      {
          for(int j=1;j<=13;j++)
          {
              if(j==1)
              {
                 pokers.add(roles[i]+"A");  
              }else if(j==11)
              {
                 pokers.add(roles[i]+"J"); 
              }else if(j==12)
              {
                 pokers.add(roles[i]+"Q"); 
              }else if(j==13)
              {
                 pokers.add(roles[i]+"K");  
              }
              else
              {
                  pokers.add(roles[i]+j);
              }
              
          }
      }
    }
    
    //打印,用于测试
    public static void printPokers()
    {
        for(int i=1;i<=pokers.size();i++)
        {
            System.out.print(pokers.get(i-1)+" ");
            if(i%13==0)
            {
                System.out.println();
            }
        }
    }
    
    //通过arraylist的sublist方法截取后面的数字,这里返回的tempPocker和原集合使用的是同一块内存区域
    public static ArrayList<String> getHandPokers(ArrayList<String> poker)
    {
        //获得一个子序列
        List<String> tempPoker = poker.subList(poker.size()-PLAYER_HAND_NUM, poker.size());
        ArrayList<String> returnPoker = new ArrayList<String>(tempPoker);
        //这里清空tempPocker,也就是clear了原集合对应的数据
        tempPoker.clear();//清空每次选出的子序列。
        return returnPoker;
    }
    
    //得到四个玩家手中的牌
    public static String[][] getPlayersHandPokers()
    {
       init();
       //PokerDemo.printPokers();
       //洗牌函数,打乱了pocker集合中元素的顺序,并又放回到pocker中
       Collections.shuffle(pokers);
       for(int i=0;i<hand_pokers.length;i++)
       {
           //这里得到其中一个人的扑克牌
           ArrayList<String> temps =getHandPokers(pokers); 
           for(int j=0;j<hand_pokers[i].length;j++)
           {
               //把这个人的牌放入二维数组中
               hand_pokers[i][j] = temps.get(j);
           }
       }
       return hand_pokers;
    }
    
    public static void main(String[] args) {
        
        PokerDemo.getPlayersHandPokers();
        
        for(int i=0;i<hand_pokers.length;i++)
        {
           for(int j=0;j<hand_pokers[i].length;j++)
           {
               System.out.print(hand_pokers[i][j]+" ");
           }
           System.out.println();
        }
        
    }

}


你可能感兴趣的:(java算法)