JAVA实现简单的斗地主洗牌,发牌,抢地主功能

##测试类

package doudizhu;

import org.omg.CORBA.CODESET_INCOMPATIBLE;

import java.util.ArrayList;

import java.util.Collections;

/*
 * 需求:
 * 斗地主:
 *   分析:♥3,♦3,♠3,♣3,♥4,♦4,♠4,♣4,....小🃏,大🃏
 *        0   1   2   3  4   5   6   7       53  54
 *
 *        玩家1拿到的索引:♣3,♥4,♠4,♥5,小🃏
 *
 *       1、牌面(花色♥,♠,♦,♣,数字,A,2,3,4,5,6,7,8,9,10,J,Q,K,大🃏,小🃏)
 *           第一种:使用索引控制牌
 *           第二种:使用键控制牌
 *       2、洗牌:使用随机算数的机制,随机打乱顺序
 *       3、发牌:(发牌在玩家手中的牌其实只是一些数字(索引/键))
 *           第一种:使用索引,随机生成三个玩家和底牌的索引
 *           第二种:安顺序发牌,每个玩家发方17张,最后剩下三张底牌(统计出来)
 *           排序,只需要将玩家手中的索引/键进行自然排序就好
 * */
public class Test extends Poker {
       public static void main(String[] args)
       {
           Test t=new Test();
           User user=new User();
           t.Keep_card();
           t.special_keep_cards();
           System.out.println("参加斗地主游戏的有三个人,分别为:");
           user.user();
           System.out.println("游戏开始喽!");

           t.shuffle_cards();//洗牌

           t.sort_cards(0,num1);
           t.sort_cards(17,num2);
           t.sort_cards(34,num3);
           num.addAll(num1);
           num.addAll(num2);
           num.addAll(num3);
           System.out.println(num);
           System.out.println(num4);
           System.out.println("三张底牌为:");
           for (int i=0;i<=2;i++)
           {
               System.out.print(arrayList1.get(num4.get(i))+" ");
           }
           System.out.println();
           t.set_cards();//
           t.grab_landlord();//抢地主
       }
}

##方法类

package doudizhu;

import java.util.*;

public class Poker extends User{
    int p=0;
    public static ArrayList<Object> arrayList=new ArrayList<>();//花色的列表
    public static ArrayList<Object> arrayList1=new ArrayList<>();//普通数字牌的列表
    public static ArrayList<Object> arrayList2=new ArrayList<>();//A,2,J,Q,K,小🃏,大🃏
    ArrayList<Integer> intdex=new ArrayList<>();//索引列表

    public static ArrayList<Integer> num1=new ArrayList<>();//对索引进行排序,从而达到对牌的排序
    public static ArrayList<Integer> num2=new ArrayList<>();
    public static ArrayList<Integer> num3=new ArrayList<>();
    public static ArrayList<Integer> num=new ArrayList<>();

    public static ArrayList<Integer> num4=new ArrayList<>();//最后预留的三张牌
    //普通数字牌存牌
    public void Keep_card()
    {
        Collections.addAll(arrayList,"♥","♠","♦","♣");
        arrayList.addAll(arrayList1);
        for (int i=3;i<=10;i++)
        {

            for (int j=0;j<=3;j++)
            {
             Collections.addAll(arrayList1,arrayList.get(j)+""+i);
            }

        }

//        System.out.println(arrayList1);
    }
    //特殊数字牌存牌
    public void special_keep_cards()
    {
        Collections.addAll(arrayList2,"J","Q","K","A","2","小🃏","大🃏");
        for (int i=0;i<=4;i++)
        {
            for (int j=0;j<=3;j++)
            {
                Collections.addAll(arrayList1,arrayList.get(j)+""+arrayList2.get(i));
            }
        }
        Collections.addAll(arrayList1,"小🃏","大🃏");
        System.out.println(arrayList1);
    }
    //洗牌
    public void shuffle_cards()
    {
        System.out.println("洗牌中(3次)...");
        int a=1;
        for(int i=0;i<=53;i++)
        {
            Collections.addAll(intdex,i);
        }
        do {
            Collections.shuffle(intdex);
            a++;
            if(a>3) break;
        }while (true);
        System.out.println(intdex);
        for (int i=51;i<=53;i++)
        {
            num4.add(intdex.get(i));
        }
//        System.out.println(num4);
    }
//    public static ArrayList<Integer> arrayList3=new ArrayList<>();//对索引进行排序,从而达到对牌的排序
    //排序
    //0-16  17-33 34-50
    public void sort_cards(int j,ArrayList arrayList00)
    {

        for (int i=j;i<=j+16;i++)
        {
           Collections.addAll(arrayList00,intdex.get(i));
           Collections.sort(arrayList00);
        }
    }
    //发牌
    public void set_cards()
        {
        int count=0;
        int i=0;
        do {
            System.out.println("给用户"+users.get(i)+"发牌");
            for (;count<=53;count++)
            {
                System.out.print(arrayList1.get(num.get(count)));
                System.out.print(" ");
            if(count==16)
                {count++;break;}
            if(count==33)
                {count++;break;}
            if(count==50)
                    break;
            }
            System.out.println();
           i++;
    }while(i<=2);

    }
//抢地主
 public void grab_landlord()
    {
//        ArrayList<String> str_h=new ArrayList<>();

        String[] str_h=new String[4];
        String str;
        for (int i=0;i<=2;i++)
        {
            System.out.println("请问用户"+users.get(i)+"抢地主吗?");
            str_h[i]=sc.next();
        }
        str_h[3]="抢";
       System.out.println(Arrays.toString(str_h));
        for ( p=0;p<=3;p++)
        {
          if(str_h[0].equals("抢"))
          {

              grab_landlord_1(num1);
              break;
          }
          if(str_h[1].equals("抢"))
          {
              grab_landlord_1(num2);
              break;
          }
          if(str_h[2].equals("不抢")||str_h[3].equals("抢"))
          {
              p=2;
              grab_landlord_1(num3);
              break;
          }


        }
        /*if (x==-1)
        {
            grab_landlord_1(num3);
        }else {
            if (x == 0) {
                grab_landlord_1(num1);
            } else if (x == 1) {
                grab_landlord_1(num2);
            } else if (x == 2) {
                grab_landlord_1(num3);
            }

        }*/

    }
    public void grab_landlord_1(ArrayList<Integer> arrayList00)
    {
        arrayList00.addAll(17,num4);
        System.out.println("用户"+users.get(p)+"为地主");
        System.out.println("增加底牌之后为:");
        Collections.sort(arrayList00);
        for (int i=0;i<=19;i++)
        {
            System.out.print(arrayList1.get(arrayList00.get(i)));
            System.out.print(" ");
        }
        System.out.println();
        System.out.println("其余两位用户为农民!");
    }
}

##用户类

package doudizhu;

import java.util.ArrayList;
import java.util.Scanner;

public class User {
    private String name;
    public static ArrayList<String> users=new ArrayList<>();
    Scanner sc=new Scanner(System.in);
    public void user()
    {
        int i=1;
        do {
            name=sc.next();
            users.add(name);
            i++;
        }while (i<=3);

    }

}

想了解前端相关内容,请参考:
https://blog.csdn.net/qq_42440991/article/details/113406863
小生不才,有自己的网站,望大家支持。
https://to24615835.jzfkw.cn/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值