package?com.xiaoyuexiaos;
import?java.util.ArrayList;
import?java.util.List;
import?java.util.Random;
import?java.util.Scanner;
public?class?TestGame?{
//定義一個(gè)List來(lái)存儲(chǔ)撲克牌
public?List<Pukepai>?aPuKePai;
public?List<Player>?aPlayer;
//初始化List
public?TestGame(){
this.aPuKePai?=?new?ArrayList<Pukepai>();?
this.aPlayer?=?new?ArrayList<Player>();
}
/**
?*?添加撲克牌
?*?*/
public?void?addPuKePai(){
String[]?PuKePaitype?=?{"黑桃","紅桃","梅花","方片"};
String[]?PuKePaipoints?=?{"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
int?typeSize?=?PuKePaitype.length;
int?pointsSize?=?PuKePaipoints.length;
for(int?i=0;i<typeSize;i++){
for(int?j=0;j<pointsSize;j++){
Pukepai?one?=?new?Pukepai(PuKePaitype[i],PuKePaipoints[j]);
aPuKePai.add(one);
//System.out.println("添加了牌:"+?PuKePaitype[i]?+?PuKePaipoints[j]);
}
}
}
/**
?*?添加玩家
?*?*/
public?void?addPlayer(){
Scanner?input?=?new?Scanner(System.in);
for(int?i?=?0;?i<2?;?i++){
System.out.println("請(qǐng)輸入玩家id:");
int?id?=?input.nextInt();
System.out.println("請(qǐng)輸入玩家姓名:");
String?name?=?input.next();
List<Pukepai>?handPukepai?=?new?ArrayList<Pukepai>();
Player?p1?=?new?Player(name,id,handPukepai);
aPlayer.add(p1);
System.out.println("添加了玩家:"?+?p1.getName());
// for(Player?p:aPlayer){
// if(id?==?p.getId()){
// System.out.println("該ID已被占用?。?!");
// i--;
// break;
// }
// else{
//
// }
// }
//System.out.println("請(qǐng)輸入玩家姓名:");
//name?=?input.next();
}
input.close();
}
/**
?*?洗牌
?*?*/
public?void?mixPukepai(){
Random?random?=?new?Random();
// System.out.println("洗牌前為:");
// for(Pukepai?p2:aPuKePai){
// System.out.println(p2.getType()+p2.getPoints());
// }
for(Pukepai?pkp:aPuKePai){
int?a?=?random.nextInt(52);
Pukepai?p1?=?aPuKePai.get(a);
aPuKePai.set(a,?pkp);
int?index?=?aPuKePai.indexOf(pkp);
aPuKePai.set(index,?p1);
}
// System.out.println("洗牌后為:");
// for(Pukepai?p2:aPuKePai){
// System.out.println(p2.getType()+p2.getPoints());
// }
}
/**
?*?發(fā)牌
?*?*/
public?void?givePlayPukepai(){
Player?player1?=?aPlayer.get(0);
Player?player2?=?aPlayer.get(1);
System.out.println("給玩家"+player1.getName()+"發(fā)第一張牌");
Pukepai?p1?=?aPuKePai.get(0);
player1.getHandPukepai().add(p1);
System.out.println("給玩家"+player2.getName()+"發(fā)第一張牌");
Pukepai?p2?=?aPuKePai.get(1);
player2.getHandPukepai().add(p2);
System.out.println("給玩家"+player1.getName()+"發(fā)第二張牌");
Pukepai?p3?=?aPuKePai.get(2);
player1.getHandPukepai().add(p3);
System.out.println("給玩家"+player2.getName()+"發(fā)第二張牌");
Pukepai?p4?=?aPuKePai.get(1);
player2.getHandPukepai().add(p4);
System.out.println("發(fā)牌結(jié)束??!");
}
/**
?*?得到玩家手中最大的一張手牌
?*?傳入一個(gè)玩家作為參數(shù)
?*?取得他的手牌
?*?進(jìn)行比較大小
?*?*/
public?Pukepai?getMaxHandPukepai(Player?p){
List<Pukepai>?handPukepaiList?=?p.getHandPukepai();
Pukepai?p1?=?handPukepaiList.get(0);
Pukepai?p2?=?handPukepaiList.get(1);
return?getMaxPukepai(p1,p2);
}
/**
?*?比較兩張牌誰(shuí)更大
?*?*/
public?Pukepai?getMaxPukepai(Pukepai?p1,Pukepai?p2){
String[]?PuKePaitype?=?{"方片","梅花","紅桃","黑桃"};
String[]?PuKePaipoints?=?{"2","3","4","5","6","7","8","9","10","J","Q","K","A"};
int?indexType1?=?0;
int?indexType2?=?0;
int?indexPoint1?=?0;
int?indexPoint2?=?0;
//得到手牌Points對(duì)應(yīng)的索引
for(int?i?=0;i<PuKePaipoints.length;i++){
if(p1.getPoints()==PuKePaipoints[i]){
indexPoint1?=?i;
}
if(p2.getPoints()==PuKePaipoints[i]){
indexPoint2?=?i?;
}
}
//得到手牌type對(duì)應(yīng)的索引
for(int?i?=0;i<PuKePaitype.length;i++){
if(p1.getType()==PuKePaitype[i]){
indexType1?=?i;
}
if(p2.getType()==PuKePaitype[i]){
indexType2?=?i?;
}
}
//先進(jìn)行大小的比較如果大小一樣就進(jìn)行類型的比較
if(indexPoint1>indexPoint2){
return?p1;
}
else?if(indexPoint1<indexPoint2){
return?p2;
}
else//類型的比較
{
if(indexType1>indexType2){
return?p1;
}
else{
return?p2;
}
}
}
/**
?*?比較大小游戲開(kāi)始
?*?*/
public?void?playGame(){
System.out.println("開(kāi)始游戲!");
//得到添加的兩個(gè)玩家
Player?player1?=?aPlayer.get(0);
Player?player2?=?aPlayer.get(1);
//輸出他們手中的撲克牌
System.out.println(player1.getName()+"獲得了"+aPuKePai.get(0).getTypeAndPoints()+
"和"+aPuKePai.get(2).getTypeAndPoints());
System.out.println(player2.getName()+"獲得了"+aPuKePai.get(1).getTypeAndPoints()+
"和"+aPuKePai.get(3).getTypeAndPoints());
//獲得他們手中最大的一張
Pukepai?max1?=?getMaxHandPukepai(player1);
Pukepai?max2?=?getMaxHandPukepai(player2);
//分別輸出最大的一張
System.out.println("玩家"+player1.getName()+"最大的手牌為:"+
max1.getType()+max1.getPoints());
System.out.println("玩家"+player2.getName()+"最大的手牌為:"+
max2.getType()+max2.getPoints());
Pukepai?max12?=?getMaxPukepai(max1,max2);
if(max12.getPoints()==max1.getPoints()&&?max12.getType()==max1.getType()){
System.out.println("-----恭喜玩家"+player1.getName()+"獲得勝利?。?!-----");
}
else{
System.out.println("-----恭喜玩家"+player2.getName()+"獲得勝利?。?!-----");
}
}
public?static?void?main(String[]?args)?{
//?TODO?Auto-generated?method?stub
TestGame?tg?=?new?TestGame();
tg.addPuKePai();
tg.addPlayer();
tg.mixPukepai();
tg.givePlayPukepai();
tg.playGame();
}
}
//玩家類
package?com.xiaoyuexiaos;
import?java.util.ArrayList;
import?java.util.List;
public?class?Player?{
private?String?name;
private?int?id;
private?List<Pukepai>?handPukepai;
public?Player(String?name,int?id,List<Pukepai>?handPukepai){
this.name?=?name;
this.id?=?id;
this.handPukepai?=?new?ArrayList<Pukepai>();
}
public?String?getName()?{
return?name;
}
public?void?setName(String?name)?{
this.name?=?name;
}
public?int?getId()?{
return?id;
}
public?void?setId(int?id)?{
this.id?=?id;
}
public?List<Pukepai>?getHandPukepai()?{
return?handPukepai;
}
public?void?setHandPukepai(List<Pukepai>?handPukepai)?{
this.handPukepai?=?handPukepai;
}
}
//撲克牌類
package?com.xiaoyuexiaos;
public?class?Pukepai?implements?Comparable<Pukepai>{
private?String?type;
private?String?points;
public?Pukepai(){}
public?Pukepai(String?type,String?points){
this.type?=?type;
this.points?=points;
}
public?int?compareTo(Pukepai?o){
return?this.getPoints().compareTo(o.getPoints());
}
public?String?getType()?{
return?type;
}
public?void?setType(String?type)?{
this.type?=?type;
}
public?String?getPoints()?{
return?points;
}
public?void?setPoints(String?points)?{
this.points?=?points;
}
public?String?getTypeAndPoints(){
return?type?+?points;
}
}
簡(jiǎn)易撲克牌游戲:求大佬告知為什么調(diào)用同一個(gè)方法,玩家一能獲得最大手牌,玩家二卻不一定。
leexiaoxiao
2017-07-08 10:35:22