java开发之发牌小程序

发牌规则

     黑桃按照从小到大依次为:1-13  

   红桃按照从小到大依次为:14-26  

   梅花按照从小到大依次为:27-39  

   方块按照从小到大依次为:40-52  

   小王53   大王54

代码实现:

package com.zsy.study;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
/**
 * 
 * @author 偶my耶
 *            游戏发牌
 */
public class Cards {
    /**
     * 发牌函数
     * @param args
     */
    private int[][] player;    //玩家
    private int[] total; // 底牌数
    public int[][] getPlayer() {
        return player;
    }
    public void setPlayer(int[][] player) {
        this.player = player;
    }

    public int[] getTotal() {
        return total;
    }

    public void setTotal(int[] total) {
        this.total = total;
    }
    
    /**
     *   发牌函数
     * @param CardNum 总牌数
     * @param Rs 人数
     * @param Ps 每人的牌数
     * @return Cards 
     */
    public static Cards PlayingCards(int Rs){
        int Ps ,CardNum;        //每人的牌数    //总牌数
        if(Rs==4){                //如果人数是4个,则把总牌数设为108张,每人的牌数设为25张
            CardNum=108;
            Ps=25;
        }else if(Rs==3){        //如果人数是4个,则把总牌数设为54张,每人的牌数设为17张
            CardNum=54;
            Ps=17;
        }else {
            CardNum=0;    
            Ps=0;
            System.out.println("输入错误");
            System.exit(1);
        }
        int[] total=new int[CardNum];    //
        int[][] player=new int[Rs][Ps];    //定义玩家数和牌数的 数组
        int leftNum=CardNum;        //剩下的牌数
        int ranNumber;            //随机发的牌
        Random random=new Random();
        for (int i = 0; i < total.length; i++) {    //将牌数设在1--54之间 其中1~13表示一种花色
            total[i]=(i+1)%54;                        //,依此类推
            if (total[i]==0) {                //把0设为54
                total[i]=54;
            }
            
        }
        for(int i=0;i<player[0].length;i++){        //随机分配牌
            for(int j=0;j<player.length;j++){
                ranNumber=random.nextInt(leftNum);        //随机获取下标,
                player[j][i]=total[ranNumber];            //将随机的数赋给玩家
                total[ranNumber] = total[leftNum-1];    
                leftNum--;
            }
        }    
        Cards card=new Cards();            
        card.setPlayer(player);        
        card.setTotal(total);        
        return card;
    }
    public void print(Cards card,int rs) {
        int dp;
        for (int i = 0; i < card.getPlayer().length; i++) {
            System.out.print("玩家"+(i+1)+"的牌");
            for (int j = 0; j < card.getPlayer()[i].length; j++) {
                System.out.print(" "+card.getPlayer()[i][j]);
            }
            System.out.println();
        }
        System.out.print("底牌");
        if(rs==4){
            dp=8;        //设置底牌数
        }else {
            dp=3;        //设置底牌数
        }
        for (int i = 0; i < dp; i++) {
            System.out.print(" "+card.getTotal()[i]);
        }
        System.out.println();
    }
    public static void main(String[] args) throws Exception{
        System.out.println("请选择游戏:1、斗地主,2、三打哈");
        BufferedReader  br=new BufferedReader(new InputStreamReader(System.in));//输入语句
        Integer rs = Integer.valueOf(br.readLine());
        Cards card=PlayingCards(rs+2);
        card.print(card,rs);

    }
    
}

运行结果:

posted @ 2015-01-10 12:21  偶my耶  阅读(2690)  评论(0编辑  收藏  举报