java之斗地主
hashmap集合+ArrayList集合+Collections集合工具类shuffle()和sort()
hashmap中get(key)、put(key/value)
Arraylist中的add()、get(下标值),此时ArrayLIST集合相当于hashmap中的set集合,可以使用迭代器或者增强for遍历内容
或者不使用Arraylist,直接使用entryset得到Map.entry<E>,使用getkey和getvalue得到key值
1 package com.oracle.demo01;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap; public class Doudizhu {
public static void main(String[] args) {
//定义扑克牌Map 默认按照key值从小到大排序
HashMap<Integer,String> pooker=new HashMap<Integer,String>();
//定义装有扑克牌号的集合 单独的与map集合数字一致2
ArrayList<Integer> pookerNum=new ArrayList<Integer>();
//封装数据 4种花色(13个牌)+大小王
String[] color={"♡","","♧","◇"};//点击选择utf-8保存
String[] number={"","A","K","Q","J","","","","","","","",""};
//嵌套for循环,先数字,后花色
int index=;
for(String n:number){
for(String c:color){
pooker.put(index,c+n);
pookerNum.add(index);
index++;
}
}
//封装大小王
pooker.put(, "大王");
pooker.put(, "小王");
pookerNum.add();
pookerNum.add(); //测试
// System.out.println(pooker);
//洗牌
Collections.shuffle(pookerNum);
//创建四个容器
ArrayList<Integer> player1=new ArrayList<Integer>();
ArrayList<Integer> player2=new ArrayList<Integer>();
ArrayList<Integer> player3=new ArrayList<Integer>();
ArrayList<Integer> bottom=new ArrayList<Integer>();
for(int i=;i<pookerNum.size();i++){
if(i<){
bottom.add(pookerNum.get(i));
}else if(i%==){
player1.add(pookerNum.get(i));
}else if(i%==){
player2.add(pookerNum.get(i));
}else if(i%==){
player3.add(pookerNum.get(i));
}
}
//排序
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(bottom);
//遍历看牌
System.out.println();
look("",pooker,player1);
look("",pooker,player2);
look("",pooker,player3);
look("底牌",pooker,bottom);
}
//通用的方法
public static void look(String Name,HashMap<Integer,String> pooker,
ArrayList<Integer> bottom){
System.out.print(Name+":");
for(Integer number:bottom){
System.out.print(pooker.get(number)+" ");
}
System.out.println();
}
}
package com.oracle.demo01; import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator; public class DouDiZhu3 {
public static void main(String[] args) {
//定义map集合
HashMap<Integer,String> big=
new HashMap<Integer,String>();
ArrayList<Integer> arr=new ArrayList<Integer>();
//封装数据,通过内外循环,拼接字符串
String[] arr1={"♣","◇","♠","♥"};
String[] arr2={"","A","K","Q","J","","","","","","","",""};
//拼接字符串,并存入map集合中
int index=;
for(String r2:arr2){
for(String r1:arr1){
//必须创建不同的对象,进行存储
arr.add(index);
//System.out.println(arr);
big.put(index, r1+r2);
/* //对arr进行整体的清空
arr.clear();*/
index++;
}
}
//封装大小王
big.put(, "大王");
big.put(, "小王");
arr.add();
arr.add();
//此时为一个对象,会出现值覆盖问题
/*big.put(new ArrayList<Integer>(0), "大王");
big.put(new ArrayList<Integer>(1), "小王");*/
//测试是否存储成功,map自己调用tostring()
System.out.print(big);
//洗牌
Collections.shuffle(arr);
//创建四个容器
ArrayList<Integer> player1=new ArrayList<Integer>();
ArrayList<Integer> player2=new ArrayList<Integer>();
ArrayList<Integer> player3=new ArrayList<Integer>();
ArrayList<Integer> bottom=new ArrayList<Integer>();
for(int i=;i<arr.size();i++){
if(i<){
bottom.add(arr.get(i));
}else if(i%==){
player1.add(arr.get(i));
}else if(i%==){
player2.add(arr.get(i));
}else if(i%==){
player3.add(arr.get(i));
}
}
//排序
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(bottom);
//遍历看牌
System.out.println();
look("",big,player1);
look("",big,player2);
look("",big,player3);
look("底牌",big,bottom);
}
//通用的方法
public static void look(String Name,HashMap<Integer,String> big,
ArrayList<Integer> bottom){
System.out.print(Name+":");
//创建迭代器对象 数据类型与要遍历的集合数据类型一致
Iterator<Integer> i=bottom.iterator();
while(i.hasNext()){
int ii=i.next();//对象调用
System.out.print(big.get(ii)+" ");
}
System.out.println();
}
}
java之斗地主的更多相关文章
- 通过Java实现斗地主
功能:洗牌,发牌,对玩家手中的牌排序,看牌 package demo06; import java.util.ArrayList; import java.util.Collections; impo ...
- 用Java制作斗地主
首先,按照斗地主规则,完成洗牌发牌的动作.如图: 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张留作底牌. 4. 查看三人各 ...
- java模拟斗地主发牌看牌
import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; public class Dou ...
- Java模拟斗地主发牌和洗牌
package cn.itcast_04; import java.util.ArrayList; import java.util.Collections; import java.util.Has ...
- Java实现斗地主发牌(Collections工具类的应用)
package com.doudou_01; import java.util.ArrayList; import java.util.Collections; import java.util.Li ...
- Java模拟斗地主(实现大小排序)
import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.Li ...
- Java 模拟斗地主
模拟斗地主 public class M1 { public static void main(String args[]) { DouDiZhu02(); } private static void ...
- Java程序斗地主发牌代码,List、Map集合的应用
Java集合存储的灵活运用List集合存储 54个编号 Map <key,value> key 对应的是编号 , value 是 牌的花色(红方梅黑)+ 具体的一张牌 ,比如 黑桃2 用2 ...
- java 模拟斗地主发牌洗牌
一 模拟斗地主洗牌发牌 1.案例需求 按照斗地主的规则,完成洗牌发牌的动作. 具体规则: 1. 组装54张扑克牌 2. 将54张牌顺序打乱 3. 三个玩家参与游戏,三人交替摸牌,每人17张牌,最后三张 ...
随机推荐
- BLOB类型对应Long binary,CLOB对应Long characters
BLOB类型对应Long binary,CLOB对应Long characters
- protobuf DNK下的编译
protobuffer 编译配置 mkdir -p ./cmake/build cd ./cmake/build cmake \ -Dprotobuf_BUILD_SHARED_LIBS=OFF \ ...
- idea actiBPM插件生成png文件 (解决没有Diagrams或Designer选项问题)
版权声明:随便转, 记得给个链接过来哦 https://blog.csdn.net/wk52525/article/details/79362904 idea对activiti工作流的支持没有ecli ...
- C#的选择语句练习(二)
1.输入a,b,c三个数,计算一元二次方程ax²+bx+c的根:若a=0,则不是一元二次方程:△=b²-4ac,根的计算公式为-b±√b²-4ac/2a:若△=b²-4ac>0,则方程有两个不一 ...
- 2006年NOIP普及组复赛题解
题目涉及算法: 明明的随机数:简单模拟: 开心的金明:01背包: Jam的计数法:模拟: 数列:二进制. 明明的随机数 题目链接:https://www.luogu.org/problem/P1059 ...
- 基于ThinkPHP与阿里大于的PHP短信验证功能
https://blog.csdn.net/s371795639/article/details/53381274 PHP阿里大鱼短信验证 第一步 登陆阿里大于注册账号,在用户管理中心创建应用,确定A ...
- 快速理解bootstrap,bagging,boosting,gradient boost-三个概念
1 booststraping:意思是依靠你自己的资源,称为自助法,它是一种有放回的抽样方法,它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法. 其核心思想和基本步骤如下: (1 ...
- springmvc 多文件/文件夹上传 下载
注入依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding&g ...
- activeMQ的两个默认端口8161和61616的区别
activeMQ默认配置下启动会启动8161和61616两个端口,其中8161是mq自带的管理后台的端口,61616是mq服务默认端口 . 8161是后台管理系统,61616是给java用的tcp端口 ...
- classpath*与classpath
classpath*:的出现是为了从多个jar文件中加载相同的文件. classpath:只能加载找到的第一个文件.