卡牌是這樣寫的嗎
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;
/**
?* 比較規則
?* @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創建出來
?*/
List<Poker>?poker?=?new?ArrayList<Poker>();
List<Player>?player?=?new?ArrayList<Player>();
/**
?*?1.創建一副撲克
?*?@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++){
//創建一張新撲克牌
Poker?cards?=?new?Poker();
cards.setColour(colours[i]);
cards.setPoint(points[j]);
poker.add(cards);//加入到poker的list中
}
}
System.out.println("------創建撲克牌----------共有"+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.創建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("成功創建玩家id:"+p.getId()+",?姓名:"+p.getName());
// }
console.close();
}
/**
?*?4.發牌
?*?@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(){
//先寫一個比較規則類
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
恩你是對的