hashMap: 将每一张牌和序号联系起来。
ArrayLIst :存储每一张牌的信息。
运用增强for将每张扑克牌与序号连接,并存储起来的。
static HashMap<Integer,String> hm = new HashMap<>(); static ArrayList<Integer> list = new ArrayList<>(); static{ String[] color ={"♥","♠","♣","♦"}; String[] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; //序号 int serialNumber = 1; for (String n : number) { for (String c : color) { hm.put(serialNumber,c+n); list.add(serialNumber); serialNumber++; } } hm.put(serialNumber,"小王"); list.add(serialNumber); serialNumber++; hm.put(serialNumber,"大王"); list.add(serialNumber); //System.out.println(list); }
利用JAVA有的用法将扑克牌打乱。
Collections.shuffle(list);
利用TreeSet的有序性,创建一个底牌,四名玩家,并将牌按照序号重新排序。
TreeSet<Integer> lord = new TreeSet<>(); TreeSet<Integer> play1 = new TreeSet<>(); TreeSet<Integer> play2 = new TreeSet<>(); TreeSet<Integer> play3 = new TreeSet<>(); for (int i = 0; i < list.size(); i++) { //i:表示集合中每一个索引 //list.get(i)元素:牌的索引 int serialNumber = list.get(i); if (i<=2){ lord.add(serialNumber); continue; } if (i%3==0){ play1.add(serialNumber); }else if(i%3==1){ play2.add(serialNumber); }else { play3.add(serialNumber); } }
创建一个用法,将玩家姓名和所拥有的牌传入。根据序号获取真正的牌。
public void lookpoker(String name,TreeSet<Integer> ts){ System.out.print(name+": "); //遍历TreeSet集合得到的每一个序号,在那序号到Map集合中去找真正的牌 for (int serialNumber : ts) { String poker = hm.get(serialNumber); System.out.print(poker+" "); } System.out.println(); }
最终效果展示:
编辑
完整代码:
package puke; public class puke { public static void main(String[] args) { new pokerGame(); } } ----------------------------------------------------------------- package puke; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.TreeSet; public class pokerGame { //牌盒Map static HashMap<Integer,String> hm = new HashMap<>(); static ArrayList<Integer> list = new ArrayList<>(); static{ String[] color ={"♥","♠","♣","♦"}; String[] number={"3","4","5","6","7","8","9","10","J","Q","K","A","2"}; //序号 int serialNumber = 1; for (String n : number) { for (String c : color) { hm.put(serialNumber,c+n); list.add(serialNumber); serialNumber++; } } hm.put(serialNumber,"小王"); list.add(serialNumber); serialNumber++; hm.put(serialNumber,"大王"); list.add(serialNumber); //System.out.println(list); } public pokerGame() { // 洗牌 Collections.shuffle(list); //发牌 TreeSet<Integer> lord = new TreeSet<>(); TreeSet<Integer> play1 = new TreeSet<>(); TreeSet<Integer> play2 = new TreeSet<>(); TreeSet<Integer> play3 = new TreeSet<>(); for (int i = 0; i < list.size(); i++) { //i:表示集合中每一个索引 //list.get(i)元素:牌的索引 int serialNumber = list.get(i); if (i<=2){ lord.add(serialNumber); continue; } if (i%3==0){ play1.add(serialNumber); }else if(i%3==1){ play2.add(serialNumber); }else { play3.add(serialNumber); } } // System.out.println(lord); // System.out.println(play1); //System.out.println(play2); //System.out.println(play3); //看牌 lookpoker("底牌",lord); lookpoker("玩家1",play1); lookpoker("玩家2",play2); lookpoker("玩家3",play3); } /** * * @param name 玩家的名字 * @param ts 牌的序号 */ public void lookpoker(String name,TreeSet<Integer> ts){ System.out.print(name+": "); //遍历TreeSet集合得到的每一个序号,在那序号到Map集合中去找真正的牌 for (int serialNumber : ts) { String poker = hm.get(serialNumber); System.out.print(poker+" "); } System.out.println(); } }
至此JavaSE练习——扑克牌小编已经分享完了。
感谢每一个观看本篇文章的朋友,更多精彩敬请期待。
文章多处存在借鉴,如有侵权联系修请改删除!编辑