package com.imooc.pukeyouxi;import java.util.ArrayList;import java.util.List;public class puke { public String huase; public String dianshu; public puke(String huase,String dianshu){ this.huase=huase; this.dianshu=dianshu; } public puke(){ } @Override public String toString() { return huase +dianshu; }}public class wanjia { public int id; public String name; public static Set<puke>shoupai; public wanjia(int id,String name){ this.id=id; this.name=name; wanjia.shoupai=new HashSet<puke>();//哈希set }}package com.imooc.pukeyouxi;import java.util.ArrayList;import java.util.InputMismatchException;import java.util.List;import java.util.Random;import java.util.Scanner;/*扑克游戏 * 1.创建一副扑克牌,包含 黑 红 梅 方 四种 花色,每种花色2-A 13张牌 * 2.创建两名玩家,至少要有 ID。姓名 手牌 等属性,手牌为扑克牌的集合 * 3.洗牌, 将之前创造的 扑克牌顺序打乱 * 4.发牌, 每个玩家 2张扑克牌 * 5,游戏 比较玩家手中的扑克牌,取各自手中点数最大的牌进行比较,点数大的赢 * 若两人各自的点数最大的牌相等,则在比较花色 * * */public class test { //建立玩家手牌 public static List<wanjia>wanjiaqun; private Scanner console; private Scanner mingzi; public wanjia dutu; public List<puke> pukelist=new ArrayList<puke>(); public List<puke> xipailist=new ArrayList<puke>(); public test(){ wanjiaqun =new ArrayList<wanjia>(); } //添加扑克 public void addall(){ //建立点数数组 String [] dianshuji={"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; //建立花色数组 String [] huaseji={"方块","梅花","红桃","黑桃"}; for(int i=0;i<huaseji.length;i++){ for(int j=0;j<dianshuji.length;j++){ puke cr1=new puke(huaseji[i],dianshuji[j]); pukelist.add(cr1); } } System.out.println("--------------扑克拆包成功:-----------"); System.out.println("目前所有扑克牌为:"); for(puke list:pukelist){ System.out.print("<"+list.huase+list.dianshu+">"); } System.out.println(""); } /* * 洗牌方法:随机数 * */ public void xipai(){ Integer k; puke p; for(int i=0;i<52;i++){ do{ Random random=new Random() ; k=random.nextInt(52); p=pukelist.get(k); }while(xipailist.contains(p)); xipailist.add(p); } System.out.println("----------洗牌开始--------------");// for(puke list:xipailist){// System.out.print("<"+list.huase+list.dianshu+">");// } System.out.println("----------洗牌结束--------------"); } public void tianjiawanjia(){ int k; System.out.println("----------创建玩家--------------"); do{ k=1; try{ for(int i=0;i<2;i++){ console=new Scanner(System.in); mingzi=new Scanner(System.in); System.out.println("请输入第"+(i+1)+"位玩家的ID:"); int ID=console.nextInt(); if(ID>2){//控制玩家数 只能有2个人 System.out.println("玩家ID超游戏限制人数,请重新输入"); k=0; continue; } System.out.println("请输入第"+(i+1)+"位玩家的姓名:"); String MZ=mingzi.next(); wanjia dutu=new wanjia(ID,MZ); wanjiaqun.add(dutu); } }catch(InputMismatchException e){ System.out.println("输入类型错误,请重新输入"); k=0; } }while(k==0); System.out.println("欢迎玩家:"+wanjiaqun.get(0).name); System.out.println("欢迎玩家:"+wanjiaqun.get(1).name); } //为两位玩家分配获得的手牌 public void shoupaiqun(){ int m=0; puke p; System.out.println("----------开始发牌--------------"); for(int i=0;i<2;i++){//两次发牌 此处出现异常,当列出各位玩家手牌时发现,每人都有四种牌 但没找到原因 for(int j=0;j<2;j++){//两个赌徒 dutu=wanjiaqun.get(j); System.out.println("玩家:"+dutu.name+"拿牌"); p=new puke(xipailist.get(m).huase,xipailist.get(m).dianshu); wanjiaqun.get(j).shoupai.add(p); m++; } } } public void displayshoupai(){ //此处陈列出的结果为 两个人都有四张牌,且相同 for(int i=0;i<2;i++){ System.out.println("玩家:"+wanjiaqun.get(i).name+wanjiaqun.get(i).shoupai); } } public static void main(String[] args) { // TODO 自动生成的方法存根 test cv=new test(); cv.addall(); cv.xipai(); cv.tianjiawanjia(); cv.shoupaiqun(); cv.displayshoupai(); }}
添加回答
举报
0/150
提交
取消