Java模拟实现斗地主的洗牌和发牌

本文实例为大家分享了Java实现斗地主的洗牌和发牌的具体代码,供大家参考,具体内容如下

案例分析:

我们需要模拟斗地主过程中的洗牌、发牌和看牌。而且要求牌是排好序的。

1.每张扑克牌都有花色和点数,所以我们可以先把花色和点数存进两个字符串数组,然后再存进集合里,而因为我们后面涉及到对牌进行洗牌还有排序等等,所以我们选择TreeMap集合来存储,键是扑克牌的编号,值是扑克牌的花色和点数(把花色和点数拼接成一个字符串)。

2.洗牌洗的是编号,我们再用ArrayList集合来存储牌的编号,调用Collections集合工具类的shuffle()方法来进行洗牌操作。

3.发牌,我们发到每个人手里的牌是排好序的,所以我们选择TreeSet集合来接收牌。

4.看牌,我们写个lookPoker()方法就行了,这个方法通过TreeSet集合来获取每个人牌对应的编号,再去TreeMap集合中的找编号对应的扑克牌。

具体步骤:

1.创建一个TreeMap集合来存储扑克牌编号和扑克牌花色及点数
2.定义两个数组分别用来存储花色和点数
3.创建一个ArrayList集合来存储编号
4.往HashMap集合中存储编号以及对应的扑克牌,同时往ArrayList集合中存储编号
5.洗牌(洗的是编号)
6.发牌(发的也是编号,为了保证扑克牌排好序,创建TreeSet集合来接收)
7.看牌(遍历TreeSet集合,获取编号,到HashMap集合中找对应的牌)

具体代码实现如下:

package com.edu_01;

import java.util.ArrayList;
import java.util.Collections;
import java.util.TreeMap;
import java.util.TreeSet;

public class Poker {
    public static void main(String[] args) {

        //1.创建一个TreeMap集合来存储扑克牌编号和扑克牌花色及点数
        TreeMap<Integer, String> pokers = new TreeMap<Integer,String>();

        //2.定义两个数组分别用来存储花色和点数
        String[] colors={"","","",""};
        String[] numbers={"3","4","5","6","7","8","9","10","J","O","K","A","2"};

        //3.创建一个ArrayList集合来存储编号
        ArrayList<Integer> indexs = new ArrayList<Integer>();

        //4.往HashMap集合中存储编号以及对应的扑克牌,同时往ArrayList集合中存储编号
        int index=0;
        for (String number : numbers) {
            for (String color : colors) {
                pokers.put(index,color+number);
                indexs.add(index);
                index++;
            }
        }
        pokers.put(index,"小王");
        indexs.add(index);
        index++;
        pokers.put(index,"大王");
        indexs.add(index);

        //5.洗牌(洗的是编号)
        Collections.shuffle(indexs);

        //6.发牌(发的也是编号,为了保证扑克牌排好序,创建TreeSet集合来接收)
        TreeSet<Integer> zhangsan = new TreeSet<Integer>();
        TreeSet<Integer> lisi = new TreeSet<Integer>();
        TreeSet<Integer> wangwu = new TreeSet<Integer>();
        TreeSet<Integer> dipai = new TreeSet<Integer>();
        for (int i = 0; i < indexs.size(); i++) {
            if(i>=indexs.size()-3){
                dipai.add(indexs.get(i));
            }else if(i%3==0){
                zhangsan.add(indexs.get(i));
            }else if(i%3==1){
                lisi.add(indexs.get(i));
            }else if(i%3==2){
                wangwu.add(indexs.get(i));
            }
        }

        //7.看牌(遍历TreeSet集合,获取编号,到HashMap集合中找对应的牌)
        lookPoker("张三",zhangsan,pokers);
        lookPoker("李四",lisi,pokers);
        lookPoker("王五",wangwu,pokers);
        lookPoker("底牌",dipai,pokers);
    }

    private static void lookPoker(String name, TreeSet<Integer> indexs,
            TreeMap<Integer, String> pokers) {
        System.out.print(name+"的牌为:");
        for (Integer index : indexs) {
            System.out.print(pokers.get(index)+"  ");
        }
        System.out.println();
    }

}

运行结果:

注意:因为我的花色是用了”♥”,”♠”,”♦”,”♣”这这几个符号,所以保存程序的时候一定要选择Save as UTF-8,不能选择OK,否则会出现乱码。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Java实战项目之斗地主和斗牛游戏的实现

    目录 一.前言 1.斗地主: 1.1运行结果: 2.斗地主升级版 2.1原理: 2.2运行结果: 3.斗牛游戏: 3.1运行结果: 一.前言 练一个斗地主小游戏,只能发看牌 1.斗地主: import java.util.ArrayList; import java.util.Collections; import java.util.Scanner; public class PokerPlay2 { public static void main(String[] args) { Array

  • 利用Java实现简单的猜数字小游戏

    目录 实现思路 代码实现 实现思路 由计算机随机产生1~100的整数.用户猜测计算机产生的数字,并输入数字,当输入的数字与计算机产生的数字相同时输出恭喜你,猜对了.当输入的数字小于计算机产生的数字输出太小了,当输入的数字大于计算机产生的数字输出太大了 可以用for循环设定游戏猜的次数,增加代码的可玩性 代码实现 import java.util.Random; import java.util.Scanner; public class User { public static void mai

  • java集合模拟实现斗地主洗牌和发牌

    本文实例为大家分享了java实现斗地主洗牌和发牌的具体代码,供大家参考,具体内容如下 1:用ArrayList集合实现 案例分析: 我们现在要做的是模拟斗地主小游戏来进行洗牌和发牌. 具体步骤: A:首先,创建一个ArrayList集合来存储牌,将牌的花色和点数存储在俩个字符串数组中中,然后用for循环加强遍历将每张牌的花色点数及大王小王存储在集合中. B:进行洗牌,调用collectionas的shuffle方法. C:进行发牌,创建四个ArrayList集合,分别用来存储玩家一,玩家二,玩家

  • Java实现猜数字小游戏代码

    目录 ▲游戏规则: ▲实现思路: 实验结果: 总结 ▲游戏规则: 系统随机生成一个范围0——100的数,用户输入数字,判断该数字是大于,小于,还是等于随机生成的数字,等于的时候退出程序. ▲实现思路: 我们首先要解决的的是随机数,若这个数是我们人为设置的就没有意思了.在Java中的java.util包中提供了一个Random类,可以实现系统输入.随机数解决之后就成功了一半了,接下来看代码如何执行吧. import java.util.Random; import java.util.Scanne

  • Java超详细教你写一个斗地主洗牌发牌系统

    目录 一.斗地主 1.前言 2.介绍 3.图解 二.准备牌 1.代码示例 2.数据展示 三.洗发牌与排序 代码示例 四.看牌(打印到控制台) 1.代码示例 2.展示 六.总结 一.斗地主 1.前言 相信每位看过<赌神>的同学都知道,里面有一种神奇的类似于魔术的力量. 没错!我们今天要说的这个神奇的东西就是:特异功能(不是) 就是:斗地主的洗牌发牌系统!!! 2.介绍 扑克牌经典游戏"斗地主"相信很多人都会玩,这次就用Java语言来编写一个斗地主的洗牌发牌程序,要求按照斗地主

  • Java实现斗地主与猜数字游戏详细流程

    目录 斗地主小游戏之洗牌发牌 任务描述 运行结果 任务目标 实现思路 实现代码 猜数字游戏 任务描述 运行结果 任务目标 实现思路 实现代码 总结 斗地主小游戏之洗牌发牌 任务描述 编写一个斗地主发牌洗牌的程序,要求按照斗地主的规则完成洗牌发牌的过程,牌面由花色色和数字(包括J,Q,K,A字母)组成,花色有红桃,黑桃,方块,梅花组成.还设有大王和小王.将这54张牌的顺序打乱,有三位玩家参与游戏,每人轮流一次摸一张牌,剩余的三张作为底牌,程序结束,打印出每人手中的纸牌和底牌. 运行结果 任务目标

  • Java模拟实现斗地主发牌

    本文实例为大家分享了Java模拟实现斗地主发牌的具体代码,供大家参考,具体内容如下 题目: 模拟斗地主的发牌实现,54张牌,每张牌不同的花色(红心,黑桃,方块,梅花),牌的点数(3,4,5,6,7,8,9,10,J,Q,K,A,2,King,Queen),另有三名玩家,要求(使用面向对象的方式实现): 1.随机产生一名地主 2.随机向三名玩家发牌,最后的底牌自动发给地主 3.显示出每名玩家手中的牌 4.要求根据点数自动对玩家手中的牌排序实现(*) 提示:玩家类,牌类,游戏类(算法) 步骤分析:

  • Java模拟实现斗地主的洗牌和发牌

    本文实例为大家分享了Java实现斗地主的洗牌和发牌的具体代码,供大家参考,具体内容如下 案例分析: 我们需要模拟斗地主过程中的洗牌.发牌和看牌.而且要求牌是排好序的. 1.每张扑克牌都有花色和点数,所以我们可以先把花色和点数存进两个字符串数组,然后再存进集合里,而因为我们后面涉及到对牌进行洗牌还有排序等等,所以我们选择TreeMap集合来存储,键是扑克牌的编号,值是扑克牌的花色和点数(把花色和点数拼接成一个字符串). 2.洗牌洗的是编号,我们再用ArrayList集合来存储牌的编号,调用Coll

  • Java实现斗地主之洗牌发牌

    本文通过实例为大家分享了Java实现斗地主之洗牌发牌的具体代码,供大家参考,具体内容如下 案例分析 需求: 实现斗地主过程中的洗牌,发牌和看牌. 并且确保每一位玩家手上拿到的牌是随机并且按照大小排序好的 思路 1.创建一个牌盒,也就是定义一个集合对象,用ArrayList集合实现 2.往牌盒里面装牌 3.洗牌,也就是把牌打散,用Collections的shuffle()方法实现 4.发牌,也就是遍历结合,给三个玩家发牌 5.看牌,也就是三个玩家分别遍历自己的牌 代码实现 1.创建牌盒,存放所有牌

  • Java模拟实现扑克牌洗牌和发牌的示例代码

    目录 一. 需求 二. 全局代码 poker.java pokers.java 三. 设计分析 1. 设计一张扑克牌 2. 得到一副新牌 3. 洗牌 4. 发牌 一. 需求 设计一副新的的扑克牌, 4个花色(♥, ♠, ♦, ♣)对应 1 到 13 , 不算大小王一共52张牌 ; 然后将扑克牌随机打乱顺序 , 最后实现三个人进行摸牌 , 三个人轮流进行摸牌(每次摸一张牌) , 最终每个人手里有五张牌 二. 全局代码 poker.java public class poker { private

  • java和js实现的洗牌小程序

    这几天刚学了java和javascript,简单写了个用java和javascript的小程序 JavaScript的 // An highlighted block var colors = ['红桃','梅花','方片','黑桃'] var numbers = ['2','3','4','5','6','7','8','9','10','J','Q','K','A'] var puke = new Array(); var cards = new Array(); for (var i =

  • C语言实现洗牌与发牌游戏

    本文实例为大家分享了C语言实现洗牌与发牌游戏的具体代码,供大家参考,具体内容如下 普通版 #include<stdio.h> #include<stdlib.h> #include<time.h> #define SUITS 4 #define FACES 13 #define CARDS 52 void shuffle(int wDeck[][FACES]); void send(int wDeck[][FACES], const char* wSuit[], con

  • java模拟实现斗地主发牌小程序

    一副扑克有54张牌:大小王+4*13,接下来我们来模拟一下斗地主的发牌过程 首先,我们需要买牌,新买来的牌都是按顺序摆放的,因此下一步是洗牌,最后就是发牌了,不过发牌的时候要注意还要在最后留三张底牌. 主要使用的类有 ArrayList:用来存储扑克,Collections用来洗牌. import java.util.ArrayList; import java.util.Collections; /* * 模拟斗地主发牌 一共54张牌 * 买牌 * 洗牌 * 发牌 * */ public cl

  • Java实现扑克牌洗牌和发牌

    本文实例为大家分享了Java实现扑克牌洗牌发牌的具体代码,供大家参考,具体内容如下 实现原理:使用4种花色和13个数字组合成52张牌,放进一个集合中:通过把集合数据排序打乱实现洗牌操作,然后在通过循环把牌抽出来实现发牌操作. 下面是实现代码: import java.util.ArrayList; import java.util.Collections; public class Card { private static ArrayList<String> list = new Array

随机推荐