模拟斗地主洗牌和发牌(集合实现)
来源:互联网 发布:gumgiannichiarini.it 编辑:程序博客网 时间:2024/05/06 10:49
1:用ArrayList集合实现
案例分析:
我们现在要做的是模拟斗地主小游戏来进行洗牌和发牌。
具体步骤:
A:首先,创建一个ArrayList集合来存储牌,将牌的花色和点数存储在俩个字符串数组中中,然后用for循环加强遍历将每张牌的花色点数及大王小王存储在集合中。
B:进行洗牌,调用collectionas的shuffle方法。
C:进行发牌,创建四个ArrayList集合,分别用来存储玩家一,玩家二,玩家三,和底牌对应发到手上的牌。然后用for循环遍历这幅扑克牌用If语句判断,然后发牌。
D:创建一个看牌的方法,调用即可。
具体代码:
package com.study_01;import java.util.ArrayList;import java.util.Collections;import java.util.List;/* * 模拟斗地主洗牌和发牌 * 分析步骤: * 1:创建一个集合来存储牌 * 2:洗牌 * 3:发牌 * 4:看牌 * */public class Poker1 { public static void main(String[] args) { //创建一个集合来存牌 ArrayList <String> Pokers=new ArrayList<>(); String[] colors={"♠","♥","♦","♣"}; String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; for(String color:colors){ for(String number:numbers){ Pokers.add(color+number); } Pokers.add("大王"); Pokers.add("小王"); }//洗牌 Collections.shuffle(Pokers); //发牌 /*创建四个集合来存储 * 1:张三 * 2:李四 * 3:王麻 * 4:底牌 */ ArrayList<String> Zhangsan=new ArrayList<>(); ArrayList<String> Lisi=new ArrayList<>(); ArrayList<String> Wangma=new ArrayList<>(); ArrayList<String> Dipai=new ArrayList<>(); for(int i=0;i<Pokers.size();i++){ if(i>=Pokers.size()-3){ Dipai.add(Pokers.get(i)); }else if(i%3==0){ Zhangsan.add(Pokers.get(i)); }else if(i%3==1){ Lisi.add(Pokers.get(i)); }else if(i%3==2){ Wangma.add(Pokers.get(i)); } }//看牌 lookPokers("张三",Zhangsan); lookPokers("李四",Lisi); lookPokers("王麻",Wangma); lookPokers("底牌",Dipai); } private static void lookPokers(String name, ArrayList<String> Pokers){ System.out.println(name+"的牌是:"); for(String poker:Pokers){ System.out.print(poker+" "); }System.out.println(); } }
运行结果:
2:用TreeMap集合实现
具体步骤:
A:创建TreeMap集合存储牌,并且大的键对应大的牌,小的键对应小的牌,同上创建俩个数组,一个用来存储花色,一个用来存储点数,另外创建一个ArrayList集合,用来存储没有任意一张牌对应的索引。
B:.洗牌,洗的是索引(map集合中每一张牌对应的键),我们这里用的是ArrayList来存储。
C:发牌,发的索引,并且对这个索引进行排序,这是利用了TreeSet的有序性。
D:看牌,根据发到的索引去map集合中找出对应的值。
具体代码:
package com.study_01;import java.util.ArrayList;import java.util.Collections;import java.util.TreeMap;import java.util.TreeSet;/** * 1.创建Map集合存储牌,并且大的键对应大的牌,小的键对应小的牌 * 2.洗牌,洗的是索引(map集合中每一张牌对应的键) * 3.发牌,发的索引,并且岁这个索引进行排序 * 4.看牌,根据发到的键去map集合中找出对应的值 */public class Poker2 { public static void main(String[] args) { //创建一个TreeMap集合 TreeMap<Integer,String> Pokers=new TreeMap<>(); String[] colors={"♥","♠","♦","♣"}; String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2",}; //创建一个ArrayList集合,用来存储没有一张牌对应的索引 ArrayList<Integer> indexs=new ArrayList<>(); int index = 0; for(String color:colors){ for(String number:numbers){ Pokers.put(index, color+number); indexs.add(index); index++; }//存大王,小王 Pokers.put(index, "大王"); indexs.add(index); index++; Pokers.put(index, "小王"); indexs.add(index); index++; }//洗牌,洗的是索引(map集合中每一张牌对应的键) Collections.shuffle(indexs); //发牌,发的是索引根据索引来找它对应的值 TreeSet<Integer> zhangsan=new TreeSet<>(); TreeSet<Integer> lisi=new TreeSet<>(); TreeSet<Integer> wangma=new TreeSet<>(); TreeSet<Integer> dipai=new TreeSet<>(); for(int i=0;i<Pokers.size();i++){ if(i>=Pokers.size()-3){ dipai.add(indexs.get(i)); }else if(i%3==0){ zhangsan.add(indexs.get(i)); }else if(i%3==1){ lisi.add(indexs.get(i)); }else if(i%3==2){ wangma.add(indexs.get(i)); } }//看牌 lookPoker("张三",zhangsan,Pokers); lookPoker("李四",lisi,Pokers); lookPoker("王麻",wangma,Pokers); lookPoker("底牌",dipai,Pokers); } private static void lookPoker(String name, TreeSet<Integer> indexs, TreeMap<Integer, String> Pokers) { System.out.println(name+"的牌是:"); for(Integer index:indexs){ System.out.print(Pokers.get(index)); }System.out.println(); }}
运行结果:
0 0
- 模拟斗地主洗牌和发牌(集合实现)
- 集合框架_模拟斗地主洗牌和发牌
- 集合框架-模拟斗地主洗牌和发牌案例
- Java实现--模拟斗地主的洗牌和发牌
- 模拟斗地主洗牌和发牌
- 集合模拟斗地主洗牌,发牌,看牌
- 用集合模拟斗地主的洗牌的发牌
- 集合框架_模拟斗地主洗牌和发牌并对牌进行排序的代码实现
- 集合框架-模拟斗地主洗牌和发牌并对牌进行排序案例
- 用java模拟斗地主洗牌和发牌
- Java模拟斗地主洗牌、发牌和对牌排序
- java-模拟斗地主的洗牌和发牌
- 模拟斗地主洗牌和发牌,牌没有排序
- 【代码练习2】模拟斗地主洗牌和发牌
- JAVA-11.3-模拟斗地主洗牌、发牌、并进行排序(集合)
- 斗地主:洗牌发牌
- 斗地主系列之洗牌和发牌
- 集合框架_模拟斗地主洗牌和发牌并对牌进行排序的原理图解
- 登陆北邮校园网网关的Python脚本-2017年
- 微信公众号开发-接收与回复消息
- PHP 数组 内存实现结构
- Spring boot 支持热部署
- ajax.jsonp封装myAjax.post('PHP/do2.php',{'name':'李四','age':22},function(err,data){ if (err) {
- 模拟斗地主洗牌和发牌(集合实现)
- 图管够!灌篮高手、女儿国…阿里日_这帮程序员太会玩了!
- Node.js的文件系统的Api
- 凑平方数 第七届蓝桥杯决赛javaA组
- 【算法理解】——计数排序
- centos日常命令
- 网易2017实习生编程题—双核处理问题(0-1背包问题)
- SSH免密码远程登录Linux
- [Android] Activity怎么获取contentView? 自定义getContentView()