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

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

(1)无序

import java.util.ArrayList;
import java.util.Collections;

/*

模拟斗地主的洗牌和发牌

  • *思路:

  • 1)创建一个牌盒(容器:集合)
  • ArrayList<String>
  • 2)装牌
  • 定义花色数组和点数数组(A,K)
  • 红桃A
  • 黑桃A
  • 梅花A
  • 方片A
  • ....
  • 3)洗牌
  • Collections中的随机置换的功能
  • 4)发牌
  • 遍历集合(获取集合中的具体的牌)
  • 需要判断:选择结构语句
  • 1--->A 2--->B 3----C
  • 4---A .................
  • 斗地主三个玩
  • 发个三个人----->三个人分别ArrayList<String>
  • 如果当前牌 % 3 ==0/1/2
  • 5)看牌
  • 三个人看牌:将看牌封装成一个功能(独立的 代码块)
  • */

    public class Poker {

    public static void main(String[] args) {

    //1.创建牌盒ArrayList
    array = new ArrayList
    () ;//2.装牌//2.1创建花色数组String[] colors = {"♥","♠","♣","♦"} ;//2.2 创建点数数组String[] numbers = {"A","2","3","4","5","6","7","8","9", "10","J","Q","K"} ;for(String color :colors) { for(String number:numbers) { String poker = color.concat(number) ; array.add(poker) ; }}//添加小王和大王array.add("小王") ;array.add("大王") ;//3. 洗牌Collections.shuffle(array);//4.发牌//现在三个人玩,把每一个看成集合ArrayListArrayList
    player1 = new ArrayList
    () ;ArrayList
    player2 = new ArrayList
    () ;ArrayList
    player3 = new ArrayList
    () ;ArrayList
    diPai = new ArrayList
    () ;//有规律的:遍历ArrayList集合 使用普通for循环,获取到集合的元素//通过元素 % 人数 = 0 /1/2 /..for(int x = 0 ; x < array.size() ; x ++) { //获取到每一个元素 if(x >= array.size() -3) { diPai.add(array.get(x)) ; }else if(x % 3 == 0) { //玩家1 player1.add(array.get(x)) ; }else if(x % 3 == 1) { //玩家2 player2.add(array.get(x)) ; }else if(x % 3 == 2) { player3.add(array.get(x)) ; }}//5)看牌

    // * 三个人看牌:将看牌封装成一个功能(独立的 代码块)

    lookPoker("玩家1", player1);
    lookPoker("玩家2", player2);
    lookPoker("玩家3", player3);
    lookPoker("底牌", diPai);
    }

    public static void lookPoker(String name,ArrayList<String> array) {

    System.out.print(name+"的牌是:");
    for(String s : array) {
    System.out.print(s+" ");
    }
    System.out.println();
    }
    }
    (2)有序
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.HashMap;
    import java.util.TreeSet;

/**

  • 模拟斗地主的洗牌和发牌,发到每一个手上的牌是保证有序的.. 思考: 1)创建牌盒
  • 创建两个集合:HashMap<Integer,String>,ArrayList<Integer> 2)装牌 定义花色数组和点数数组
  • 从0开始编号,将编号和编号对应的牌都存储到HashMap集合中,同时往ArrayList单独存储编号 3)洗牌 洗的是编号 4)发牌
  • 发的也是编号,为了保证牌有序,集合由TreeSet集合接收 5)看牌 封装功能
  • */

    public class Porker2 {

    public static void main(String[] args) {

    // 1. 创建两个集合:HashMap<Integer,String>,ArrayList<Integer>
    HashMap<Integer, String> hm = new HashMap<Integer, String>();
    ArrayList<Integer> array = new ArrayList<Integer>();

    // 2.装牌// 2.1 定义花色数组和点数数组String[] colors = { "♥", "♠", "♣", "♦" };String[] numbers = { "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2" };// 从0开始编号,将编号和编号对应的牌都存储到HashMap集合中,同时往ArrayList单独存储编号int index = 0;// 拼接for (String number : numbers) {    for (String color : colors) {        String poker = color.concat(number);        hm.put(index, poker);        array.add(index);        index++;    }}// 装小王和大王hm.put(index, "小王");array.add(index);index++;hm.put(index, "大王");array.add(index);// 不能++了,角标越界// 洗牌Collections.shuffle(array);// 4)发牌// 发的也是编号,为了保证牌有序,集合由TreeSet集合接收TreeSet
    player1 = new TreeSet
    ();TreeSet
    player2 = new TreeSet
    ();TreeSet
    player3 = new TreeSet
    ();TreeSet
    diPai = new TreeSet
    ();// 有规律的:遍历ArrayList集合 使用普通for循环,获取到集合的元素// 通过元素 % 人数 = 0 /1/2 /..for (int x = 0; x < array.size(); x++) { // 获取到每一个元素 if (x >= array.size() - 3) { diPai.add(array.get(x)); } else if (x % 3 == 0) { // 玩家1 player1.add(array.get(x)); } else if (x % 3 == 1) { // 玩家2 player2.add(array.get(x)); } else if (x % 3 == 2) { player3.add(array.get(x)); }}

    // 5)看牌 封装功能

    lookPoker("玩家1", player1, hm);
    lookPoker("玩家2", player2, hm);
    lookPoker("玩家3", player3, hm);
    lookPoker("底牌", diPai, hm);

    }

    public static void lookPoker(String name,TreeSet<Integer> ts,

    HashMap<Integer, String> hm) {
    System.out.print(name+"的牌是:");
    //遍历TreeSet集合获取到每一个编号
    for(Integer key :ts) {
    //获取到编号,通过编号找牌(在HashMap中找)
    String value = hm.get(key) ;
    System.out.print(value+" ");
    }
    System.out.println();
    }
    }

转载于:https://blog.51cto.com/13670525/2117644

你可能感兴趣的文章
linux之权限之隐藏权限
查看>>
XDCTF成长记录
查看>>
registered the JDBC driver [com.mysql.jdbc.Driver]
查看>>
Linux系统中的文本处理工具
查看>>
IDE---Python IDE之Eric5在window下的安装
查看>>
python---LineReceiver实现记录服务器
查看>>
Mybatis调用Oracle中的存储过程和function
查看>>
telnet :No route to host
查看>>
基本安装lnmp环境
查看>>
yum源资料汇总
查看>>
7、MTC与MTV,http请求介绍
查看>>
logstash消费阿里云kafka消息
查看>>
第四节课作业
查看>>
EasyUI Calendar 日历
查看>>
unix 环境高级编程
查看>>
为数据库建立索引
查看>>
第二周作业-软件工作量的估计
查看>>
我的wordpress插件总结
查看>>
MAXIMO 快速查找实现
查看>>
Oracle——条件控制语句
查看>>