做完了作業(yè),但是感覺異常處理和MAP類還是不熟,程序里沒怎么用到。
Game.java主程序:
package?SimplePoker; import?java.util.InputMismatchException; import?java.util.Scanner; public?class?Game?{ static?int?ID1,ID2; static?String?name1,name2; public?static?void?main(String[]?args)?{ Game?game?=?new?Game(); Pokercards?poker?=?new?Pokercards(); game.createplayer(); Player?player1?=?new?Player(ID1,name1); Player?player2?=?new?Player(ID2,name2); poker.disorder(); game.deal(poker,?player1,?player2); System.out.println("----------開始游戲...----------"); int?flag?=?player1.compareTo(player2); if(flag==1)System.out.println("----------玩家:"+player1.name+"獲勝!----------"); else?System.out.println("----------玩家:"+player2.name+"獲勝!----------"); System.out.println("玩家各自的手牌為:"); System.out.println(player1.name+":["+player1.cards[0]+","+player1.cards[1]+"]"); System.out.println(player2.name+":["+player2.cards[0]+","+player2.cards[1]+"]"); } //發(fā)牌 public?void?deal(Pokercards?poker,Player?player1,Player?player2)?{ System.out.println("----------開始發(fā)牌...----------"); player1.cards[0]?=?poker.cards.get(0); System.out.println("----玩家:"+player1.name+"-拿牌"); player2.cards[0]?=?poker.cards.get(1); System.out.println("----玩家:"+player2.name+"-拿牌"); player1.cards[1]?=?poker.cards.get(2); System.out.println("----玩家:"+player1.name+"-拿牌"); player2.cards[1]?=?poker.cards.get(3); System.out.println("----玩家:"+player2.name+"-拿牌"); System.out.println("----------發(fā)牌結(jié)束!----------"); } public?void?createplayer()?{ try{Scanner?in?=?new?Scanner(System.in); System.out.println("----------創(chuàng)建玩家...----------"); System.out.println("請輸入第1位玩家的ID和姓名:"); System.out.println("輸入ID:"); ID1?=?in.nextInt(); System.out.println("輸入姓名:"); name1?=?in.next(); System.out.println("請輸入第2位玩家的ID和姓名:"); System.out.println("輸入ID:"); ID2?=?in.nextInt(); System.out.println("輸入姓名:"); name2?=?in.next(); }catch(InputMismatchException?e){ System.out.println("請輸入數(shù)字!"); createplayer(); }catch(Exception?e)?{ System.out.println("發(fā)現(xiàn)未知錯誤,請重新創(chuàng)建玩家!"); createplayer(); } } }
Pokercards.java:
package?SimplePoker; import?java.util.ArrayList; import?java.util.Iterator; import?java.util.List; import?java.util.Random; public?class?Pokercards?{ public?List<String>?cards?=?new?ArrayList(); public?Pokercards()?{ System.out.println("----------創(chuàng)建撲克牌----------"); String[]?str1?=?new?String[]{"黑桃","紅桃","梅花","方片"}; String[]?str2?=?new?String[]{"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; for(int?i=0;i<str1.length;i++)?{ for(int?j=0;j<str2.length;j++)?{ cards.add(str1[i]+str2[j]); } } System.out.println("----------撲克牌創(chuàng)建成功----------"); this.show(); } //打亂牌序 public?void?disorder()?{ System.out.println("----------開始洗牌...----------"); Random?random?=?new?Random(); int?k?=?random.nextInt(100);? for(int?i=0;i<k;i++)?{ int?t1?=?random.nextInt(52); int?t2?=?random.nextInt(52); if(t1?==?t2)continue; String?temp?=?cards.get(t1); cards.set(t1,cards.get(t2)); cards.set(t2,temp); } System.out.println("----------洗牌結(jié)束!----------"); } public?void?show()?{ Iterator?i?=?cards.iterator(); System.out.print("為:["+i.next()); while(i.hasNext())?{ System.out.print(","+i.next()); } System.out.println("]"); } }
Player.java:
package?SimplePoker; public?class?Player?implements?Comparable<Player>?{ public?int?ID; public?String?name; public?String[]?cards?=?new?String[2]; public?Player(int?id,?String?name)?{ this.ID=id; this.name=name; System.out.println("----歡迎玩家:"+this.name); } @Override public?int?compareTo(Player?o)?{ String?str1?=?this.cards[0]; String?str2?=?this.cards[1]; String?str3?=?o.cards[0]; String?str4?=?o.cards[1]; System.out.println("玩家:"+this.name+"最大的手牌為:"+this.compare(str1,?str2)); System.out.println("玩家:"+o.name+"最大的手牌為:"+this.compare(str3,?str4)); String?result?=?this.compare(this.compare(str1,?str2),this.compare(str3,?str4)); if(result.contentEquals(str1)||result.contentEquals(str2))return?1; else?return?-1; } public?String?compare(String?str1,String?str2)?{ String?data1?=?new?String("2345678910JQKA"); String?data2?=?new?String("黑桃紅桃梅花方片"); String?str1_1?=?str1.substring(2); String?str2_1?=?str2.substring(2); String?str1_2?=?str1.substring(0,2); String?str2_2?=?str2.substring(0,2); if(!str1_1.contentEquals(str2_1))?{ if(data1.indexOf(str1_1)>data1.indexOf(str2_1))return?str1; else?return?str2; }else?{ if(data2.indexOf(str1_2)<data2.indexOf(str2_2))return?str1; else?return?str2; } } }