卡牌是這樣寫的嗎
import?java.util.ArrayList; import?java.util.List; public?class?Player?{ private?String?id; private?String?name; List<Poker>?handCard?=?new?ArrayList<Poker>();//手牌 public?Player(){}; public?Player(String?id,String?name){ this.id?=?id; this.name?=?name; } public?String?getId()?{ return?id; } public?void?setId(String?id)?{ this.id?=?id; } public?String?getName()?{ return?name; } public?void?setName(String?name)?{ this.name?=?name; } }
public class Poker {
/**撲克牌的類
* @param args
*/
private String colour;
private String point;
public Poker(){}
public Poker(String colour, String point){
this.colour = colour;
this.point = point;
}
public String getColour() {
return colour;
}
public void setColour(String colour) {
this.colour = colour;
}
public String getPoint() {
return point;
}
public void setPoint(String point) {
this.point = point;
}
}
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
/**
?* 比較規(guī)則
?* @author wujianpei
?*
?*/
public class Compare implements Comparator<Poker>{
@Override
public int compare(Poker o1, Poker o2) {
List<String> colours = Arrays.asList("方塊","梅花","紅桃","黑桃");
List<String> points = Arrays.asList("2","3","4","5","6","7","8","9","10","J","Q","K","A");
if(points.indexOf(o1.getPoint())==points.indexOf(o2.getPoint()))
return((Integer)(colours.indexOf(o1.getColour())))
.compareTo
((Integer)(colours.indexOf(o2.getColour())));
else{
return((Integer)(points.indexOf(o1.getPoint())))
.compareTo
((Integer)(points.indexOf(o2.getPoint())));
}
}
}
import?java.util.ArrayList; import?java.util.Collections; import?java.util.List; import?java.util.Scanner; public?class?MainTest?{ /**兩張牌斗大的測試類 ?*?@param?args ?*?先把poker?和?Player的list創(chuàng)建出來 ?*/ List<Poker>?poker?=?new?ArrayList<Poker>(); List<Player>?player?=?new?ArrayList<Player>(); /** ?*?1.創(chuàng)建一副撲克 ?*?@param?args ?*/ public?void?buildPoker(){ String?colours[]?=?{"方塊","梅花","紅桃","黑桃"}; String?points[]?=?{"2","3","4","5","6","7","8","9","10","J","Q","K","A"}; for?(int?i?=?0?;?i<4?;i++){ for(int?j?=?0;?j<13;j++){ //創(chuàng)建一張新?lián)淇伺? Poker?cards?=?new?Poker(); cards.setColour(colours[i]); cards.setPoint(points[j]); poker.add(cards);//加入到poker的list中 } } System.out.println("------創(chuàng)建撲克牌----------共有"+poker.size()+"張"); } /** ?*?2.洗牌 ?*?@param?args ?*/ public?void?washCards(){ Collections.shuffle(poker); System.out.println("------洗牌------------"); for?(Poker?p?:?poker)?{ System.out.print(p.getColour()+p.getPoint()); }System.out.println(); } /** ?*?3.創(chuàng)建2個玩家 ?*?@param?args ?*/ public?void?addPlayers(){ Scanner?console?=?new?Scanner(System.in); for(int?i?=?1;?i<3;i++){ Player?p?=?new?Player(); System.out.println("-----請輸入玩家"+i+"的id------"); p.setId(console.next()); System.out.println("-----請輸入玩家"+i+"的姓名------"); p.setName(console.next()); player.add(p); } // for?(Player?p?:?player)?{ // System.out.println("成功創(chuàng)建玩家id:"+p.getId()+",?姓名:"+p.getName()); // } console.close(); } /** ?*?4.發(fā)牌 ?*?@param?args ?*/ public?void?getcards(){ //拿一張牌出來 for(int?i?=?0;?i<2;i++){ for(int?j?=?0;j<2;j++){ //poker中拿第一張牌 Poker?card?=?poker.get(0); //放入Playerj的list里面 Player?play?=??player.get(j); play.handCard.add(card); //把第一張牌從pokerlist中移除 poker.remove(card); // System.out.println("玩家"+(j+1)+"獲得第"+(i+1)+"張卡片"); } } //打印雙方的牌,等下看結果清晰 for(int?i?=0?;i<2;i++){ for(int?j?=?0?;?j<2;?j++){ System.out.println("玩家"+(i+1)+"的第"+(j+1)+"張牌是"+player.get(i).handCard.get(j).getColour() +player.get(i).handCard.get(j).getPoint()); } } } /** ?*?5比較大小 ?*?@param?args ?*/ public?void?testCompare(){ //先寫一個比較規(guī)則類 Compare?cp?=?new?Compare(); //比較自己手牌大小 for(int?i?=?0?;?i<2;?i++){ Collections.sort(player.get(i).handCard,?cp); System.out.println("玩家"+player.get(i).getName()+"的最大手牌為:" +player.get(i).handCard.get(1).getColour()+player.get(i).handCard.get(1).getPoint()); } //比較雙方最大的牌 if(?cp.compare(player.get(0).handCard.get(0) ,?player.get(1).handCard.get(1))>0){ System.out.println("玩家"+player.get(0).getName()+"贏了"); } else{ System.out.println("玩家"+player.get(1).getName()+"贏了"); } } public?static?void?main(String[]?args)?{ MainTest?mt?=?new?MainTest(); mt.buildPoker(); mt.washCards(); mt.addPlayers(); mt.getcards(); mt.testCompare(); } }
2022-03-24
雖然我已經照敲了一遍了不過上傳了還是很棒好的 謝謝
2016-04-15
是我錯了,compare方法沒看好
2016-04-15
//比較自己手牌大小
????????for(int?i?=?0?;?i<2;?i++){
????????Collections.sort(player.get(i).handCard,?cp);
????????System.out.println("玩家"+player.get(i).getName()+"的最大手牌為:"
????????+player.get(i).handCard.get(1).getColour()+player.get(i).handCard.get(1).getPoint());
這里面那個player.get(i).handCard.get(1).getColour()+player.get(i).handCard.get(1).getPoint());是不是有錯的啊,你這樣比較是不是就寫成玩家第二張牌就是最大的。
2016-04-09
恩你是對的