博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二维数组---模拟斗地主
阅读量:5969 次
发布时间:2019-06-19

本文共 2958 字,大约阅读时间需要 9 分钟。

package com.pb.demo;import java.util.Arrays;import java.util.Random;/** * 扑克牌随机发牌♠♥♣♦ 二维数组实现 *  */public class Puker {    public static void main(String[] args) {        // 定义数组        String[][] puker = new String[5][];        puker[0] = new String[] { "♠A", "♠2", "♠3", "♠4", "♠5", "♠6", "♠7",                "♠8", "♠9", "♠10", "♠J", "♠Q", "♠K" };        puker[1] = new String[] { "♥A", "♥2", "♥3", "♥4", "♥5", "♥6", "♥7",                "♥8", "♥9", "♥10", "♥J", "♥Q", "♥K" };        puker[2] = new String[] { "♣A", "♣2", "♣3", "♣4", "♣5", "♣6", "♣7",                "♣8", "♣9", "♣10", "♣J", "♣Q", "♣K" };        puker[3] = new String[] { "♦A", "♦2", "♦3", "♦4", "♦5", "♦6", "♦7",                "♦8", "♦9", "♦10", "♦J", "♦Q", "♦K" };        puker[4] = new String[] { "大王", "小王" };        // 定义3个玩家和底牌        String[] player1 = new String[17];        String[] player2 = new String[17];        String[] player3 = new String[17];        String[] temp = new String[3];        // 二维数据洗牌        Random random = new Random();        int i1 = 0, i2 = 0, j1 = 0, j2 = 0;// 定义4个变量,用来存放数组的下标        // 洗牌1000次        for (int i = 0; i < 1000; i++) {            // 下标i1等于,随机0~4的整数 一维的下标            i1 = random.nextInt(5); // 0~4之间            if (i1 == 4) {                // 如果一维的下标是4,则2维的的元素只有2个大王和小王,只有2个元素                j1 = random.nextInt(2);            } else {                // 如果不是4,则有13张牌                j1 = random.nextInt(13); // 0~12 共13个元素            }            // 因为最短的数组是2个元素,所以要2次,如果是多个就要多次            i2 = random.nextInt(5);            if (i2 == 4) {                j2 = random.nextInt(2);            } else {                j2 = random.nextInt(13);            }            // 开始洗牌            String tmp = puker[i1][j1];            puker[i1][j1] = puker[i2][j2]; // 洗牌法,交换,打乱顺序            puker[i2][j2] = tmp;        }        // 洗牌后的牌        System.out.println("===========洗牌后的顺序============");        for (int i = 0; i < puker.length; i++) {            for (int j = 0; j < puker[i].length; j++) {                System.out.print(puker[i][j] + "  ");            }        }        // 开始发牌        for (int i = 0; i < 54; i++) {            int p = i % 3; // 定义发给哪个玩家            int k = i / 3 - 1; // 定义轮次            if (i < 3) {                // 先扣下三张底牌                temp[i] = puker[i / 13][i % 13]; // 从前向回取3张,估做底牌            } else if (p == 0) {                player1[k] = puker[i / 13][i % 13];            } else if (p == 1) {                player2[k] = puker[i / 13][i % 13];            } else if (p == 2) {                player3[k] = puker[i / 13][i % 13];            }        }        System.out.println("\n==========发牌完成=============");        // 玩家一        System.out.println("玩家一" + Arrays.toString(player1));        // 玩家二        System.out.println("玩家二" + Arrays.toString(player2));        // 玩家三        System.out.println("玩家三" + Arrays.toString(player3));        // 底牌        System.out.println("底牌" + Arrays.toString(temp));    }}

 

转载地址:http://tdwox.baihongyu.com/

你可能感兴趣的文章
交互设计[3]--点石成金
查看>>
SCCM TP4部署Office2013
查看>>
Android创建启动画面
查看>>
Linux中date命令的各种实用方法--转载
查看>>
mysqld -install命令时出现install/remove of the service denied错误的原因和解决办法
查看>>
苹果企业版帐号申请记录
查看>>
C++ Error: error LNK2019: unresolved external symbol
查看>>
Bitmap 和Drawable 的区别
查看>>
Java操作mongoDB2.6的常见API使用方法
查看>>
如何给服务器设置邮件警报。
查看>>
麦克劳林
查看>>
Eclipse SVN修改用户名和密码
查看>>
架构师的职责都有哪些?
查看>>
SVN: bdb: BDB1538 Program version 5.3 doesn't match environment version 4.7
查看>>
jsp内置对象作业3-application用户注册
查看>>
android115 自定义控件
查看>>
iOS uuchart 用法
查看>>
c# 多线程 调用带参数函数
查看>>
JQuery 如何选择带有多个class的元素
查看>>
The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml or the jar
查看>>