課程
/后端開發(fā)
/Java
/Java入門第三季
java新手,花了半天時間完成的! 簡易的撲克牌比較大?。?http://idcbgp.cn/opus/resource?opus_id=3480
2017-12-01
源自:Java入門第三季 7-1
正在回答
才知道有我的作品這個東西
Card.java package?com.jiang.cards; ? //要比較卡牌的大小,所以要添加比較方法 public?class?Card?implements?Comparable<Card>?{ ? ????public?String?suit; ????//花色 ????public?String?number; ????//點數(shù) ????Card(String?suit,?String?number){ ????????this.suit=suit; ????????this.number=number; ????} ????? ????//展示卡牌信息用 ????public?String?toString(){ ????????return?suit+number; ????} ????? ????//實現(xiàn)比較方法 ????public?int?compareTo(Card?c){ ????????if(this.getNumberNum()==c.getNumberNum()) ????????????return?this.getSuitNum()-c.getSuitNum(); ????????else?return?this.getNumberNum()-c.getNumberNum(); ????} ????? ????//獲取點數(shù)排序 ????public?int?getNumberNum(){ ????????String[]?numbers={"2","3","4","5","6","7","8","9","10",?"J","Q","K","A"}; ????????for(int?i=0;i<numbers.length;i++){ ????????????if(numbers[i].equals(number)) ????????????????return?i; ????????} ????????return?-1; ????} ? ????//獲取花色排序 ????public?int?getSuitNum(){ ????????String[]?suits={"黑桃","紅桃","梅花","方片"}; ????????for(int?i=0;i<suits.length;i++){ ????????????if(suits[i].equals(suit)) ????????????????return?i; ????????} ????????return?-1; ????} } ? Player.java package?com.jiang.cards; ? import?java.util.ArrayList; import?java.util.List; ? //用戶類,為了防止ID重復(fù),重寫了equals,這樣可以調(diào)用contains判斷 public?class?Player?{ ????? ????public?String?id; ????public?String?name; ????public?List<Card>?cards; ????Player(String?id,?String?name){ ????????this.id=id;?this.name=name; ????????cards=new?ArrayList<Card>(); ????} ????public?void?setCards(Card?c){ ????????cards.add(c); ????} ????//重寫toString只是為了寫程序的時候測試用著方便 ????public?String?toString(){ ????????return?"Name:"+name; ????} ????public?boolean?equals(Object?o){ ????????if(this==o) ????????????return?true; ????????if(o==null) ????????????return?false; ????????if(!(o?instanceof?Player)) ????????????return?false; ????????Player?p=(Player)o; ????????return?id.equals(p.id); ????} } ? Game.java package?com.jiang.cards; ? import?java.util.ArrayList; import?java.util.Collections; import?java.util.InputMismatchException; import?java.util.List; import?java.util.Random; import?java.util.Scanner; ? public?class?Game?{ ????? ????private?List<Card>?cards; ????private?List<Player>?players; ????Game(){ ????????cards=new?ArrayList<Card>(); ????????players=new?ArrayList<Player>(); ????} ????//初始化卡牌? ????public?void?setCards(){ ????????System.out.println("-----------創(chuàng)建撲克牌--------------"); ????????String[]?suits={"黑桃","紅桃","梅花","方片"};//花色? ????????String[]?numbers={"2","3","4","5","6","7","8","9","10",?"J","Q","K","A"};//點數(shù)? ????????for(int?i=0;i<suits.length;i++){ ????????????for(int?j=0;j<numbers.length;j++){ ????????????????cards.add(new?Card(suits[i],numbers[j])); ????????????} ????????} ????????System.out.println("-----------撲克牌創(chuàng)建成功!--------------"); ????????System.out.println(cards); ????} ????//洗牌,第一個對象插入隨機位置 ????public?void?shuffle(){ ????????System.out.println("-----------開始洗牌!--------------"); ????????Random?random=new?Random(); ????????for(int?i=0;i<cards.size();i++){ ????????????//洗牌次數(shù)我隨便設(shè)的,沒有科學(xué)依據(jù)? ????????????Card?c=cards.get(0); ????????????//獲取第一個元素 ????????????cards.add(random.nextInt(cards.size()),c); ????????????//將第一個元素再次添加在任意位置? ????????????cards.remove(0); ????????????//移除第一個元素 ????????} ????????System.out.println("-----------洗牌結(jié)束!--------------"); ????????//System.out.println(cards);?} ????} ????//初始化玩家2人 ????public?void?setPlayers(){ ????????Scanner?in=new?Scanner(System.in); ????????int?i=1; ????????do{ ????????????System.out.println("請輸入第"+i+"位玩家的ID和姓名:"); ????????????while(true){ ????????????????try{ ????????????????????System.out.println("請輸入ID:"); ????????????????????int?id=in.nextInt(); ????????????????????if(players.contains(new?Player(id+"",null))) ????????????????????????throw?new?Exception(); ????????????????????//ID已存在,拋出異常?System.out.println("請輸入玩家姓名:"); ????????????????????System.out.println("請輸入姓名:"); ????????????????????String?name=in.next(); ????????????????????players.add(new?Player(id+"",name)); ????????????????????break; ????????????????????//新建信息成功,跳出循環(huán) ????????????????}catch(InputMismatchException?e){ ????????????????????in=new?Scanner(System.in); ????????????????????//這個必須有,不然就是死循環(huán)了 ????????????????????System.out.println("請輸入整數(shù)類型的ID!"); ????????????????}catch(Exception?e){ ????????????????????System.out.println("該ID已存在,請重新輸入!"); ????????????????} ????????????} ????????????????i++; ????????}while(i<3); ????????for(int?j=0;j<players.size();j++){ ????????????System.out.println("---歡迎玩家:"+players.get(j).name); ????????} ????} ????????? ????//發(fā)牌 ????public?void?dealCards(){ ????????System.out.println("-----------開始發(fā)牌!--------------"); ????????for(int?i=0;i<2;i++){//每人發(fā)牌數(shù)i ????????????for(int?j=0;j<players.size();j++){//玩家數(shù)j ????????????????System.out.println("---玩家"+players.get(j).name+"-拿牌"); ????????????????players.get(j).setCards(cards.get(0));?cards.remove(0); ????????????}? ????????} ????????System.out.println("-----------發(fā)牌結(jié)束!--------------"); ????} ????? ????//比較卡牌大小 ????public?void?playCards(){ ????????System.out.println("-----------游戲開始!--------------"); ????????for(int?i=0;i<players.size();i++){ ????????????Collections.sort(players.get(i).cards); ????????????System.out.println("玩家:"+players.get(i).name+"最大的手牌為"+players.get(i).cards.get(1)); ????????????int?judge=players.get(0).cards.get(1).compareTo(players.get(1).cards.get(1)); ????????????String?name=judge>0???players.get(0).name:players.get(1).name; ????????????//條件語句,相當于if...else ????????????System.out.println("-----------玩家:"+name+"獲勝!--------------"); ????????} ????} ? ????//展示手牌? ????public?void?showCards(){ ????????System.out.println("-----------玩家手牌展示--------------"); ????????System.out.println(players.get(0)+""+players.get(0).cards); ????????System.out.println(players.get(1)+""+players.get(1).cards); ????} ? } ? PlayCard.java package?com.jiang.cards; ? public?class?PlayCard?{ ????? ????public?static?void?main(String[]?args)?{ ????????Game?gm=new?Game(); ????????gm.setCards();//獲取卡牌 ????????gm.shuffle();//洗牌 ????????gm.setPlayers();//獲取用戶 ????????gm.dealCards();//發(fā)牌 ????????gm.playCards();//開始游戲 ????????gm.showCards();//展示卡牌 ? ????} ? }
舉報
Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧
4 回答簡易撲克牌游戲代碼
5 回答簡易撲克牌游戲程序!
3 回答關(guān)于簡易撲克牌創(chuàng)建的問題
1 回答求簡易撲克牌小游戲的答案參考
1 回答我的簡單撲克牌代碼
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網(wǎng)安備11010802030151號
購課補貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號
2018-07-31
才知道有我的作品這個東西
2017-12-08