简单麻将功能实现

麻将游戏实现:
实现功能点: 实现麻将的准备牌,洗牌,发牌,看牌 (集合知识) 麻将功能需求分析 a:具体规则:
1.组装136张麻将,条,筒,万加在一起的数目是108张 东,南,西,北风,红中,发财,白板是28张,总共136张
2.将136张牌顺序打乱
3.四个玩家参与游戏,四个人交替摸牌,每次4张,先摸3次,之后庄家摸2张(2张之间索引差4),其他人再摸一张,庄家14张,其余人13张牌,剩下的留作底牌。
4.查看四人手中的牌(按照牌的大小排序),底牌

代码的实现:

 public class Mahjong {
    public static void main(String[] args) {
        //定义三个数组,用来组合麻将牌
        int[] num = new int[]{1,2,3,4,5,6,7,8,9};
        String[] name = new String[]{"条","筒","万"};
        String[] tablet = new String[]{"东","南","西","北","中","白板","发财"};
        //记录牌的编号
        int k = 0;
        //用来存放牌
        HashMap hashMap = new HashMap<>();
        //用来记录麻将存放个数,和次序
        List number = new ArrayList<>();
        //定义四个存放玩家牌的数组
        List player1 = new ArrayList<>();
        List player2 = new ArrayList<>();
        List player3 = new ArrayList<>();
        List player4 = new ArrayList<>();
        //用来存放底牌
        List base = new ArrayList<>();
        //准备牌,for循环添加条,筒,万
        for(int i =0;i> iterator = hashMap.entrySet().iterator();
        while(iterator.hasNext()) {
            System.out.print("(" + iterator.next() + ")" + " ");
        }
        System.out.println();
        System.out.println("将牌打乱顺序: ");
        //集合提供方法,将一个整形数组打乱
        Collections.shuffle(number);
        for(int i =0;i< number.size(); i++) {
            System.out.print("(" + i + ":" + hashMap.get(number.get(i)) + ")" + " ");
        }
        System.out.println();
        //发牌
        //定义属性n,记录摸牌的位置
        Integer n = 0;

        //总共发三次,每一次每人摸四张牌,
        for(int i=0;i<3;i++) {
            for(int j=0;j<4;j++) {
                player1.add(number.get(n++));
                player2.add(number.get(n++));
                player3.add(number.get(n++));
                player4.add(number.get(n++));
            }
        }
        //庄家摸两次牌,其他人摸一张(玩家1是庄家)
        player1.add(number.get(n));
        //需要跳牌(庄家第一次和第二次摸的位置索引值差4)
        n = n + 4;
        player1.add(number.get(n));
        //回到庄家第一次摸牌的位置的下一个
        n = n - 3;
        player2.add(number.get(n));
        player3.add(number.get(n));
        player4.add(number.get(n));
        //剩下的底牌
        for(int i=n;i

看牌的代码块可以封装起来,会显得简洁明了;

 //封装后的函数
        looking("1号",player1,hashMap);
        looking("2号",player2,hashMap);
        looking("3号",player3,hashMap);
        looking("4号",player4,hashMap);
        looking("底牌",base,hashMap);
    }
     /**
     * 输入想看的玩家的名字,传入该玩家的List数组,传入存放麻将牌的集合
     * @param name
     * @param player
     * @param hashMap
     */
    private static void looking(String name,List player, HashMap hashMap) {
        System.out.print(name + ": ");
        for(int i=0;i

你可能感兴趣的:(简单麻将功能实现)