posts - 2, comments - 2, trackbacks - 0, articles - 23
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

发扑克牌的简单(java)实现

Posted on 2012-02-22 09:28 齐纳尔多 阅读(613) 评论(0)  编辑  收藏 所属分类: java
package cn.com.pbqi.corejava;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Random;
import java.util.TreeMap;

public class CardGame {
    
    
private int pNum;
    
private List<String> cardList = new ArrayList<String>(54);
    
private Map<String,List<String>> map = new TreeMap<String,List<String>>();
    
    
/**
     * 打牌的人数,最少2个人,最多4个人
     * 
@param pNum
     
*/

    
public CardGame(int pNum) {
        
if(pNum < 2 || pNum > 4{
            
throw new IllegalArgumentException("CardPlayer must between 2 and 4, CardPlayer=" + pNum);
        }

        
this.pNum = pNum;
        
for(int i = 0; i <pNum; i++{
            map.put(i
+"-"new ArrayList<String>());
        }

        
        
this.initCards();
        
        
this.distribute();
        
        
this.display();
    }

    
    
/**
     * 初始化一副扑克
     
*/

    
public List<String>  initCards() {
        String[] type 
= {"r","b","s","m"};
        String[] cards 
= {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
        String[] kings 
= {"大王","小王"};
        
        
for(int i = 0; i < type.length; i++{
            
for(int j = 0; j < cards.length;j++{
                cardList.add(cards[j]
+type[i]);
            }

        }

        
for(int k = 0; k < kings.length; k++){
            cardList.add(kings[k]);
        }

        
return cardList;
    }

    
/**
     * 发牌
     
*/

    
public void distribute() {
        Random r 
= new Random();
        
int len = cardList.size();
        
int bakLen = len;
        
for(int i = 0; i < len; i++{
            
int rNum = r.nextInt(bakLen);
            String card 
= cardList.get(rNum);
            
int left = i % pNum;
            map.get(left
+"-").add(card);
            cardList.remove(rNum);
            bakLen
--;
        }

    }

    
    
public void display() {
        System.out.println(
"======r:红桃,b:黑桃,s:方块,m:米花===========");
        
for(Iterator<String> iter = map.keySet().iterator(); iter.hasNext();) {
            String key 
= iter.next();
            List
<String> list = map.get(key);
            System.out.print(key
+ " 的牌是===");
            
for(int i = 0; i < list.size();i++{
                System.out.print(list.get(i));
                
if(i != list.size() -1{
                    System.out.print(
",");
                }

            }

            System.out.println(
"");
        }

    }

    
    
public static void main(String[] args) {
        CardGame cg 
= new CardGame(4);

    }


}


只有注册用户登录后才能发表评论。


网站导航: