Flask接口签名sign原理与实例代码浅析
284
2022-12-06
java实现扑克牌分发功能
本文实例为大家分享了java实现扑克牌分发的具体代码,供大家参考,具体内容如下
实现一个三人斗地主的扑克牌分发功能
思路:
1、准备一组54张的扑克牌
2、洗牌
3、将扑克牌分发到玩家手中
4、查看每个选手中的扑克牌和地主的底牌
思路补充:先创建两个花色和数字的数组,再创建一个List集合,和Map集合,运用双层for循环将花色和数字依次组合成52张扑克牌,之后分别在加添加进Map集合中的value值中,Map中的key值依次用0-51表示,双层for循环的同时将0-51的值依次赋值给List集合中,循环结束后在依次将大王、小王加入Map集合中的value中相对应的key值用52和53表示,还要讲52和53赋值到List集合中,此时所有牌组准备完毕。
分别创建四个新List集合,将存放序号的List集合中的序号打乱后分发到玩家手中,最后留三张底牌,添加到他们对应的List集合中
分别将三位玩家和底牌中的序号集合遍历,遍历出的数值带入到Map中的get方法的key值中,得到相对应得value值(也就是对应的牌),再将value值赋值给玩家手中对应的序号值处。
最后将三位玩家和底牌所对应的List集合输出打印出来即可看到他们被分到的牌。
具体代码如下:
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.ItexsTqtDprator;
import java.util.List;
import java.util.Set;
public class TestPokerPlus {
public static void main(String[] args) {
//1.创建扑克牌集合
//创建map集合,类似于字典 和 list序号集合
List list = new ArrayList();
HashMap
//将花色和数字及JQK组合添加进扑克牌集合map中
String[] color = {"♥","♦","♠","♣"};
String[] number = {"3","4","5http://","6","7","8","9","10","J","Q","K","A","2"};
int num = 0;//计数器思想
for(int i = 0 ;i< number.length;i++){
for(int j = 0 ;j< color.length;j++){
map.put(num,color[j]+number[i]);
list.add(num);
num++;
}
}
//将序号集合中加入52,53两位序列,为之后map集合中加入“大王”、“小王”做准备
list.add(list.size());
list.add(list.size());
//在加上大王、小王两张牌
map.put(list.size()-2,"小王");
map.put(list.size()-1,"大王");
//2.打乱
//将序号集合打乱
Collections.shuffle(list);
//3.分牌
//创建三名玩家和底牌集合
List player1 = new ArrayList();
List player2 = new ArrayList();
List player3 = new ArrayList();
List cards = new ArrayList();
//循环分发序号
for(int i = 0 ;i if(i if(i % 3 == 1){ player1.add(list.get(i)); }else if(i % 3 == 2){ player2.add(list.get(i)); }else{ player3.add(list.get(i)); } }else{ cards.add(list.get(i)); } } //将分的的序号升序排列 Collections.sort(player1); Collections.sort(player2); Collections.sort(player3); Collections.sort(cards); //遍历将3个玩家和底牌分得的序号集合 对照map集合重新将对应的牌赋值给对应的序号 boardAssignment(map, player1); boardAssignment(map, player2); boardAssignment(map, player3); boardAssignment(map, cards); //4.看牌 //打印输出三名玩家的牌的底牌 System.out.println(player1); System.out.println(player2); System.out.println(player3); System.out.println(cards); } private static void boardAssignment(HashMap for(int i = 0;i < list.size();i++){ list.set(i, map.get(list.get(i))); } } } xsTqtDp
if(i if(i % 3 == 1){ player1.add(list.get(i)); }else if(i % 3 == 2){ player2.add(list.get(i)); }else{ player3.add(list.get(i)); } }else{ cards.add(list.get(i)); } } //将分的的序号升序排列 Collections.sort(player1); Collections.sort(player2); Collections.sort(player3); Collections.sort(cards); //遍历将3个玩家和底牌分得的序号集合 对照map集合重新将对应的牌赋值给对应的序号 boardAssignment(map, player1); boardAssignment(map, player2); boardAssignment(map, player3); boardAssignment(map, cards); //4.看牌 //打印输出三名玩家的牌的底牌 System.out.println(player1); System.out.println(player2); System.out.println(player3); System.out.println(cards); } private static void boardAssignment(HashMap for(int i = 0;i < list.size();i++){ list.set(i, map.get(list.get(i))); } } } xsTqtDp
if(i % 3 == 1){
player1.add(list.get(i));
}else if(i % 3 == 2){
player2.add(list.get(i));
}else{
player3.add(list.get(i));
}
}else{
cards.add(list.get(i));
}
}
//将分的的序号升序排列
Collections.sort(player1);
Collections.sort(player2);
Collections.sort(player3);
Collections.sort(cards);
//遍历将3个玩家和底牌分得的序号集合 对照map集合重新将对应的牌赋值给对应的序号
boardAssignment(map, player1);
boardAssignment(map, player2);
boardAssignment(map, player3);
boardAssignment(map, cards);
//4.看牌
//打印输出三名玩家的牌的底牌
System.out.println(player1);
System.out.println(player2);
System.out.println(player3);
System.out.println(cards);
}
private static void boardAssignment(HashMap
for(int i = 0;i < list.size();i++){
list.set(i, map.get(list.get(i)));
}
}
}
xsTqtDp
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~