java案例-实现斗地主游戏案例

1.需求分析:

模拟斗地主游戏,利用集合,Map实现斗地主的逻辑,并且可以看分派好的牌

2.具体实现:

(1)在牌盒(字符串数组)存储四个花色:

String[] colors={"♣","♥","♠","♦"};

(2)(字符串数组)存储点数,按照斗地主游戏规则由大到小3~2:

String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2",};

(3)在Map中存储键值对,键是索引值,值是花色和点数组成的字符串,索引用来指定派,利用索引进行洗牌操作

(4)把索引值存储到ArrayList集合中,以便进行洗牌操作

(5)利用集合工具类Collections的shuffle()方法实现洗牌功能

(6)按照斗地主的发牌规则发牌,这里发的是洗牌操作之后的索引值

(7)调用lookPoker()方法,看牌

3.代码实现:

(1)main()方法:

分析:按照具体实现的分析,一步一步实现对应的操作。主要是利用集合工具类的方法实现了洗牌操作,游戏规则才能建立起来:

public static void main(String[] args) {//创建Map集合,键存索引,值存花色和点数组成的字符串HashMap<Integer, String> hashmap = new HashMap<Integer,String>();//创建ArrayList集合,存储map集合的索引ArrayList<Integer> indexs = new ArrayList<Integer>();// 给牌盒中添加元素,花色String[] colors={"♣","♥","♠","♦"};//存储点数,按斗地主的规则,从大到小,3~2String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2",};//建立索引int index = 0;//在集合HashMap中存储键(索引值)和值(花色和点数),并把索引存放到ArrayList集合中for (String number : numbers) {for (String color : colors) {hashmap.put(index, (color+number));indexs.add(index);index++;}}//额外的把大王和小王放到HashMap中,并把索引加到ArrayList集合中indexs.add(index);hashmap.put(index, "小王");index++;indexs.add(index);hashmap.put(index, "大王");//洗牌(洗索引),利用集合工具类Collections的shuffle()实现洗牌功能Collections.shuffle(indexs);//发牌发索引,但是发完索引之后必须让索引有序,即玩家手中的牌有序TreeSet<Integer> treeset1 = new TreeSet<Integer>();TreeSet<Integer> treeset2 = new TreeSet<Integer>();TreeSet<Integer> treeset3 = 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){treeset1.add(indexs.get(i));}else  if(i%3==1){treeset2.add(indexs.get(i));}else  if(i%3==2){treeset3.add(indexs.get(i));}}System.out.println("                欢迎来到欢乐斗地主!!!");//调用lookPoker()方法,看牌lookPoker("Ag1",treeset1,hashmap);lookPoker("Ag2",treeset2,hashmap);lookPoker("Ag3",treeset3,hashmap);lookPoker("dipai",dipai,hashmap);}

(2)lookPoker()方法:

分析:看牌方法主要就是一个遍历打印的作用,把传递过来的姓名以及手牌打印出来:

private static void lookPoker(String name, TreeSet<Integer> treeset,HashMap<Integer, String> hashmap) {//根据获取到的索引,取出牌System.out.print(name+"的牌:  ");for (Integer index : treeset) {System.out.print(hashmap.get(index)+"  ");}System.out.println();}

4.运行截图:

5.案例总结:

此案例本身的实现没有太大困难,主要就是利用好集合,Map,集合工具类的特点,加以组合,就能实现。

java案例-实现斗地主游戏案例相关推荐

  1. 79-Java案例:斗地主游戏

    案例:斗地主游戏 一.需求 在启动游戏房间的时候,应该提前准备好54张牌,完成洗牌.发牌.牌排序.逻辑. 二.分析 当系统启动的同时需要准备好数据的时候,就可以用静态代码块了. 洗牌就是打乱牌的顺序. ...

  2. java poker_Java超级高手成长之路!一个Java编写的斗地主游戏

    原标题:Java超级高手成长之路!一个Java编写的斗地主游戏 "斗地主"是全国民间流行的一款扑克牌娱乐游戏,游戏最少由3个玩家进行,最多5人,游戏逻辑简单易于上手,老少皆宜,是我 ...

  3. Java 基础实现斗地主游戏

    **实现成果** package com.tedu.ApI.Set;/**扑克牌 对象* @author nzy* @create 2022-03-05 16:54*/ public class Ca ...

  4. Eclipse+Java+Swing实现斗地主游戏

    Java+Swing实现斗地主游戏 一.系统介绍 二.系统展示 1.扑克分发 2.抢地主 3.出牌 4.游戏胜利 三.系统实现 Card.java CardType.java Common.java ...

  5. java大作业斗地主游戏_Java集合练习:斗地主游戏

    这是一个模拟斗地主的小游戏,最后看到的牌型是经过排序的,具体代码和解释如下: package cn.poker_test; import java.util.ArrayList; import jav ...

  6. java斗地主随机发牌_使用Java实现斗地主游戏的发牌过程

    package com.review.test; import java.util.ArrayList; import java.util.Collections; import java.util. ...

  7. java实现一个简单的斗地主游戏

    使用Java编写一个斗地主游戏需要一定的编程知识和技能,例如面向对象编程.集合框架.GUI等.下面是一个简单的斗地主游戏的代码示例: import java.util.ArrayList; impor ...

  8. Java+Swing实现五子棋游戏

    目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 二.系统展示 1.首页 2.黑棋走 3.白棋走 三.部分代码 AI.java Chess.java Gobang.java GobangL ...

  9. java语言基础(七):Collection、泛型、案例:斗地主

    目录 主要内容 教学目标 一.Collection集合 1.1 集合概述 1.2 集合框架 1.3 Collection 常用功能 二. Iterator迭代器 2.1 Iterator接口 2.1. ...

最新文章

  1. Ubuntu 搜狗输入法不能输入中文解决
  2. Android里的shell的系统命令
  3. when is odata request sent for Live report in SAP CRM
  4. icd11中文版精神障碍pdf_精神与行为障碍类别目录(ICD-11)
  5. 华锋e路航x10升级工具_万商云集:疫情下火爆的电子合同,背后是企业数字化升级的必然...
  6. 软件开发工程师应该具备哪些证书_智能展厅设计应该具备哪些特点?
  7. 人工智能将是人类最后的需要 | 大咖来了
  8. 深度解读CSS3 position的属性
  9. 回文数 详解(C++)
  10. 常见消息中间件大 PK
  11. sqlcipher 加密解密工具使用详解
  12. 静态单赋值(二)—gcc中的SSA化算法
  13. 苏州蜗牛面试感想 ------- 知其然而不知其所以然
  14. 六月集训(第21天) —— 堆(优先队列)
  15. 大恒相机开发问题(错误码: -8)无法打开相机
  16. vue buid打包,修改环境变量
  17. 使用vue来实现当当网
  18. ajax分页功能实现php,详解AJAX分页效果的简单实现
  19. 凝思系统查看防火墙_凝思linux VNC远程桌面,8个步骤完成凝思linux VNC远程桌面...
  20. IEEE期刊论文撰写要求

热门文章

  1. 人工智能---深度学习是什么
  2. 最新昆石VOS2009/VOS3000手机号段导入文件(手机归属地)
  3. html5虚拟试衣,Trylive Clothing虚拟试衣系统 打造属于你个人的魔法试衣间
  4. 如何压缩图片到500KB?怎么压缩图片到指定大小?
  5. c语言发票的编码,增值税普通发票(折叠票)的发票代码有几位?
  6. 安卓:三分钟实现物流配送页面(时间轴效果)
  7. 团队任务3每日立会(2018-10-26)
  8. 【数据异常校验】拉依达准则( PauTa Criterion 或 3σ准则) 处理异常数据
  9. 【小迪安全】Day04基础入门-30 余种加密编码进制Web数据库系统代码参数值
  10. iOS面试攻略,你必须拥有