package ClDesign; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Scanner; import java.util.Set; import javax.swing.JFrame; public class Initail { Map<String, StudentPlayer> infor= new HashMap<String, StudentPlayer>(); //用来承装学生类型对象 List<Poker> poker = new ArrayList<Poker>(); //List集合,用来承装洗牌前的扑克牌 List<Poker>poker3 = new ArrayList<Poker>(); //用来承装洗牌后的扑克牌 List<Poker>st1 = new ArrayList<Poker>(); //用来承装选手1拿的扑克牌 List<Poker>st2 = new ArrayList<Poker>(); //用来承装选手2拿的扑克牌 StudentPlayer st = infor.get(null); //选手对象空ID /** * 增加扑克牌 * @param color * @param name */ public void pokerAdd(String[] color,String[] name){ for(int i=0;i<color.length;i++){ for(int j=0;j<name.length;j++){ Poker p = new Poker(color[i],name[j]); poker.add(p); } } System.out.println("共有"+poker.size()+"张牌"); /** * 通过迭代器访问list中的元素 */ int j=0; //控制换行输出 Iterator<Poker> it = poker.iterator(); System.out.println("有如下扑克牌(通过迭代器访问):"); while(it.hasNext()) { j++; Poker cr = it.next(); System.out.print( cr.getColor() +","+ cr.getBrandName()); if(j%13==0){ //每13个牌就换行 System.out.println(); } } } /** * 选手信息 */ public void PlayerInformation(){ int i=0; Scanner sca = new Scanner(System.in); while(i<2){ //两名选手 System.out.println("请选手"+(i+1)+"输入相关信息:"); System.out.println("选手"+(i+1)+"的ID:"); String ID=sca.next(); st = infor.get(ID); if(st==null){ System.out.println("选手"+(i+1)+"的名字:"); String Pname = sca.next(); //创建新的选手对象 StudentPlayer st1 = new StudentPlayer(ID,Pname); infor.put(ID, st1); System.out.println("成功添加选手:" + infor.get(ID).getName()); i++; }else{ System.out.println("该选手ID被占用!请重新输入"); continue; } } } /** * Map的keySet方法输出Map信息 */ public void KeySetPrint() { // 通过keySet方法,返回Map中的所有“键”的Set集合 Set<String> keySet = infor.keySet(); // 取得students的容量 System.out.println("总共有:" + infor.size() + "个选手!"); // 遍历keySet,取得每一个键,再调用get方法取得每个键对应的value for (String stuId : keySet) { StudentPlayer st = infor.get(stuId); if (st != null) System.out.println(st.getID()+"号选手:" + st.getName()); } } /** * 洗牌 * @param args */ public void randomSort(String[] color,String[] name){ Set<Poker>poker2 = new HashSet<Poker>(); for(int i=(int)Math.random()*4;i<color.length;i++){ for(int j=(int)Math.random()*12;j<name.length;j++){ Poker p = new Poker(color[i],name[j]); poker2.add(p); } } int k=0; //控制换行 poker3.addAll(poker2); Iterator<Poker> it2 = poker3.iterator(); System.out.println("**********洗牌后的扑克牌(通过迭代器访问)**********"); while(it2.hasNext()) { k++; Poker cr2 = it2.next(); System.out.print( cr2.getColor() + cr2.getBrandName()); //控制换行 if(k%13==0){ //每13个就换行 System.out.println(); } } } /** * 发牌 * @param args */ public void sendPoker(){ System.out.println("**********现在开始发牌**********"); int i=0; //i为学生扑克牌集合的下标 /** * 外层循环控制发牌次数,内层for each循环控制选手轮流拿牌 */ Set<String> keySet = infor.keySet(); for(int j=0;j<2;j++){ for (String stuId : keySet) { StudentPlayer st = infor.get(stuId); st.stu1Poker.addAll(poker3); st.stu2Poker.addAll(poker3); if(i%2==0){ System.out.print(st.getID()+"号选手"+st.getName()+"拿牌,拿的牌为:"); System.out.println(st.stu1Poker.get(i)); st1.add(st.stu1Poker.get(i)); i++; }else if(i%2!=0){ System.out.print(st.getID()+"号选手"+st.getName()+"拿牌,拿的牌为:"); System.out.println(st.stu2Poker.get(i)); st2.add(st.stu2Poker.get(i)); i++; } } } } /** * 游戏比大小 */ public void Compare(){ //比较思路,先比较数值2最小,A最大,后比较花色。花色由大到小:黑桃>红桃>梅花>方块 int j=0; Set<String> keySet = infor.keySet(); for (String stuId : keySet) { StudentPlayer st = infor.get(stuId); if(j%2==0){ //选手1扑克牌比较出最大手牌 System.out.println(st.getID()+"号选手"+st.getName()+"拿的牌:"+st1.toString()); if( (st1.get(j).getBrandName().toString().compareTo(st1.get(j+1).getBrandName().toString()) )>0 && st1.get(j+1).getBrandName().equals("A")==false && j+1<st1.size()){ st1.add(j,st1.get(j)); System.out.println(st.getID()+"号选手最大的手牌: "+st1.get(j)); j++; } if((st1.get(j).getBrandName().toString().compareTo(st1.get(j+1).getBrandName().toString()) )<0 && st1.get(j).getBrandName().equals("A")==false && j+1<st1.size()){ st1.add(j, st1.get(j+1)); System.out.println(st.getID()+"号选手最大的手牌: "+st1.get(j)); j++; } if((st1.get(j).getBrandName().toString().compareTo(st1.get(j+1).getBrandName().toString()) )==0 && j+1<st1.size()){ if(st1.get(j).getColor()=="黑桃" ||(st1.get(j).getColor()=="红桃" && st1.get(j+1).getColor()=="方块")|| (st1.get(j).getColor()=="红桃" && st1.get(j+1).getColor()=="梅花")||(st1.get(j).getColor()=="梅花" && st1.get(j+1).getColor()=="方块") ){ st1.add(j, st1.get(j)); System.out.println(st.getID()+"号选手最大的手牌: "+st1.get(j)); j++; } } }else if(j%2!=0){ //选手2扑克牌集合比较出最大的手牌 System.out.println(st.getID()+"号选手"+st.getName()+"拿的牌"+st2.toString()); j=0; if((st2.get(j).getBrandName().toString().compareTo(st2.get(j+1).getBrandName().toString()) )>0 && st2.get(j+1).getBrandName().toString().equals("A")==false && j+1<st2.size()){ st2.add(j, st2.get(j)); System.out.println(st.getID()+"号选手最大的手牌: "+st2.get(j)); j++; } if((st2.get(j).getBrandName().toString().compareTo(st2.get(j+1).getBrandName().toString()) )<0 && st2.get(j).getBrandName().toString().equals("A")==false && j+1<st2.size()){ st2.add(j, st2.get(j+1)); System.out.println(st.getID()+"号选手最大的手牌: "+st2.get(j)); j++; } if((st2.get(j).getBrandName().toString().compareTo(st2.get(j+1).getBrandName().toString()) )==0 && j+1<st1.size()){ if(st2.get(j).getColor()=="黑桃" ||(st2.get(j).getColor()=="红桃" && st2.get(j+1).getColor()=="方块")|| (st2.get(j).getColor()=="红桃" && st2.get(j+1).getColor()=="梅花")||(st2.get(j).getColor()=="梅花" && st2.get(j+1).getColor()=="方块") ){ st2.add(j, st2.get(j)); System.out.println(st.getID()+"号选手最大的手牌: "+st2.get(j)); j++; } } } System.out.println(); } int g=0; for (String stuId : keySet) { st = infor.get(stuId); if(g%2==0 && g<2){ if((st1.get(g).getBrandName().toString().compareTo(st2.get(g).getBrandName().toString()) )>0 &&st2.get(g).getBrandName().toString().equals("A")==false && g<g+1){ System.out.println("选手"+st.getName()+"的"+st1.get(g)+"最大,恭喜选手"+st.getName()+"获胜"); } }else if(g%2!=0 && g<2){ if((st1.get(g-1).getBrandName().toString().compareTo(st2.get(g).getBrandName().toString()) )<0 &&st1.get(g).getBrandName().toString().equals("A")==false && g<g+1){ System.out.println("选手"+st.getName()+"的"+st2.get(g-1)+"最大,恭喜选手"+st.getName()+"获胜"); } } g++; } // } } public static void main(String[] args) { /** * 初始化扑克牌数据 */ String[] color = {"黑桃","红桃","梅花","方块"}; String[] name = {"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; Initail initail= new Initail(); //实例化对象 System.out.println("********************扑克牌游戏*********************"); initail.pokerAdd(color, name); //调用方法 ,初始化扑克 initail.PlayerInformation(); //选手信息 initail.KeySetPrint(); //输出选手信息 System.out.println("**********请输入1开始洗牌**********"); Scanner sca = new Scanner(System.in); int j = sca.nextInt(); if(j==1){ initail.randomSort(color, name); //洗牌 } initail.sendPoker(); //发牌 initail.Compare(); //比较 } }
最近下载更多
微信网友_6233325343920128 LV1
2022年11月30日
huevnn LV5
2022年6月15日
Czhiyi LV6
2022年3月29日
一头土猪 LV7
2021年12月22日
Demo1111 LV30
2021年12月9日
quiyian LV4
2021年6月8日
234123141 LV7
2021年5月10日
bg12123 LV1
2021年3月25日
2458165357 LV1
2021年2月19日
qq454952101 LV4
2021年2月5日