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

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

正在回答

1 回答

自己寫的程序,能實現要求,有些啰嗦,歡迎大家指教!??!
package?com.marvin.java3_7_1;

import?java.util.List;

/**
?*?玩家類?包含玩家的ID,姓名,手牌的信息
?*?
?*?@author?Prague
?*
?*/

public?class?Player?{

	private?String?id;
	private?String?name;
	private?List<PlayCard>?handCard;

	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?List<PlayCard>?getHandCard()?{
		return?handCard;
	}

	public?void?setHandCard(List<PlayCard>?handCard)?{
		this.handCard?=?handCard;
	}

}

package?com.marvin.java3_7_1;

/**
?*?撲克類?包含撲克的花色、數字(或字母)
?*?
?*?@author?Prague
?*
?*/

public?class?PlayCard?{

	private?String?color;//?記錄花色,黑桃>紅桃>梅花>方片
	private?String?character;//?記錄牌面的數字的
	private?int?realNum;//?記錄牌面數字的實際大小的,3<4<5<6<7<8<9<10<J<Q<K<A<2
	private?int?num;?//?一副撲克牌每張撲克的唯一標示
	private?int?realColor;?//?記錄牌面花色的實際大小,黑桃(3)>紅桃(2)>梅花(1)>方片(0)

	public?PlayCard(String?color,?String?character,?int?realNum,?int?realColor,?int?num)?{
		this.color?=?color;
		this.character?=?character;
		this.realNum?=?realNum;
		this.realColor?=?realColor;
		this.num?=?num;
	}

	public?String?getColor()?{
		return?color;
	}

	public?void?setColor(String?color)?{
		this.color?=?color;
	}

	public?String?getCharacter()?{
		return?character;
	}

	public?void?setCharacter(String?character)?{
		this.character?=?character;
	}

	public?int?getRealNum()?{
		return?realNum;
	}

	public?void?setRealNum(int?realNum)?{
		this.realNum?=?realNum;
	}

	public?int?getNum()?{
		return?num;
	}

	public?void?setNum(int?num)?{
		this.num?=?num;
	}

	public?int?getRealColor()?{
		return?realColor;
	}

	public?void?setRealColor(int?realColor)?{
		this.realColor?=?realColor;
	}

	@Override
	public?int?hashCode()?{
		final?int?prime?=?31;
		int?result?=?1;
		result?=?prime?*?result?+?num;
		return?result;
	}

	@Override
	public?boolean?equals(Object?obj)?{
		if?(this?==?obj)
			return?true;
		if?(obj?==?null)
			return?false;
		if?(getClass()?!=?obj.getClass())
			return?false;
		PlayCard?other?=?(PlayCard)?obj;
		if?(num?!=?other.num)
			return?false;
		return?true;
	}
	
	

}

package?com.marvin.java3_7_1;

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

/**
?*?創建兩名玩家?從鍵盤輸入玩家的ID和姓名
?*?
?*?@author?Prague
?*
?*/
public?class?CreatePlayer?{

	private?List<Player>?listPlayer?=?new?ArrayList<Player>();

	public?List<Player>?getListPlayer()?{
		return?listPlayer;
	}

	/**
	?*?創建兩名玩家,從鍵盤輸入玩家信息
	?*/
	@SuppressWarnings("resource")
	public?void?createPlayer()?{
		Scanner?sc?=?new?Scanner(System.in);
		for?(int?i?=?0;?i?<?2;?i++)?{
			System.out.println("請輸入玩家的ID:");
			Player?p1?=?new?Player(null,?null);
			p1.setId(sc.next());
			System.out.println("請輸入玩家的姓名:");
			p1.setName(sc.next());
			listPlayer.add(p1);
		}
	}

}

package?com.marvin.java3_7_1;

import?java.util.ArrayList;
import?java.util.List;

/**
?*?創建一副撲克牌
?*?
?*?@author?Prague
?*
?*/

public?class?CreatePlayCard?{

	private?List<PlayCard>?listPlayCard?=?new?ArrayList<PlayCard>();
	final?String[]?character?=?{?"3",?"4",?"5",?"6",?"7",?"8",?"9",?"10",?"J",
			"Q",?"K",?"A",?"2"?};
	final?String[]?color?=?{?"黑桃",?"紅桃",?"梅花",?"方片"?};

	public?List<PlayCard>?getListPlayCard()?{
		return?this.listPlayCard;
	}

	//?創建撲克牌
	public?void?createPlayCard()?{
		int?num?=?0;
		for?(int?i?=?0;?i?<?13;?i++)?{
			for?(int?j?=?0;?j?<?color.length;?j++)?{
				PlayCard?pc?=?new?PlayCard(color[j],?character[i],?i,?(3?-?j),
						num++);
				if?(pc?!=?null)?{
					listPlayCard.add(pc);
				}
			}
		}
	}

}

package?com.marvin.java3_7_1;

import?java.util.ArrayList;
import?java.util.List;
import?java.util.Random;

/**
?*?洗牌?將之前創建的撲克牌打亂順序
?*?
?*?@author?Prague
?*
?*/
public?class?Shuffle?{

	private?List<PlayCard>?shufflePlayCard?=?new?ArrayList<PlayCard>();

	public?List<PlayCard>?getShufflePlayCard()?{
		return?shufflePlayCard;
	}

	/**
	?*?將輸入的撲克牌的順序打亂,返回洗牌后的撲克牌集合
	?*/
	public?void?shuffle(List<PlayCard>?listPlayCard)?{
		Random?random?=?new?Random();
		while?(shufflePlayCard.size()?<?52)?{
			int?num?=?random.nextInt(52);
			if?(!shufflePlayCard.contains(listPlayCard.get(num)))?{
				shufflePlayCard.add(new?PlayCard(listPlayCard.get(num)
						.getColor(),?listPlayCard.get(num).getCharacter(),
						listPlayCard.get(num).getRealNum(),?listPlayCard.get(
								num).getRealColor(),?listPlayCard.get(num)
								.getNum()));

			}?else?{
				continue;
			}
		}
	}

}

package?com.marvin.java3_7_1;

import?java.util.ArrayList;
import?java.util.List;

/**
?*?發牌
?*?
?*?@author?Prague
?*
?*/

public?class?DistributePlayCard?{

	public?void?distribute(Player?p1,?Player?p2,?List<PlayCard>?playCard)?{
		//?p1.setHandCard(handCard);
		List<PlayCard>?p1HandCard?=?new?ArrayList<PlayCard>();
		List<PlayCard>?p2HandCard?=?new?ArrayList<PlayCard>();
		p1HandCard.add(new?PlayCard(playCard.get(0).getColor(),?playCard.get(0)
				.getCharacter(),?playCard.get(0).getRealNum(),?playCard.get(0)
				.getRealColor(),?playCard.get(0).getNum()));
		p2HandCard.add(new?PlayCard(playCard.get(1).getColor(),?playCard.get(1)
				.getCharacter(),?playCard.get(1).getRealNum(),?playCard.get(1)
				.getRealColor(),?playCard.get(1).getNum()));
		p1HandCard.add(new?PlayCard(playCard.get(2).getColor(),?playCard.get(2)
				.getCharacter(),?playCard.get(2).getRealNum(),?playCard.get(2)
				.getRealColor(),?playCard.get(2).getNum()));
		p2HandCard.add(new?PlayCard(playCard.get(3).getColor(),?playCard.get(3)
				.getCharacter(),?playCard.get(3).getRealNum(),?playCard.get(3)
				.getRealColor(),?playCard.get(3).getNum()));
		p1.setHandCard(p1HandCard);
		p2.setHandCard(p2HandCard);
	}

}

package?com.marvin.java3_7_1;

/**
?*?根據撲克牌面實際大小找出撲克集合的最大值
?*?
?*?@author?Prague
?*
?*/

public?class?FindMaxPlayCard?{

	public?static?int?findMaxPlayCard(PlayCard?pc1,?PlayCard?pc2)?{
		if?(pc1.getRealNum()?>?pc2.getRealNum())?{
			return?0;
		}?else?if?(pc1.getRealNum()?<?pc2.getRealNum())?{
			return?1;
		}?else?if?(pc1.getRealNum()?==?pc2.getRealNum())?{
			if?(pc1.getRealColor()?>?pc2.getRealColor())?{
				return?0;
			}?else?if?(pc1.getRealColor()?<?pc2.getRealColor())?{
				return?1;
			}?
//			else?if?(pc1.getRealColor()?==?pc2.getRealColor())?{
//				return?-1;//?牌面包括花色和數字都相等
//			}
		}
		return?-1;
	}

}

package?com.marvin.java3_7_1;

import?java.util.ArrayList;
import?java.util.List;

/**
?*?洗牌發牌Easy版?功能描述:?1、創建一副撲克牌?包括四種花色:黑桃、紅桃、梅花、方片?十三種點數:2-10,J、Q、K、A,不考慮大小王
?*?2、創建兩名玩家?玩家至少要有ID、姓名、手牌等屬性,手牌為撲克牌的集合?3、洗牌?將之前創建的“一副撲克牌”打亂順序?4、發牌
?*?將洗牌之后的撲克牌集合,從第一張開始,發給兩名玩家,按照一人一張的方式,每人發兩張。
?*?5、游戲比較兩名玩家手中的撲克牌,規則為:取兩人各自手中點數最大的牌進行比較
?*?,點數大的贏;若兩人各自的點數最大的牌相等,則再按花色進行比較,按照黑桃>紅桃>梅花>方片的順序進行比較。
?*?
?*?@author?Prague
?*
?*/

public?class?PlayCardGame?{

	List<PlayCard>?listPlayCard?=?new?ArrayList<PlayCard>();
	List<Player>?listPlayer?=?new?ArrayList<Player>();

	public?static?void?main(String[]?args)?{
		PlayCardGame?pcg?=?new?PlayCardGame();
		CreatePlayCard?cpc?=?new?CreatePlayCard();
		System.out.println("---------------創建一副撲克牌--------------------");
		cpc.createPlayCard();?//?創建一副撲克并輸出創建結果
		pcg.listPlayCard?=?cpc.getListPlayCard();
		//?if?(pcg.listPlayCard?!=?null)?{
		//?for?(PlayCard?pc?:?pcg.listPlayCard)?{
		//?System.out.println(pc.getColor()?+?"??"?+?pc.getCharacter()
		//?+?"??"?+?pc.getRealNum()?+?"??"?+?pc.getNum());
		//?}
		//?}

		CreatePlayer?cp?=?new?CreatePlayer();
		cp.createPlayer();?//?創建兩名玩家
		pcg.listPlayer?=?cp.getListPlayer();
		if?(pcg.listPlayer?!=?null)?{
			for?(Player?p?:?pcg.listPlayer)?{
				System.out.println(p.getId()?+?"??"?+?p.getName());
			}
		}

		System.out.println("--------------洗牌后--------------------");
		Shuffle?sh?=?new?Shuffle();
		sh.shuffle(pcg.listPlayCard);
		List<PlayCard>?lp?=?new?ArrayList<PlayCard>();
		lp?=?sh.getShufflePlayCard();
		//?if?(lp?!=?null)?{
		//?for?(PlayCard?playCard?:?lp)?{
		//?System.out.println(playCard.getColor()?+?"??"
		//?+?playCard.getCharacter()?+?"??"
		//?+?playCard.getRealNum()?+?"??"?+?playCard.getNum());
		//?}
		//?}

		System.out.println("---------------玩家的手牌--------------------");
		DistributePlayCard?dpc?=?new?DistributePlayCard();
		dpc.distribute(pcg.listPlayer.get(0),?pcg.listPlayer.get(1),?lp);
		System.out.println("玩家1第一張手牌:"
				+?pcg.listPlayer.get(0).getHandCard().get(0).getColor()?+?"??"
				+?pcg.listPlayer.get(0).getHandCard().get(0).getCharacter());
		System.out.println("玩家1第二張手牌:"
				+?pcg.listPlayer.get(0).getHandCard().get(1).getColor()?+?"??"
				+?pcg.listPlayer.get(0).getHandCard().get(1).getCharacter());
		System.out.println("玩家2第一張手牌:"
				+?pcg.listPlayer.get(1).getHandCard().get(0).getColor()?+?"??"
				+?pcg.listPlayer.get(1).getHandCard().get(0).getCharacter());
		System.out.println("玩家2第二張手牌:"
				+?pcg.listPlayer.get(1).getHandCard().get(1).getColor()?+?"??"
				+?pcg.listPlayer.get(1).getHandCard().get(1).getCharacter());

		//?找出每個玩家中最大的手牌
		PlayCard?player1Max?=?new?PlayCard(null,?null,?0,?0,?0);
		PlayCard?player2Max?=?new?PlayCard(null,?null,?0,?0,?0);
		if?(FindMaxPlayCard.findMaxPlayCard(pcg.listPlayer.get(0).getHandCard()
				.get(0),?pcg.listPlayer.get(0).getHandCard().get(1))?==?0)?{
			player1Max?=?pcg.listPlayer.get(0).getHandCard().get(0);
		}?else?if?(FindMaxPlayCard.findMaxPlayCard(pcg.listPlayer.get(0)
				.getHandCard().get(0),
				pcg.listPlayer.get(0).getHandCard().get(1))?==?1)?{
			player1Max?=?pcg.listPlayer.get(0).getHandCard().get(1);
		}
		if?(FindMaxPlayCard.findMaxPlayCard(pcg.listPlayer.get(1).getHandCard()
				.get(0),?pcg.listPlayer.get(1).getHandCard().get(1))?==?0)?{
			player2Max?=?pcg.listPlayer.get(1).getHandCard().get(0);
		}?else?if?(FindMaxPlayCard.findMaxPlayCard(pcg.listPlayer.get(1)
				.getHandCard().get(0),
				pcg.listPlayer.get(1).getHandCard().get(1))?==?1)?{
			player2Max?=?pcg.listPlayer.get(1).getHandCard().get(1);
		}

		//?判斷誰的手牌中的最大的那張牌比較大
		if?(FindMaxPlayCard.findMaxPlayCard(player1Max,?player2Max)?==?0)?{
			System.out.println("玩家1獲勝!");
			System.out
					.println("玩家1的手牌是:"
							+?pcg.listPlayer.get(0).getHandCard().get(0)
									.getColor()
							+?"??"
							+?pcg.listPlayer.get(0).getHandCard().get(0)
									.getCharacter()
							+?"?和?"
							+?pcg.listPlayer.get(0).getHandCard().get(1)
									.getColor()
							+?"??"
							+?pcg.listPlayer.get(0).getHandCard().get(1)
									.getCharacter());
		}?else?if?(FindMaxPlayCard.findMaxPlayCard(player1Max,?player2Max)?==?1)?{
			System.out.println("玩家2獲勝!");
			System.out
					.println("玩家2的手牌是:"
							+?pcg.listPlayer.get(1).getHandCard().get(0)
									.getColor()
							+?"??"
							+?pcg.listPlayer.get(1).getHandCard().get(0)
									.getCharacter()
							+?"?和?"
							+?pcg.listPlayer.get(1).getHandCard().get(1)
									.getColor()
							+?"??"
							+?pcg.listPlayer.get(1).getHandCard().get(1)
									.getCharacter());
		}?else?if?(FindMaxPlayCard.findMaxPlayCard(player1Max,?player2Max)?==?-1)?{
			System.out.println("平局!");
			System.out
					.println("玩家的手牌是:"
							+?pcg.listPlayer.get(1).getHandCard().get(0)
									.getColor()
							+?"??"
							+?pcg.listPlayer.get(1).getHandCard().get(0)
									.getCharacter()
							+?"?和?"
							+?pcg.listPlayer.get(1).getHandCard().get(1)
									.getColor()
							+?"??"
							+?pcg.listPlayer.get(1).getHandCard().get(1)
									.getCharacter());
		}
	}

}


2 回復 有任何疑惑可以回復我~
#1

漫長玩笑

mark
2015-09-21 回復 有任何疑惑可以回復我~

舉報

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

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

進入課程

撲克牌有源碼嗎

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

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

幫助反饋 APP下載

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

公眾號

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