重新整理了下,基本實現(xiàn)了功能,不過和老師的略有不同,加油!完成第一季到第三季
package?poketest; public?class?card?implements?Comparable<card>{//記得加泛型 ????String?huase; ????String?num; ????Double?huasevalue; ????int?numvalue; ????Double?value; ????public?card(String?huase,String?num,Double?huasevalue,int?numvalue){ ????????this.huase=huase; ????????this.num=num; ????????this.value=numvalue*10+huasevalue; ????} ????@Override ????public?int?compareTo(card?o)?{ ????????return?this.value.compareTo(o.value); ????} }
package?poketest; import?java.util.ArrayList; import?java.util.List; import?java.util.Scanner; public?class?player?{ ????int?id; ????String?name; ????List<card>?handcard; ????Scanner?input; ????public?player(){ ????????handcard=new?ArrayList<>(); ????????System.out.println("請輸入玩家的id"); ????????input=new?Scanner(System.in); ????????this.id=input.nextInt(); ????????System.out.println("玩家id為"+this.id+""); ????????System.out.println("請輸入玩家的姓名"); ????????this.name=input.next(); ????????System.out.println("玩家姓名為"+this.name+""); ????} }
package?poketest; import?java.util.ArrayList; import?java.util.Collections; import?java.util.List; public?class?poke?{ ????//屬性 ????//List<card>?suijipai; ????List<card>?pai=new?ArrayList<card>();//直接定義,為什么不能用構造方法 ????player?player1=new?player(); ????player?player2=new?player(); ????card?p1maxcard; ????card?p2maxcard; ????//方法1?初始化完整的順序牌 ????public?void?intialCard(){ ????????String[]?huase0={"黑桃","紅桃","梅花","方片"}; ????????String[]?num0={"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; ????????double?[]?huasevalue0={1.0,2.0,3.0,4.0}; ????????int[]?numvalue0={2,3,4,5,6,7,8,9,10,11,12,13,14}; ????????for(int?i=0;i<4;i++){ ????????????for(int?j=0;j<13;j++){ ????????????????card?c0=new?card(huase0[i],num0[j],huasevalue0[i],numvalue0[j]); ????????????????this.pai.add(c0); ????????????} ????????} ????????System.out.println("撲克初始化完成了啊"); ????} ????public?void?show(){ ????????int?index=0; ????????System.out.println("開始展示撲克的"?+ ????????????????"順序啦啦啦"); ????????for?(card?c:this.pai)?{ ????????????System.out.print(c.huase+c.num+","); ????????????index++; ????????????if(index%13==0){ ????????????????System.out.println(); ????????????} ????????}System.out.println(); ????} ????public?void?fapai(){ ????????this.player1.handcard.add(pai.get(0)); ????????System.out.println("玩家1摸第一張牌"); ????????this.player2.handcard.add(pai.get(1)); ????????System.out.println("玩家2摸第二張牌"); ????????this.player1.handcard.add(pai.get(2)); ????????System.out.println("玩家1摸第三張牌"); ????????this.player2.handcard.add(pai.get(3)); ????????System.out.println("玩家2摸第四張牌"); ????} ????public?void?showMaxCard(){ ????????//比較player1兩張牌哪個大并輸出;比較player2兩張牌哪個大并輸出。 ????????Collections.sort(this.player1.handcard); ????????Collections.sort(this.player2.handcard); ????????p1maxcard=this.player1.handcard.get(1); ????????p2maxcard=this.player2.handcard.get(1); ????????System.out.println("玩家1手中最大的牌是"+p1maxcard.huase+p1maxcard.num); ????????System.out.println("玩家2手中最大的牌是"+p2maxcard.huase+p2maxcard.num); ????} ????public?void?playerFight(){ ????????if(this.p1maxcard.value>this.p2maxcard.value){ ????????????System.out.println("玩家一:"+this.player1.name+"勝利"); ????????}else{ ????????????System.out.println("玩家二:"+this.player2.name+"勝利"); ????????} ????} ????public?void?showHandCard(){ ????????System.out.print("玩家一"+this.player1.name+"的手牌為"); ????????for?(card?showcard:this.player1.handcard)?{ ????????????System.out.print(showcard.huase+showcard.num+","); ????????} ????????System.out.println("---------------------------------"); ????????System.out.print("玩家二"+this.player2.name+"的手牌為"); ????????for?(card?showcard:this.player2.handcard)?{ ????????????System.out.print(showcard.huase+showcard.num+","); ????????} ????} }
package?poketest; import?java.util.Collections; public?class?mainmethod?{ ????public?static?void?main(String[]?args)?{ ????????poke?p1=new?poke(); ????????p1.intialCard(); ????????p1.show(); ????????Collections.shuffle(p1.pai); ????????System.out.println("洗牌?。。。?!"); ????????p1.show(); ????????p1.fapai(); ????????p1.showMaxCard(); ????????p1.playerFight(); ????????p1.showHandCard(); ????} }
運行情況如下:
2018-11-05
我想問一下我基本照著你的寫的為啥會報錯。就是?return this.rank.compareTO(o.rank);這一句。報錯是
Cannot invoke compareTO(int) on the primitive type int,我查了查還是沒搞懂錯在哪了
package com.ft;
public class Card implements Comparable<Card>{
?? String color;
?? String point;
?? int rank;
? public Card(String color,String point,int rank) {
?? ?? this.color=color;
?? ?? this.point=point;
?? ?? this.rank=rank;
? }
? //public Card(){
?// };
@Override
public int compareTo(Card o) {
?? ?// TODO Auto-generated method stub
?? ?return this.rank.compareTO(o.rank);
}
}
2018-09-08
膜拜一下,準備開始寫!