比大小,不一樣的算法,利用list集合的indexOf定位,用隨機抽取牌的方式而非打亂順序!
package?demo_playing_cards; /* ?*?1.主要功能是創建牌屬性 ?*?2.將創建好的對象賦值給List集合。 ?*/ public?class?Cards?implements?Comparable<Cards>{ ???????private?String?design;?//?創建花色屬性 ???????private?String?number;?//創建點色屬性 ??????? public?String?getDesign()?{ return?design; } public?void?setDesign(String?design)?{ this.design?=?design; } public?String?getNumber()?{ return?number; } public?void?setNumber(String?number)?{ this.number?=?number; } public?Cards(String?design,String?number){ this.design?=?design; this.number?=?number; } @Override public?int?compareTo(Cards?o)?{ //?TODO?自動生成的方法存根 return?this.number.compareTo(o.number); } }
用戶類:創建用戶
package?demo_playing_cards; import?java.util.HashSet; import?java.util.Set; /** ?*?1.創建學生對象,進行抓牌比點數 ?*?2.沒人抓取2張牌,按照2~A比大小,若點數相同則按照黑紅梅方順序比較 ?*/ public?class?TestUserName{ ????????????private?Integer?Id; ???????????? ????????????private?String?Name; ????????????Set<Cards>?set; ???????????? ????????????@Override public?int?hashCode()?{ final?int?prime?=?31; int?result?=?1; result?=?prime?*?result?+?((Name?==?null)???0?:?Name.hashCode()); return?result; } @Override public?boolean?equals(Object?obj)?{ if?(this?==?obj) return?true; if?(obj?==?null) return?false; if?(!(obj?instanceof?TestUserName)) return?false; TestUserName?other?=?(TestUserName)?obj; if?(Name?==?null)?{ if?(other.Name?!=?null) return?false; }?else?if?(!Name.equals(other.Name)) return?false; return?true; } ???????????? public?Integer?getId()?{ return?Id; } public?void?setId(Integer?id)?{ Id?=?id; } public?String?getName()?{ return?Name; } public?void?setName(String?name)?{ Name?=?name; } ?????public?TestUserName(Integer?Id,String?Name){ ???? ?this.Id?=?Id; ???? ?this.Name?=?Name; ???? ?this.set?=?new?HashSet<Cards>(); ?????} }
package?demo_playing_cards; import?java.util.ArrayList; import?java.util.Arrays; import?java.util.HashMap; import?java.util.InputMismatchException; import?java.util.List; import?java.util.Map; import?java.util.Map.Entry; import?java.util.Random; import?java.util.Scanner; import?java.util.Set; /* ?*?1.將創建好的牌存入List有序集合中 ?*/ public?class?Testlist?{ ??????public?List<Cards>?list;??//存放創建好的牌對象 ??????public?List<String>?list1;//存放牌模型的集合框架 ??????public?Map<Integer,TestUserName>?user;//創建學生對象并且隨機選牌 ??????List<Integer>?userStore;?? ??????TestUserName?username; ??????Scanner?input; //??????TestUserName?username; ?????? ??????public?Testlist(){ ???? ??list?=?new?ArrayList<Cards>(); ???? ??list1?=?new?ArrayList(); ???? ??user?=?new?HashMap<Integer,TestUserName>(); ???? ??userStore?=?new?ArrayList<Integer>(); ???? ??input?=?new?Scanner(System.in); ??????} ?????? ??????/** ???????*?創建一個從2~A的集合 ???????*/ ??????public?void?TestAdd(){ ???? ??for(int?i?=?2;?i?<=?10;?i++){ ???? ??list1.add(String.valueOf(i)); ???? ??} ???? ??list1.addAll(Arrays.asList("J","Q","K","A")); //???? ??System.out.println("測試添加牌模型:"); //???? ??for?(String?cards?:?list1)?{ // System.out.print(cards+","); // } ??????} ??????/** ???????*?創建牌 ???????*/ ??????public?void?TestAdd2(){ ???? ??System.out.println("----------創建撲克牌!-----------"); ???? for?(String?cards?:?list1)?{ list.add(new?Cards("方塊",cards)); list.add(new?Cards("梅花",cards)); list.add(new?Cards("紅桃",cards)); list.add(new?Cards("黑桃",cards)); } ???? ???? //測試是否創建成功 ???? System.out.println("----------撲克牌創建成功!-----------"); ???? System.out.print("為:"); ???? for?(Cards?cards?:?list)?{ System.out.print(cards.getDesign()+cards.getNumber()+","); } ???? System.out.println(); ??????} ?????? ?????? ??????/** ???????*?存儲用戶ID的方法 ???????*/ ??????public?void?TestUserStort(Integer?ID){ ???? ??userStore.add(ID); ??????} ?????? ??????/** ???????*?創建用戶對象并且隨機抽取里面的兩張牌 ???????*?@param?args ???????*/ ??????public?void?TestUserName(){ //???? ??boolean?searchFlag=false; ???? ??Integer?ID?=?null; ???? ??for(int?i?=?1;i?<=?2;?i++){? ???? ??while(true){ ?????????? try?{ System.out.println("請輸入第"+i+"個用戶ID"); ???ID?=?input.nextInt(); }?catch?(Exception?e)?{ //?TODO?自動生成的?catch?塊 System.out.println("請輸入整形的ID");//捕捉類型不匹配的錯誤 input.next();????//清空緩沖區 continue; } ?//判斷ID在user集合中是否存在 ??TestUserName?us?=?user.get(ID); ??if(us?!=?null){ ??System.out.println("已存在該學生??!"); ??continue; ??} ???????? ?? ?? ??TestUserStort(ID); ?? ??????????break; ???? ??} ???? ??//輸入用戶名 ???? ??System.out.println("請輸入第"+i+"用戶名"); ???? ?? ???? ??String?name?=?input.next(); ???? ??//將ID和name給創建對象 ???? ???username?=?new?TestUserName(ID,?name); ???? ???user.put(ID,username); ???? ??? } ???? ?? ???? ?? ???? ??Set<Entry<Integer,TestUserName>>?entryset?=?user.entrySet();???? ?? ??? ???for?(Entry<Integer,?TestUserName>?entry?:?entryset)?{ System.out.println("----歡迎玩家:"?+?entry.getValue().getName()); ??? ???} ???? ??}?? ?????? ??????/** ???????*?進行發牌 ???????*/ ??????public?void?TestLicensing(){ ???? ??Random?random?=?new?Random(); ???? ??System.out.println("---------開始發牌...---------"); ???? ???? ??TestUserName?name1?=?user.get(userStore.get(0)); ???? ??TestUserName?name2?=?user.get(userStore.get(1)); ???? ??Cards?ca?=?null; ???? ??int?[]size?=?new?int[2]; ???? ??for(int?i?=?0;i?<?2;?i++){ ???? ??do{ ???? ??ca?=?list.get(random.nextInt(list.size()-1)); ???? ??}while(name1.set.contains(ca)); ???? ??name1.set.add(ca); ???? ??System.out.println(?name1.getName()?+?"用戶所抽到的牌:"?+?ca.getDesign()+ca.getNumber()); ???? ?size[i]?=?list.indexOf(ca); ???? ??} ???? ??Cards?ca1; ???? ??int[]?size2?=?new?int[2]; ???? ??for(int?i?=?0;i?<?2;?i++){ ???? ??do{ ???? ??ca1?=?list.get(random.nextInt(list.size()-1)); ???? ??}while(name1.set.contains(ca1)?||?name2.set.contains(ca)); ???? ??name2.set.add(ca1); ???? ??System.out.println(?name2.getName()?+?"用戶所抽到的牌:"?+?ca1.getDesign()+ca1.getNumber()); ???? ??size2[i]?=?list.indexOf(ca1); ???? ??} ???? ??//對數組進行排序 ???? ??Arrays.sort(size); ???? ??Arrays.sort(size2); ???? ??//進行比較,誰大誰贏 ???? ??if(size[1]>size2[1]){ ???? ??System.out.println(name1.getName()+"獲勝"); ???? ??}else ???? ??System.out.println(name2.getName()+"獲勝"); ??????} ?????? ??????public?static?void?main(String[]?args){ ???? ??Testlist?st?=?new?Testlist(); ???? ??st.TestAdd(); ???? ??st.TestAdd2(); ???? ??st.TestUserName(); ???? ??st.TestLicensing(); ??????} }
2016-08-08
哇,好厲害!
2016-08-26
好巧我也是利用角標排定大小,但是真敢其實是很爛的,關鍵是我忘了比較器咋寫