//Card
import?java.util.Arrays;
import?java.util.List;
public?class?Card?implements?Comparable<Card>?{
private?String?colour;
private?String?point;
public?final?static?List<String>?cardColour?=?Arrays.asList("方片",?"梅花",?"紅桃",?"黑桃");
public?final?static?List<String>?cardPoint?=?Arrays.asList("2",?"3",?"4",?"5",?"6",?"7",?"8",?"9",?"10",?"J",?"Q",
"k",?"A");
public?Card()?{
}
public?Card(String?colour,?String?point)?{
this.colour?=?colour;
this.point?=?point;
}
public?String?getColour()?{
return?colour;
}
public?String?getPoint()?{
return?point;
}
//?不然輸出的都是地址
@Override
public?String?toString()?{
return?"["?+?colour?+?"?"?+?point?+?"]";
}
@Override
public?int?compareTo(Card?o)?{
if?(cardPoint.indexOf(this.point)?==?cardPoint.indexOf(o.point))?{
return?Integer.valueOf(cardColour.indexOf(this.colour))
.compareTo(Integer.valueOf(cardColour.indexOf(o.colour)));
}?else?{
return?Integer.valueOf(cardPoint.indexOf(this.point))
.compareTo(Integer.valueOf(cardPoint.indexOf(o.point)));
}
}
}
//player
import?java.util.ArrayList;
import?java.util.List;
public?class?Player?{
private?int?id;
private?String?name;
private?List<Card>?palyCards;
public?Player()?{
}
public?Player(int?id,?String?name)?{
this.id?=?id;
this.name?=?name;
palyCards?=?new?ArrayList<Card>();
}
public?int?getId()?{
return?id;
}
public?String?getName()?{
return?name;
}
public?List<Card>?getPalyCards()?{
return?palyCards;
}
}
//game
import?java.util.ArrayList;
import?java.util.Collections;
import?java.util.List;
import?java.util.Scanner;
public?class?Game?{
private?Scanner?scanner?=?new?Scanner(System.in);
private?int?playerNum?=?2;
private?int?cardNum?=?2;
private?static?List<Card>?cardList;
private?static?List<Player>?playerList;
private?Game()?{
cardList?=?new?ArrayList<Card>();
playerList?=?new?ArrayList<Player>();
}
//?順序的初始牌
private?void?newCard()?{
String[]?colourGame?=?{?"黑桃",?"紅桃",?"梅花",?"方片"?};
String[]?pointGame?=?{?"2",?"3",?"4",?"5",?"6",?"7",?"8",?"9",?"10",?"J",?"Q",?"k",?"A"?};
Card?newcard;
for?(int?i?=?0;?i?<?colourGame.length;?i++)?{
for?(int?j?=?0;?j?<?pointGame.length;?j++)?{
newcard?=?new?Card(colourGame[i],?pointGame[j]);
cardList.add(newcard);
//?System.out.println(newcard.getColour()?+?newcard.getPoint());
}
}
}
//?洗牌
private?void?Shuffle()?{
System.out.println("--------洗牌--------");
Collections.shuffle(cardList);
}
//?獲取玩家
private?void?gamePlayer()?{
int?num?=?0;
int?id?=?0;
while?(num?<?playerNum)?{
try?{
System.out.println("請(qǐng)輸入第"?+?(num?+?1)?+?"個(gè)玩家的ID:");
id?=?scanner.nextInt();
}?catch?(Exception?e)?{
scanner.next();
System.out.println("輸入錯(cuò)誤,請(qǐng)輸入正整數(shù)!!");
continue;
}
System.out.println("請(qǐng)輸入第"?+?(num?+?1)?+?"個(gè)玩家的姓名:");
String?name;
name?=?scanner.next();
Player?player?=?new?Player(id,?name);
playerList.add(player);
System.out.println("添加了ID:"?+?player.getId()?+?"的玩家:"?+?player.getName());
num++;
}
}
//?發(fā)牌
private?void?cardDeal()?{
System.out.println("--------開始發(fā)牌--------");
for?(int?i?=?0;?i?<?cardNum;?i++)?{
for?(int?j?=?0;?j?<?playerNum;?j++)?{
Card?cd?=?cardList.get(i?*?playerNum?+?j);
playerList.get(j).getPalyCards().add(cd);
//?System.out.println(playerList.get(j).getPalyCards());
}
}
System.out.println("--------發(fā)牌結(jié)束--------");
}
//?游戲進(jìn)行
private?void?play()?{
System.out.println("--------游戲開始--------");
int?winPlayer?=?0;
Card?maxCard?=?playerList.get(0).getPalyCards().get(0);
for?(int?i?=?0;?i?<?playerNum;?i++)?{
Collections.sort(playerList.get(i).getPalyCards());
Collections.reverse(playerList.get(i).getPalyCards());
System.out.println("玩家:"?+?playerList.get(i).getName()?+?"?的手牌為:"?+?playerList.get(i).getPalyCards());
if?(maxCard.compareTo(playerList.get(i).getPalyCards().get(0))?<?0)?{
maxCard?=?playerList.get(i).getPalyCards().get(0);
winPlayer?=?i;
}
}
System.out.println("恭喜!!"?+?"ID:"?+?playerList.get(winPlayer).getId()?+?"?的玩家:"
+?playerList.get(winPlayer).getName()?+?"?獲得勝利!");
System.out.println("最大的牌為:"?+?playerList.get(winPlayer).getPalyCards().get(0));
}
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
Game?game?=?new?Game();
game.gamePlayer();
game.newCard();
game.Shuffle();
game.cardDeal();
game.play();
}
}
2016-06-27
已修改id重復(fù)不檢測(cè)
2016-06-23
同學(xué),咱輸入重復(fù)的id也不會(huì)被檢測(cè)。還有就是我們輸出撲克牌是換行的。和老師的效果不一樣啊。