Flask接口签名sign原理与实例代码浅析
192
2022-09-25
java集合模拟实现斗地主洗牌和发牌
本文实例为大家分享了java实现斗地主洗牌和发牌的具体代码,供大家参考,具体内容如下
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[] 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:底牌
*/
ArrayListzmiiDu
ArrayList
ArrayList
ArrayList
for(int i=0;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 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 String[] colors={"♥","♠","♦","♣"}; String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2",}; //创建一个ArrayList集合,用来存储没有一张牌对应的索引 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 TreeSet TreeSet TreeSet for(int i=0;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 TreeMap System.out.println(name+"的牌是:"); for(Integer index:indexs){ System.out.print(Pokers.get(index)); }System.out.println(); } } 运行结果:
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
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
String[] colors={"♥","♠","♦","♣"};
String[] numbers={"3","4","5","6","7","8","9","10","J","Q","K","A","2",};
//创建一个ArrayList集合,用来存储没有一张牌对应的索引
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
TreeSet
TreeSet
TreeSet
for(int i=0;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 TreeMap System.out.println(name+"的牌是:"); for(Integer index:indexs){ System.out.print(Pokers.get(index)); }System.out.println(); } } 运行结果:
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
TreeMap
System.out.println(name+"的牌是:");
for(Integer index:indexs){
System.out.print(Pokers.get(index));
}System.out.println();
}
}
运行结果:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~