Java集合练习:斗地主游戏

这是一个模拟斗地主的小游戏,最后看到的牌型是经过排序的,具体代码和解释如下:

package cn.poker_test;

import java.util.ArrayList;

import java.util.Collections;

import java.util.HashMap;

import java.util.TreeSet;

/*

* 模拟斗地主小游戏

*

* 思路:

* A:创建一个HashMap集合

* B:创建一个ArrayList集合

* C:创建花色数组和点数数组

* D:从0开始往HashMap里面存储编号,并存储对应的牌

* 同时往ArrayList里面存储编号即可

* E:洗牌(洗的是编号)

* F:发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收)

* G:看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)

*/

public class PokerGameDemo {

public static void main(String[] args) {

// 创建一个HashMap集合

HashMap<Integer, String> hm = new HashMap<Integer, String>();

// 创建一个ArrayList集合

ArrayList<Integer> array = new ArrayList<Integer>();

// 创建花色数组和点数数组

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);

//发牌(发的也是编号,为了保证编号是排序的,就创建TreeSet集合接收

TreeSet<Integer> zhangXiaoQi = new TreeSet<Integer>();

TreeSet<Integer> meiChangSu = new TreeSet<Integer>();

TreeSet<Integer> linQingXia = new TreeSet<Integer>();

TreeSet<Integer> diPai = new TreeSet<Integer>();

for(int x=0;x<array.size();x++) {

if(x>array.size()-4) {

diPai.add(array.get(x));

} else if(x%3==0) {

zhangBingWei.add(array.get(x));

} else if(x%3==1) {

meiChangSu.add(array.get(x));

} else if(x%3==2) {

linQingXia.add(array.get(x));

}

}

//看牌(遍历TreeSet集合,获取编号,到HashMap集合找对应的牌)

lookPoker("张小七",zhangBingWei,hm);

lookPoker("梅长苏",meiChangSu,hm);

lookPoker("林青霞",linQingXia,hm);

lookPoker("底牌",diPai,hm);

}

public static void lookPoker(String name, TreeSet<Integer> ts, HashMap<Integer, String> hm) {

System.out.print(name+"的牌是:");

for(int key : ts) {

String value = hm.get(key);

System.out.print(value+" ");

}

System.out.println();

}

}

运行结果:

张小七的牌是:3 4 6 6 8 9 10 J Q K K A 2 2 2 小王 大王

梅长苏的牌是:3 4 5 5 5 6 8 9 9 10 J Q Q K A A 2

林青霞的牌是:3 3 4 4 5 6 7 7 8 9 10 10 J J Q K A

底牌的牌是:7 7 8

时间: 2024-08-03 15:04:39

Java集合练习:斗地主游戏的相关文章

java之实例斗地主(集合)

public class CollectionTest { /**  * 玩斗地主的三个步骤:  * A 买牌  * B 洗牌  * C 发牌  * D 看底牌  */ public static void main(String[] args) { String[] color={"黑桃","红桃","梅花","方块"};  String[] numbers={"A","2",&quo

第八章.Java集合

Java集合类是一种特别有用的工具类,可用于存储数量不等的对象.Java集合大致可分为Set.List.Queue和Map四种体系 Set代表无序.不可重复的集合 List代表有序.重复的集合 Map代表具有映射关系的集合 Java5又增加了Queue代表一种队列集合 java集合概述: 为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),java提供了集合类. 集合类主要负责保存.盛装其他数据,因此,集合类也被称为容器类.所有的集合类都在java.util包下,后来为了处

【Java_项目篇&lt;1&gt;】--JAVA实现坦克大战游戏--赋予敌人行动和攻击(五)

前期相关文章 [Java_项目篇<1>]–JAVA实现坦克大战游戏–画出坦克(一) [Java_项目篇<1>]–JAVA实现坦克大战游戏–坦克移动+添加敌方坦克(二) [Java_项目篇<1>]–JAVA实现坦克大战游戏–坦克发射子弹(三) [Java_项目篇<1>]–JAVA实现坦克大战游戏–子弹连发+爆炸效果(四) 一.任务需求 赋予敌人行动和攻击. 二.思路 - 敌人行动 1.需要把EnemyTank做成线程类实现Runnable接口. run方法中,

Unity3D手机斗地主游戏开发实战(02)_叫地主功能实现(不定期更新中~~~)

系列目录 Unity3D手机斗地主游戏开发实战(01)_发牌功能实现 Unity3D手机斗地主游戏开发实战(02)_叫地主功能实现 一.大体思路 前面我们实现了点击开始游戏按钮,系统依次给玩家发牌的逻辑和动画,并展示当前的手牌.这期我们继续实现接下来的功能--叫地主. 1.首先这两天,学习了DOTween,这是一个强大的Unity动画插件,大家可以参考:官方文档,个人感觉DOTween还是比较好用的. 好的,我们先来重构一下动画部分的代码(没有绝对牛逼的架构和设计,项目过程中不要不断的持续改进嘛

基于Java Web的猜歌游戏设计与实现

获取项目源文件,技术交流与指导联系Q:1225467431 摘   要 随着社会的不断发展,越来越多的人面临的压力越来越大,人们渴望随时随地都能放松自我.然而游戏正成为人们释放压力,放松自己最行之有效的娱乐方式之一.而基于Java Web的猜歌游戏以其界面美观,操作简单,对硬件要求低等优点将会备受大家的青睐.系统通过数据库对用户基本信息和歌曲信息进行统一管理,借助经典的框架Servlet对数据进行处理,又选择了前端一些功能强大的插件对数据进行展示,将猜歌与游戏很好的结合起来,意在给用户创造了一个

Java—集合框架List

集合的概念 现实生活中:很多的事物凑在一起 数学中的集合:具有共同属性的事物的总和 Java中的集合类:是一种工具类,就像是容器,存储任意数量的具有共同属性的对象 集合的作用 在类的内部,对数据进行组织(针对作用与意义一样的属性,将他们放到一个集合中) 简单而快速的搜索大数量的条目 有的集合接口,提供了一系列排列有序的元素,并且可以在序列中快速的插入或删除有关元素 有的集合接口,提供了映射关系,可以通过关键字(key)去快速查找到对应的唯一对象,而这个关键字可以是任意类型 与数组相比 数组的长度

Java 集合

在Java Collections Framework中,不同类型的集合使用不同类型的数据结构以不同的方式存储它们的元素. 集合框架提供了遍历集合的以下方法: 使用迭代器 使用for-each循环 使用forEach()方法 使用迭代器 迭代器可以对集合执行以下三个操作: 检查是否有尚未访问的元素. hasNext() 检查是否有下一个访问的元素. next() 删除集合的最后访问元素. remove() 例子1 使用迭代器打印列表的所有元素: import java.util.ArrayLis

《深入理解Java集合框架》系列文章

Introduction 关于C++标准模板库(Standard Template Library, STL)的书籍和资料有很多,关于Java集合框架(Java Collections Framework, JCF)的资料却很少,甚至很难找到一本专门介绍它的书籍,这给Java学习者们带来不小的麻烦.我深深的不解其中的原因.虽然JCF设计参考了STL,但其定位不是Java版的STL,而是要实现一个精简紧凑的容器框架,对STL的介绍自然不能替代对JCF的介绍. 本系列文章主要从数据结构和算法层面分析

Java集合相关面试问题和答案

Java集合相关面试问题和答案 面试试题 1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector.Stack.HashTable和Array.随着集合的广泛使用,Java1.2提出了囊括所有集合接口.实现和算法的集合框架.在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久.它还包括在Java并发包中,阻塞接口以及它们的实现.集合框架的部分优点如下: (1)使用核心集合类降低开发成本,而非实现我们自己的集合类.

Java集合

JAVA集合小结   有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否 否 HashSet TreeSet 是(用二叉树排序) Map AbstractMap 否 使用key-value来映射和存储数据,Key必须惟一,value可以重复 HashMap TreeMap 是(用二叉树排序) 几个面试常见问题:1.Q:ArrayList和Vector有什么区别?HashMap和HashTable有什么区别?   A:Vector和HashT