亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

還是借鑒了別人的...

package?com.ppcc.control;

/**
?*?單張撲克牌
?*?@author?ppcc
?*
?*/
public?class?Card?implements?Comparable<Card>{
	
	/**
	?*?撲克牌的值
	?*/
	private?String?cardVal;?
	
	/**
	?*?撲克牌的花色
	?*/
	private?String?cardColor;

	/**
	?*?構造函數
	?*?@param?cardVal?撲克牌的值
	?*?@param?cardColor?撲克牌的花色
	?*/
	public?Card(String?cardVal,?String?cardColor)?{
		super();
		this.cardVal?=?cardVal;
		this.cardColor?=?cardColor;
	}
	
	/**
	?*?獲取撲克牌的值
	?*?@return?撲克牌的值
	?*/
	public?String?getCardVal()?{
		return?cardVal;
	}

	/**
	?*?獲取撲克牌的花色
	?*?@return?撲克牌的花色
	?*/
	public?String?getCardColor()?{
		return?cardColor;
	}
	
	/**
	?*?顯示卡片內容
	?*/
	public?void?showCard(){
		System.out.print(this.cardColor+this.cardVal+"?");
	}
	
	@Override
	public?int?compareTo(Card?o)?{
		?//撲克牌的大小依次增加
		?String?cardNum?=?"2,3,4,5,6,7,8,9,10,J,Q,K,A";
		?//撲克牌的花色依次增大
	?????String?cardColor?=?"梅花,方塊,黑桃,紅桃";
	?????int?flag=cardNum.indexOf(this.getCardVal())-cardNum.indexOf(o.getCardVal());
	?????if(flag==0)
	????	?flag=cardColor.indexOf(this.getCardColor())-cardColor.indexOf(o.getCardColor());
	?????return?flag;
	}
	
}

package?com.ppcc.control;

import?java.util.ArrayList;
import?java.util.Collections;

/**
?*?創建一副撲克牌
?*?@author?ppcc
?*
?*/
public?class?Pocker?{
	/**
	?*?一副撲克牌
	?*/
	private?ArrayList<Card>?pocker;
	
	/**
	?*?撲克牌的值
	?*/
	private?static?final?String[]?valBase={"A","2","3","4","5","6","7","8","9","10","J","Q","K"};
	
	/**
	?*?撲克牌的花色
	?*/
	private?static?final?String[]?colorBase={"紅桃","黑桃","梅花","方塊"};
	

	/**
	?*?構造函數
	?*/
	public?Pocker()?{
		pocker=new?ArrayList<Card>();
		this.createPocker();
	}
	
	/**
	?*?創建撲克牌
	?*/
	private?void?createPocker(){
		for(String?color?:?colorBase)
			for(String?val?:?valBase)
				pocker.add(new?Card(val,color));
	}
	
	/**
	?*?顯示所有撲克牌
	?*/
	public?void?showPocker(){
		for(Card?currCard?:?pocker)
			currCard.showCard();
	}

	/**
	?*?洗牌
	?*/
	public?void?rePocker(){
		Collections.shuffle(pocker);
	}
	
	/**
	?*?臭牌
	?*?@param?players?玩家
	?*?@param?num?玩家需抽取的牌數目
	?*/
	public?void?sendOutPocker(ArrayList<Player>?players,int?num){
		for(int?j=0;?j<num;?j++){
			for(int?i=0;?i<players.size();?i++){
				System.out.println("---玩家:"+players.get(i).getName()+"-拿牌");
				//玩家抽牌
			????players.get(i).setHandCard(pocker.get(0));
			????//將抽取后排從pocker里刪除
			????pocker.remove(0);
			}
		}
	}

}

package?com.ppcc.control;

import?java.util.ArrayList;

/**
?*?玩家類
?*?@author?ppcc
?*
?*/
public?class?Player?{
	/**
	?*?玩家ID
	?*/
	private?int?ID;
	
	/**
	?*?玩家姓名
	?*/
	private?String?name;
	
	/**
	?*?玩家手牌
	?*/
	private?ArrayList<Card>?handCard;
	
	/**
	?*?構造函數
	?*?@param?iD?玩家ID
	?*?@param?name?玩家姓名
	?*?@param?handCard?玩家手牌
	?*/
	public?Player(int?iD,?String?name)?{
		this.ID?=?iD;
		this.name?=?name;
		handCard=new?ArrayList<Card>();
	}

	/**
	?*?獲取玩家ID
	?*?@return?玩家ID
	?*/
	public?int?getID()?{
		return?ID;
	}
	
	/**
	?*?獲取玩家姓名
	?*?@return?玩家姓名
	?*/
	public?String?getName()?{
		return?name;
	}
	
	/**
	?*?修改玩家手牌
	?*?@param?handCard?玩家手牌
	?*/
	public?void?setHandCard(Card?card)?{
		this.handCard.add(card);
	}
	
	/**
	?*?獲取玩家手中大的牌
	?*?@return?大的牌
	?*/
	public?Card?maxCard(){
		//初始化最大牌
		Card?maxCard=handCard.get(0);
		for(int?i=1;?i<handCard.size();?i++){
			//兩兩比較得到最大牌
			if(handCard.get(i).compareTo(maxCard)>0)
				maxCard=handCard.get(i);
		}
		return?maxCard;
	}
	
	/**
	?*?打印玩家手中的牌
	?*/
	public?void?showHandCard(){
		System.out.print(this.name+":");
		//for循環來遍歷打印手中的牌
		for(Card?card?:handCard)
			card.showCard();
		System.out.println("");
	}
}

package?com.ppcc.control;

import?java.util.ArrayList;
import?java.util.InputMismatchException;
import?java.util.Scanner;

/**
?*?比點數游戲
?*?@author?ppcc
?*
?*/
public?class?Game?{
	
	/**
	?*?玩家數組鏈表
	?*/
	private?ArrayList<Player>?players;?
	
	/**
	?*?撲克牌
	?*/
	private?Pocker?pocker;
	
	/**
	?*?玩家數目
	?*/
	private?int?playNum;
	
	/**
	?*?玩家抽取牌數目
	?*/
	private?int?getCardNum;
	
	/**
	?*?輸入
	?*/
	private?Scanner?sc=new?Scanner(System.in);
	
	/**
	?*?構造函數
	?*/
	public?Game(){
		players=new?ArrayList<Player>();
		this.prePocker();
	}
	
	/**
	?*?準備撲克牌
	?*/
	public?void?prePocker(){
		System.out.println("-----------------創建撲克牌-----------------");
		//創建撲克牌
		pocker=new?Pocker();
		System.out.println("----------------創建撲克牌成功!----------------");
		//將創建好撲克牌打印出來
		pocker.showPocker();
		System.out.println("-----------------開始洗牌-----------------");
		//進行洗牌
		pocker.rePocker();
		System.out.println("-----------------洗牌結束!-----------------");
	}
	
	/**
	?*?創建玩家
	?*/
	public?void?createPlayers(){
		System.out.println("-----------------創建玩家-----------------");
		//輸入玩家數目
		do{
			playNum=inputCommand("輸入玩家數目:");
			if(playNum<2?||?playNum>10)
				System.out.println("玩家數目為2~10!\n");
		}while(playNum<2?||?playNum>10);
		//輸入玩家抽取的牌數
		do{
			getCardNum=inputCommand("輸入玩家抽取牌數:");
			if(getCardNum<1?||?getCardNum>5)
				System.out.println("玩家抽取為1~5!\n");
		}while(getCardNum<1?||?getCardNum>5);	
		//for循環創建玩家
		for(int?i=0;?i<playNum;?i++){
			System.out.println("\n請輸入第"+(i+1)+"玩家的ID和姓名!");
			int?id=idJup();
			System.out.print("玩家姓名:");
			String?name=sc.next();
			//創建玩家并添加到玩家數組鏈表中
			players.add(new?Player(id,name));
		}
		//打印所有玩家姓名
		for(Player?player?:?players)
			System.out.println("----歡迎玩家:"+player.getName());
		System.out.println("----------------創建玩家結束!----------------");
	}
	
	/**
	?*?發牌
	?*/
	public?void?sendPocker(){
		System.out.println("------------------開始發牌------------------");
		//發牌
		pocker.sendOutPocker(players,?getCardNum);
		System.out.println("------------------發牌結束------------------");
	}
	
	/**
	?*?開始游戲
	?*/
	public?void?game(){
		System.out.println("------------------開始游戲------------------");
		//初始化贏的玩家
		Player?win=players.get(0);
		for(Player?player?:?players){
			System.out.print("玩家:"+player.getName()+"最大的手牌為:");
			//獲取玩家手中的最大牌
		????player.maxCard().showCard();
		????System.out.println("");
		????//比較玩家之間的最大牌
		????if(win.maxCard().compareTo(player.maxCard())<0)
		????	win=player;
		}
		//打印贏的玩家
		System.out.println("玩家:"+win.getName()+"獲勝!");
		System.out.println("------------------游戲結束------------------");
	}
	
	/**
	?*?顯示所有玩家手中的牌
	?*/
	public?void?playerPocker(){
		for(Player?player?:?players){
			player.showHandCard();
		}
	}
	
	/**
	?*?輸入整數
	?*?@param?str?提示語句
	?*?@return?返回輸入值
	?*/
	public?int?inputCommand(String?str){
		try{
			System.out.print(str);
			int?input=sc.nextInt();
			return?input;
		}catch(InputMismatchException?e){
			System.out.println("輸入有誤!請輸入數字命令!\n");
			sc=new?Scanner(System.in);
			return?inputCommand(str);
		}
	}
	
	/**
	?*?判斷是否存在id
	?*?@return
	?*/
	public?int?idJup(){
		int?id=inputCommand("玩家ID:");
		for(Player?player?:?players){
			if(player.getID()==id){
				System.out.println("ID不唯一,重新輸入!\n");
				return?idJup();
			}
		}
		return?id;
	}
}

package?com.ppcc.control;

/**
?*?測試類
?*?@author?ppcc
?*
?*/
public?class?Test?{

	/**
	?*?@param?args
	?*/
	public?static?void?main(String[]?args)?{
		Game?game=new?Game();
		game.createPlayers();
		game.sendPocker();
		game.game();
		game.playerPocker();
	}

}

正在回答

1 回答

可以可以

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第三季
  • 參與學習       409775    人
  • 解答問題       4546    個

Java中你必須懂得常用技能,不容錯過的精彩,快來加入吧

進入課程

還是借鑒了別人的...

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號