按照斗地主的规则,完成洗牌发牌的动作。 ♣♦♠♥ 大☺小☺ 具体规则: 使用54张牌打乱顺序 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌。

package DouDiZhu;
//定义i玩家A类
import java.util.ArrayList;

public class A {
    String name;
        //定义一个集合,存储牌,泛型为String类型
    ArrayList<String> list = new ArrayList<>();
    //定义方法,取牌
    public void na(ArrayList<String> list1){
        String s = list1.remove(0);
        list.add(s);
    }
    //定义方法展示自己的牌
    public void show(){
        System.out.println("玩家"+this.name+"手里的牌为:");
        //用增强for循环遍历集合list来取出牌
        for(String lis:list){
            System.out.print(" "+lis);
        }
        System.out.println();
//        System.out.println("******************************");
    }

    public A(String name) {
        this.name = name;
    }
}

其他两个类也和这个类一样,就不写了。直接写牌类

package DouDiZhu;

import java.util.ArrayList;
import java.util.Random;

public class DiPai {
//定义集合存储牌
   ArrayList<String> list1 = new ArrayList<>();
   public void chou(ArrayList<String> list){
       int count = 53;
       for (int i = 0; i < 3; i++) {
           String s = list.remove(count);
           list1.add(s);
           count--;
       }
   }
   public void show(){
       System.out.println("底牌为:");
       for(String lis:list1){
           System.out.print(" "+lis);
       }
       System.out.println();
//        System.out.println("******************************");
   }
}

///
package DouDiZhu;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.Random;

public class Demo {
    public static void main(String[] args) {
        ArrayList<String> list = pai();
        DiPai dp = new DiPai();
        A a = new A("豆豆");
        B b = new B("弟弟");
        C c = new C("猪猪");
        System.out.println("开始");
        dp.chou(list);
        while(list.size() != 0){
            a.na(list);
            b.na(list);
            c.na(list);
        }
        dp.show();
        a.show();
        b.show();
        c.show();
    }
    public static ArrayList<String> pai(){
        ArrayList<String> list3 = new ArrayList<>();
        ArrayList<String> list = new ArrayList<>();
        list.add("黑❤");
        list.add("红❤");
        list.add("■");
        list.add("♣");
        ArrayList<Integer> list1 = new ArrayList<>();
        int count = 1;
        for (int i = 0; i < 13; i++) {
            list1.add(count);
            count++;
        }
        for(String lis:list){
            for(Integer it:list1){
                list3.add(lis+it);
            }
        }
        list3.add("大☺");
        list3.add("小☺");
        Collections.shuffle(list3);
        return list3;
    }
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,这是一个比较复杂的问题,需要分多个步骤实现。首先需要定义一个扑克牌的类,这个类包括花色和数字两个属性。然后需要定义一个斗地主的类,这个类包括洗牌发牌、排序等功能。最后需要编写一个主方法,来调用斗地主类的功能,并打印出结果。 下面是一个简单的示例代码,实现了洗牌发牌功能,你可以参考一下: ``` import java.util.*; public class Poker { private String suit; //花色 private String rank; //数字 public Poker(String suit, String rank) { this.suit = suit; this.rank = rank; } public String toString() { return suit + rank; } public static void main(String[] args) { List<Poker> pokers = new ArrayList<>(); String[] suits = {"♠", "♥", "♦", "♣"}; String[] ranks = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"}; // 初始化 54 张牌 for (String suit : suits) { for (String rank : ranks) { pokers.add(new Poker(suit, rank)); } } pokers.add(new Poker("", "小")); pokers.add(new Poker("", "大☻")); // 洗牌 Collections.shuffle(pokers); // 发牌 List<Poker> player1 = new ArrayList<>(); List<Poker> player2 = new ArrayList<>(); List<Poker> player3 = new ArrayList<>(); List<Poker> bottom = new ArrayList<>(); for (int i = 0; i < pokers.size(); i++) { if (i >= 51) { bottom.add(pokers.get(i)); } else if (i % 3 == 0) { player1.add(pokers.get(i)); } else if (i % 3 == 1) { player2.add(pokers.get(i)); } else { player3.add(pokers.get(i)); } } // 排序 Collections.sort(player1, new Comparator<Poker>() { @Override public int compare(Poker o1, Poker o2) { return getRankValue(o2.rank) - getRankValue(o1.rank); } }); Collections.sort(player2, new Comparator<Poker>() { @Override public int compare(Poker o1, Poker o2) { return getRankValue(o2.rank) - getRankValue(o1.rank); } }); Collections.sort(player3, new Comparator<Poker>() { @Override public int compare(Poker o1, Poker o2) { return getRankValue(o2.rank) - getRankValue(o1.rank); } }); Collections.sort(bottom, new Comparator<Poker>() { @Override public int compare(Poker o1, Poker o2) { return getRankValue(o2.rank) - getRankValue(o1.rank); } }); // 输出结果 System.out.println("player1: " + player1); System.out.println("player2: " + player2); System.out.println("player3: " + player3); System.out.println("bottom: " + bottom); } // 获取牌面数字的值 private static int getRankValue(String rank) { if (rank.equals("2")) return 1; else if (rank.equals("A")) return 2; else if (rank.equals("K")) return 3; else if (rank.equals("Q")) return 4; else if (rank.equals("J")) return 5; else return 6; } } ``` 这段代码定义了一个 Poker 类,包括花色和数字两个属性,以及一个斗地主的主方法。在主方法,首先初始化 54 张牌,然后进行洗牌操作,接着按照规则进行发牌和排序,并最终输出结果。 注意,这只是一个简单的示例代码,实际的斗地主游戏还需要考虑很多细节问题,比如如何判断牌型、如何出牌等等。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小故事呀

您的打赏是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值