課程
/后端開(kāi)發(fā)
/Java
/Java入門第三季
1-3季內(nèi)容的知識(shí),一套完整的代碼
謝謝各位大神
2017-10-26
源自:Java入門第三季 7-1
正在回答
Card.java package?com.jiang.cards; //要比較卡牌的大小,所以要添加比較方法 public?class?Card?implements?Comparable<Card>?{ public?String?suit; //花色 public?String?number; //點(diǎn)數(shù) Card(String?suit,?String?number){ this.suit=suit; this.number=number; } //展示卡牌信息用 public?String?toString(){ return?suit+number; } //實(shí)現(xiàn)比較方法 public?int?compareTo(Card?c){ if(this.getNumberNum()==c.getNumberNum()) return?this.getSuitNum()-c.getSuitNum(); else?return?this.getNumberNum()-c.getNumberNum(); } //獲取點(diǎn)數(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只是為了寫程序的時(shí)候測(cè)試用著方便 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"};//點(diǎn)數(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); } //洗牌,第一個(gè)對(duì)象插入隨機(jī)位置 public?void?shuffle(){ System.out.println("-----------開(kāi)始洗牌!--------------"); Random?random=new?Random(); for(int?i=0;i<cards.size();i++){ //洗牌次數(shù)我隨便設(shè)的,沒(méi)有科學(xué)依據(jù)? Card?c=cards.get(0); //獲取第一個(gè)元素 cards.add(random.nextInt(cards.size()),c); //將第一個(gè)元素再次添加在任意位置? cards.remove(0); //移除第一個(gè)元素 } 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("請(qǐng)輸入第"+i+"位玩家的ID和姓名:"); while(true){ try{ System.out.println("請(qǐng)輸入ID:"); int?id=in.nextInt(); if(players.contains(new?Player(id+"",null))) throw?new?Exception(); //ID已存在,拋出異常?System.out.println("請(qǐng)輸入玩家姓名:"); System.out.println("請(qǐng)輸入姓名:"); String?name=in.next(); players.add(new?Player(id+"",name)); break; //新建信息成功,跳出循環(huán) }catch(InputMismatchException?e){ in=new?Scanner(System.in); //這個(gè)必須有,不然就是死循環(huán)了 System.out.println("請(qǐng)輸入整數(shù)類型的ID!"); }catch(Exception?e){ System.out.println("該ID已存在,請(qǐng)重新輸入!"); } } 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("-----------開(kāi)始發(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("-----------游戲開(kāi)始!--------------"); 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; //條件語(yǔ)句,相當(dāng)于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();//開(kāi)始游戲 gm.showCards();//展示卡牌 } }
鄧一格 提問(wèn)者
慕蓋茨6838563
沒(méi)有名字重復(fù)的try'catch語(yǔ)句啊,少考慮了這種情況把
public void setPlayers()這個(gè)函數(shù)是不是有問(wèn)題呀,為什么我在創(chuàng)建第一個(gè)ID之后再創(chuàng)建ID就顯示該ID已存在,請(qǐng)重新輸入!
大神,要學(xué)多久可以自己敲出這樣的代碼?
Jonas1995
public class Card implements Comparable<Card>
//Card下面為什么出現(xiàn)了波浪線
沒(méi)事兒
qq_拂面微涼_0
舉報(bào)
Java中你必須懂得常用技能,不容錯(cuò)過(guò)的精彩,快來(lái)加入吧
3 回答撲克牌代碼
1 回答撲克牌的代碼
1 回答撲克牌有源碼嗎
8 回答我的撲克牌代碼
1 回答我的簡(jiǎn)單撲克牌代碼
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2017-11-10
2018-09-08
沒(méi)有名字重復(fù)的try'catch語(yǔ)句啊,少考慮了這種情況把
2018-05-22
public void setPlayers()這個(gè)函數(shù)是不是有問(wèn)題呀,為什么我在創(chuàng)建第一個(gè)ID之后再創(chuàng)建ID就顯示該ID已存在,請(qǐng)重新輸入!
2018-01-23
大神,要學(xué)多久可以自己敲出這樣的代碼?
2018-01-20
public class Card implements Comparable<Card>
//Card下面為什么出現(xiàn)了波浪線
2017-11-15
沒(méi)事兒