java案例-实现斗地主游戏案例
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案例-实现斗地主游戏案例相关推荐
- 79-Java案例:斗地主游戏
案例:斗地主游戏 一.需求 在启动游戏房间的时候,应该提前准备好54张牌,完成洗牌.发牌.牌排序.逻辑. 二.分析 当系统启动的同时需要准备好数据的时候,就可以用静态代码块了. 洗牌就是打乱牌的顺序. ...
- java poker_Java超级高手成长之路!一个Java编写的斗地主游戏
原标题:Java超级高手成长之路!一个Java编写的斗地主游戏 "斗地主"是全国民间流行的一款扑克牌娱乐游戏,游戏最少由3个玩家进行,最多5人,游戏逻辑简单易于上手,老少皆宜,是我 ...
- Java 基础实现斗地主游戏
**实现成果** package com.tedu.ApI.Set;/**扑克牌 对象* @author nzy* @create 2022-03-05 16:54*/ public class Ca ...
- Eclipse+Java+Swing实现斗地主游戏
Java+Swing实现斗地主游戏 一.系统介绍 二.系统展示 1.扑克分发 2.抢地主 3.出牌 4.游戏胜利 三.系统实现 Card.java CardType.java Common.java ...
- java大作业斗地主游戏_Java集合练习:斗地主游戏
这是一个模拟斗地主的小游戏,最后看到的牌型是经过排序的,具体代码和解释如下: package cn.poker_test; import java.util.ArrayList; import jav ...
- java斗地主随机发牌_使用Java实现斗地主游戏的发牌过程
package com.review.test; import java.util.ArrayList; import java.util.Collections; import java.util. ...
- java实现一个简单的斗地主游戏
使用Java编写一个斗地主游戏需要一定的编程知识和技能,例如面向对象编程.集合框架.GUI等.下面是一个简单的斗地主游戏的代码示例: import java.util.ArrayList; impor ...
- Java+Swing实现五子棋游戏
目录 一.系统介绍 1.开发环境 2.技术选型 3.系统功能 二.系统展示 1.首页 2.黑棋走 3.白棋走 三.部分代码 AI.java Chess.java Gobang.java GobangL ...
- java语言基础(七):Collection、泛型、案例:斗地主
目录 主要内容 教学目标 一.Collection集合 1.1 集合概述 1.2 集合框架 1.3 Collection 常用功能 二. Iterator迭代器 2.1 Iterator接口 2.1. ...
最新文章
- Ubuntu 搜狗输入法不能输入中文解决
- Android里的shell的系统命令
- when is odata request sent for Live report in SAP CRM
- icd11中文版精神障碍pdf_精神与行为障碍类别目录(ICD-11)
- 华锋e路航x10升级工具_万商云集:疫情下火爆的电子合同,背后是企业数字化升级的必然...
- 软件开发工程师应该具备哪些证书_智能展厅设计应该具备哪些特点?
- 人工智能将是人类最后的需要 | 大咖来了
- 深度解读CSS3 position的属性
- 回文数 详解(C++)
- 常见消息中间件大 PK
- sqlcipher 加密解密工具使用详解
- 静态单赋值(二)—gcc中的SSA化算法
- 苏州蜗牛面试感想 ------- 知其然而不知其所以然
- 六月集训(第21天) —— 堆(优先队列)
- 大恒相机开发问题(错误码: -8)无法打开相机
- vue buid打包,修改环境变量
- 使用vue来实现当当网
- ajax分页功能实现php,详解AJAX分页效果的简单实现
- 凝思系统查看防火墙_凝思linux VNC远程桌面,8个步骤完成凝思linux VNC远程桌面...
- IEEE期刊论文撰写要求
热门文章
- 人工智能---深度学习是什么
- 最新昆石VOS2009/VOS3000手机号段导入文件(手机归属地)
- html5虚拟试衣,Trylive Clothing虚拟试衣系统 打造属于你个人的魔法试衣间
- 如何压缩图片到500KB?怎么压缩图片到指定大小?
- c语言发票的编码,增值税普通发票(折叠票)的发票代码有几位?
- 安卓:三分钟实现物流配送页面(时间轴效果)
- 团队任务3每日立会(2018-10-26)
- 【数据异常校验】拉依达准则( PauTa Criterion 或 3σ准则) 处理异常数据
- 【小迪安全】Day04基础入门-30 余种加密编码进制Web数据库系统代码参数值
- iOS面试攻略,你必须拥有