java代码--斗地主

斗地主案例

*步骤:1.准备牌;

       2.洗牌;

     3.发牌;

     4.排序;

     5.看牌。

代码示例:

public class DoudizhuTest {

    public static void main(String[] args) {
        //1.准备牌
        //创建一个Map集合,储存洗好的牌和索引
        Map<Integer, String> map = new HashMap<Integer, String>();
        //创建一个List集合,用于存储牌的索引
        List<Integer> pokerList = new ArrayList<Integer>();
        //创建牌,一个花色集合,和一个牌的序号集合
        List<String> colors = new ArrayList<>();
        colors.add("♠");
        colors.add("♥");
        colors.add("♣");
        colors.add("♦");
        List<Integer> numbers = new ArrayList<>();
        numbers.add(2);
        numbers.add(1);
        for (int i = 13; i >= 3; i--) {
            numbers.add(i);
        }
        //将牌和索引存入Map集合
        int index = 0;
        map.put(index, "大");
        pokerList.add(index);
        index++;
        map.put(index, "小");
        pokerList.add(index);
        index++;
        for (String color : colors) {
            for (Integer number : numbers) {
                String s = number + color;
                map.put(index, s);
                pokerList.add(index++);
            }
        }
//        System.out.println("所有的扑克牌:"+map);
//        System.out.println("所有的pokerList:"+pokerList);

        //2.洗牌
        //使用Collections的shuffle()方法可以打烂集合
        Collections.shuffle(pokerList);
//       System.out.println("打乱后的的pokerList:"+pokerList);

        //3.发牌
        //给三个玩家和底牌分配牌
        List<Integer> dipan = new ArrayList<Integer>();
        List<Integer> player1 = new ArrayList<Integer>();
        List<Integer> player2 = new ArrayList<Integer>();
        List<Integer> player3 = new ArrayList<Integer>();
        for (int i = 0; i < pokerList.size(); i++) {
            //先发底牌
            if (i >= 51) {
                dipan.add(pokerList.get(i));
            } else if (i % 3 == 0) {
                player1.add(pokerList.get(i));
            } else if (i % 3 == 1) {
                player2.add(pokerList.get(i));
            } else if (i % 3 == 2) {
                player3.add(pokerList.get(i));
            }
        }

        //4.排序
        //使用Collections的sort()方法排序
        Collections.sort(dipan);
        Collections.sort(player1);
        Collections.sort(player2);
        Collections.sort(player3);

        //5.看牌
        System.out.print("玩家1:");
        for (Integer x : player1) {
            System.out.print(map.get(x)+" ");
        }
        System.out.println();
        System.out.print("玩家2:");
        for (Integer x : player2) {
            System.out.print(map.get(x)+" ");
        }
        System.out.println();
        System.out.print("玩家3");
        for (Integer x : player3) {
            System.out.print( map.get(x)+" ");
        }
        System.out.println();
        System.out.print("底牌:");
        for (Integer x : dipan) {
            System.out.print(map.get(x)+" ");
        }

    }
}

测试结果1:

  玩家1:10♠ 5♠ 4♠ 2♥ 11♥ 10♥ 7♥ 6♥ 3♥ 1♣ 9♣ 5♣ 3♣ 1♦ 8♦ 5♦ 4♦
  玩家2:2♠ 13♠ 12♠ 11♠ 8♠ 7♠ 13♥ 12♥ 8♥ 4♥ 2♣ 13♣ 11♣ 8♣ 6♣ 13♦ 11♦
  玩家3大 小 9♠ 6♠ 3♠ 1♥ 9♥ 5♥ 12♣ 10♣ 7♣ 4♣ 2♦ 12♦ 10♦ 9♦ 3♦
  底牌:1♠ 7♦ 6♦

测试结果2:

  玩家1:12♠ 11♠ 10♠ 6♠ 4♠ 10♥ 8♥ 6♥ 3♥ 2♣ 13♣ 1♦ 11♦ 10♦ 8♦ 5♦ 4♦
  玩家2:2♠ 1♠ 7♠ 2♥ 12♥ 1♣ 10♣ 9♣ 8♣ 7♣ 6♣ 4♣ 3♣ 2♦ 13♦ 6♦ 3♦
  玩家3小 13♠ 9♠ 8♠ 5♠ 3♠ 1♥ 9♥ 7♥ 5♥ 4♥ 12♣ 11♣ 5♣ 12♦ 9♦ 7♦
  底牌:大 13♥ 11♥

原文地址:https://www.cnblogs.com/jasonjson/p/12409041.html

时间: 2024-10-21 09:19:21

java代码--斗地主的相关文章

去除挖宝报毒的问题,修改基础包的java代码,并且打包

1:去除报毒的  yl-util-countly.jar 2:注释基础包 java 的调用到yl-util-countl的代码 3:充值编译gamebase-lib.jar 1:在项目里执行  ant release 2:生成的bin\classes.jar 就是 gamebase-lib.jar 附件为所以的java代码,只有3个需要改,注释掉了调用yl-util-countl的代码

java代码分析及分析工具

java代码分析及分析工具 一个项目从搭建开始,开发的初期往往思路比较清晰,代码也比较清晰.随着时间的推移,业务越来越复杂.代码也就面临着耦合,冗余,甚至杂乱,到最后谁都不敢碰. 作为一个互联网电子商务网站的业务支撑系统,业务复杂不言而喻.从09年开始一直沿用到现在,中间代码经过了多少人的手,留下了多少的坑,已经记不清楚了,谁也说不清了. 代码的维护成本越来越高.代码已经急需做调整和改善.最近项目组专门设立了一个小组,利用业余时间做代码分析的工作,目标对核心代码进行分析并进行设计重构. 代码分析

Tomcat使用MyEclipse远程调试Java代码配置详解

Tomcat使用MyEclipse远程调试Java代码总结如下:在做远程调试时,在windows系统和非windows系统下的配置,Tomcat中会有所差别,具体如下: 第一步.配置tomcat一.在windows系统中:打开%CATALINE_HOME%/bin下的文件catalina.bat,加入下面这行:set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket

HBbaseUtils(HBbase shell的java代码实现)

package com.yuhui.gd.hadoop.hbase; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.NavigableMap; import java.util.Set; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConf

hibernate配置文件、Java代码与数据库之间的转换

此贴适合初学者,技术大脑请绕道! 一.配置文件 第一步:建立项目工程,以hibernate01为例 第二步:点击项目名称-->Myeclipse--> Project Facets[Capabilities]-->Install Hibernate Facet-->yes 出现下图,选择Target runtime 选择next 包建立后next  配置文件完成 二.生成数据库表(在一的基础上完成) 创建所需要的类和配置文件 例如:    创建包 Test 点击运行 数据表建立成功

Kettle变量和自定义java代码的实例应用

1  kettle.properties参数配置数据源连接和FTP连接 由于测试环境和生产环境中数据库连接FTP等配置会在部署过程中变更,所以预先定义成配置项,在配置文件中修改,这样测试和发布将会变得简单,下面以数据库为例说明这类配置的使用. (1)      首先要找到配置文件,不同的操作系统路径也不一样,本人用win7进行开发,配置文件的路径为"C:\Users\chenpeng\.kettle\kettle.properties",如下: (2)      配置文件中的具体配置如

Android的WebView通过JS调用java代码

做项目时候会遇到我们用WebView 打开一个web,希望这个web可以调用自己的一些方法,比如我们在进一个web页面,然后当我们点击web上的某个按钮时,希望能判断当前手机端是否已经登录,如果未登录,那么就会跳转到登录页面(登陆页面是另一个Activity).这个时候,一个简单的做法就是在按钮动作事件的js上调用java的方法,从而起到判断是否登录,并决定是否跳转到另一个页面. Google的WebView为我们提供了 addJavascriptInterface(Object obj, St

java代码的初始化过程研究

刚刚在ITeye上看到一篇关于java代码初始化的文章,看到代码我试着推理了下结果,虽然是大学时代学的知识了,没想到还能做对.(看来自己大学时掌握的基础还算不错,(*^__^*) 嘻嘻--)但是博主写的不够详细具体,我想在这详细谈一下java代码的具体初始化过程. 首先要清楚,初始化分为两个过程:类初始化.对象初始化. 类初始化是指类加载器将类加载到内存时,对类成员的初始化过程,也就是有static修饰的变量.对于加载完的类,它的类变量都会赋一个默认值,即使你定义时就赋值了.比如int类型就是0

java代码实现:12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种?

此题参考与其他人思路, 2个解题方式. 1. 1 /** 2 * 用java代码实现:12个高矮不同的人,排成两排,每排必须是从矮到高排列,而且第二排比对应的第一排的人高,问排列方式有多少种? 3 * 状态树方式解 4 * 用状态生成树的方式来做的,先把12个人按从低到高一次编号, 5 * 从(1 ; 2)出发,加入3和4的时候生成(1,3 ; 2,4)和(1,2 ; 3,4), 6 * 然后加入5和6,分别从前面的两个状态出发,可以生成5种状态,就是说6个人时有5种排列 7 * @author