第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

借鑒別人的代碼加以改造完成的撲克牌游戲~~~貼墻!!

package?com.joker.test;

import?java.util.ArrayList;
import?java.util.Collections;
import?java.util.HashMap;
import?java.util.Iterator;
import?java.util.List;
import?java.util.Map.Entry;
import?java.util.Map;
import?java.util.Scanner;
import?java.util.Set;
import?com.joker.entity.Player;
import?com.joker.entity.Poker;

/**
?*?主體類
?*?@author?MeRos
?*
?*/
public?class?PokerGame?{
	Map<Integer,?Player>?playerMap;
	List<Poker>?pokerList;
	Player?player;
	String[]?type?=?{?"黑桃",?"紅桃",?"梅花",?"方塊"?};
	String[]?pointer?=?{?"2",?"3",?"4",?"5",?"6",?"7",?"8",?"9",?"10",?"J",
			"Q",?"K",?"A"?};

	public?PokerGame()?{
		pokerList?=?new?ArrayList<Poker>();
		playerMap?=?new?HashMap<Integer,?Player>();
	}

	/**
	?*?創(chuàng)建撲克牌
	?*?
	?*?@param?args
	?*/
	public?void?pokerAdd()?{
		System.out.println("-------創(chuàng)建撲克牌-------");
		for?(int?i?=?0;?i?<?type.length;?i++)?{
			for?(int?j?=?0;?j?<?pointer.length;?j++)?{
				pokerList.add(new?Poker(type[i],?pointer[j]));
			}
		}
		System.out.println("-------撲克牌創(chuàng)建成功-------");
	}

	/**
	?*?遍歷顯示所有撲克牌
	?*?
	?*?@param?args
	?*/
	public?void?pokerGet()?{
		for?(Iterator<Poker>?it?=?pokerList.iterator();?it.hasNext();)?{
			for?(int?i?=?0;?i?<?type.length;?i++)?{
				for?(int?j?=?0;?j?<?pointer.length;?j++)?{
					Poker?poker?=?it.next();
					System.out.print(poker.toString()?+?"?");
				}
				System.out.println();
			}
		}

	}

	/**
	?*?洗牌
	?*/
	public?void?shufflePoker()?{
		System.out.println("-------開始洗牌-------");
		Collections.shuffle(pokerList);
	}

	/**
	?*?創(chuàng)建玩家
	?*?
	?*?@param?args
	?*/
	public?void?playerAdd()?{
		System.out.println("-------創(chuàng)建玩家-------");
		int?i?=?0;
		while?(i?<?2)?{
			System.out.println("請(qǐng)輸入玩家的ID:");

			try?{
				Scanner?input?=?new?Scanner(System.in);
				int?id?=?input.nextInt();
				Player?playerID?=?playerMap.get(id);
				if?(playerID?==?null)?{
					System.out.println("請(qǐng)輸入第"?+?(i?+?1)?+?"位玩家的姓名:");
					String?name?=?input.next();
					Player?player?=?new?Player(id,?name);
					playerMap.put(id,?player);
					System.out.println("成功創(chuàng)建玩家:"?+?playerMap.get(id).getName());
					System.out.println("--------------------");
					i++;
				}?else?{
					System.out.println("該ID已被占用~~");
					continue;
				}
			}?catch?(Exception?e)?{
				System.out.println("請(qǐng)輸入整數(shù)類型ID!!");
				//?e.printStackTrace();
				continue;
			}
		}
		//?遍歷輸出玩家信息
		Set<Entry<Integer,?Player>>?entrySet?=?playerMap.entrySet();
		for?(Entry<Integer,?Player>?entry?:?entrySet)?{
			System.out.println("-----歡迎玩家:"?+?entry.getValue().getName());
		}
	}

	/**
	?*?開始發(fā)牌
	?*?
	?*?@param?args
	?*/
	public?void?pokerSend()?{
		System.out.println("-------開始發(fā)牌-------");
		Set<Integer>?keySet?=?playerMap.keySet();
		int?num?=?0;
		for?(int?i?=?0;?i?<?2;?i++)?{
			for?(Integer?id?:?keySet)?{
				Player?player?=?playerMap.get(id);
				if?(player?!=?null)?{
					System.out.println("---玩家:"?+?player.getName()?+?"拿牌~~~");
					player.handPoker.add(pokerList.get(num));
					num++;
				}
			}
		}
		System.out.println("-------發(fā)牌結(jié)束-------");
	}

	/**
	?*?開始游戲,每個(gè)玩家取得手牌中的最大牌
	?*?
	?*?@param?args
	?*/
	public?void?pokerGame()?{
		System.out.println("-------游戲開始-------");
		List<Poker>?pokerMax?=?new?ArrayList<Poker>();
		Set<Entry<Integer,?Player>>?entrySet?=?playerMap.entrySet();
		//?取得當(dāng)前玩家的最大手牌
		for?(Entry<Integer,?Player>?entry?:?entrySet)?{
			//?Set集合轉(zhuǎn)換為L(zhǎng)ist集合
			List<Poker>?poker?=?new?ArrayList<Poker>(entry.getValue().handPoker);
			//?手牌sort排序后最大的在最后,所以用到reverse進(jìn)行翻轉(zhuǎn),將最大值放在最前面
			Collections.sort(poker);
			Collections.reverse(poker);
			//?玩家手牌當(dāng)中的最大牌放入pokerMax集合
			pokerMax.add(poker.get(0));
			System.out.println("玩家:"?+?entry.getValue().getName()?+?"最大的手牌是:"
					+?poker.get(0).toString());
		}
		//?取得pokerMax集合中的最大牌判斷勝負(fù)
		Collections.sort(pokerMax);
		Collections.reverse(pokerMax);
		for?(Entry<Integer,?Player>?entry?:?entrySet)?{
			if?(entry.getValue().handPoker.contains(pokerMax.get(0)))?{
				System.out.println("-------玩家:"?+?entry.getValue().getName()
						+?"獲勝!!");
			}
		}

		//?輸出玩家手中的所有牌
		System.out.println("玩家各自的手牌為:");
		for?(Entry<Integer,?Player>?entry?:?entrySet)?{
			System.out.print(entry.getValue().getName()?+?":");
			for?(Poker?poker?:?entry.getValue().handPoker)?{
				System.out.print(poker.toString()+"?");
			}
			System.out.println();

		}
	}

	public?static?void?main(String[]?args)?{
		PokerGame?pg?=?new?PokerGame();

		pg.pokerAdd();
		pg.pokerGet();
		pg.shufflePoker();
		pg.playerAdd();
		pg.pokerSend();
		pg.pokerGame();
	}

}
package?com.joker.entity;

/**
?*?撲克牌類?四種花色:黑桃、紅桃、梅花、方片?十三種點(diǎn)數(shù):2-10、J、Q、K、A,不考慮大小王
?*?
?*?@author?MeRos
?*
?*/
public?class?Poker?implements?Comparable<Poker>?{
	private?String?type;
	private?String?pointer;

	public?Poker(String?type,?String?pointer)?{
		this.setPointer(pointer);
		this.setType(type);
	}

	public?String?getType()?{
		return?type;
	}

	public?void?setType(String?type)?{
		this.type?=?type;
	}

	public?String?getPointer()?{
		return?pointer;
	}

	public?void?setPointer(String?pointer)?{
		this.pointer?=?pointer;
	}

	@Override
	public?int?hashCode()?{
		final?int?prime?=?31;
		int?result?=?1;
		result?=?prime?*?result?+?((pointer?==?null)???0?:?pointer.hashCode());
		result?=?prime?*?result?+?((type?==?null)???0?:?type.hashCode());
		return?result;
	}

	@Override
	public?boolean?equals(Object?obj)?{
		if?(this?==?obj)
			return?true;
		if?(obj?==?null)
			return?false;
		if?(!(obj?instanceof?Poker))
			return?false;
		Poker?other?=?(Poker)?obj;
		if?(pointer?==?null)?{
			if?(other.pointer?!=?null)
				return?false;
		}?else?if?(!pointer.equals(other.pointer))
			return?false;
		if?(type?==?null)?{
			if?(other.type?!=?null)
				return?false;
		}?else?if?(!type.equals(other.type))
			return?false;
		return?true;
	}

	@Override
	public?int?compareTo(Poker?o)?{
		String?pokerPointer?=?"2,3,4,5,6,7,8,9,10,J,Q,K,A";
		String?pokerType?=?"方塊,梅花,紅桃,黑桃";
		int?result;
		result?=?pokerPointer.indexOf(this.getPointer())
				-?pokerPointer.indexOf(o.getPointer());
		if?(result?==?0)?{
			result?=?pokerType.indexOf(this.getType())
					-?pokerType.indexOf(o.getPointer());
		}
		return?result;
	}

	@Override
	public?String?toString()?{
		return?type?+?pointer;
	}

}
package?com.joker.entity;

import?java.util.HashSet;
import?java.util.Set;
/**
?*?玩家類
?*?屬性:ID、姓名、手牌
?*?手牌為撲克牌集合
?*?@author?MeRos
?*
?*/
public?class?Player?{
	private?int?id;
	private?String?name;
	public?Set<Poker>?handPoker;
	

	public?Player(int?id,?String?name)?{
		this.setId(id);
		this.setName(name);
		handPoker?=?new?HashSet<Poker>();
		
	}

	public?int?getId()?{
		return?id;
	}

	public?void?setId(int?id)?{
		this.id?=?id;
	}

	public?String?getName()?{
		return?name;
	}

	public?void?setName(String?name)?{
		this.name?=?name;
	}
}

這里三個(gè)集合都有用到、玩家類中的手牌使用Set集合是因?yàn)橹挥幸桓迸?每個(gè)玩家拿到的手牌都是不同的~~

正在回答

4 回答

你的比較大小的方法,寫的太棒啦?。?!膜拜膜拜。。。。。。

0 回復(fù) 有任何疑惑可以回復(fù)我~

Set<Entry<Integer,?Player>>?entrySet?=?playerMap.entrySet();

entry是在哪一節(jié)的??有點(diǎn)印象,忘記了

0 回復(fù) 有任何疑惑可以回復(fù)我~

我不太明白,為什么Set,Map,List之間來(lái)回轉(zhuǎn)換,都用統(tǒng)一的集合類型不行嗎?

比如:

????List<Poker>?pokerList;

?Set<Poker>?handPoker;

handPoker?=?new?HashSet<Poker>();這些都是存放撲克的,統(tǒng)一用Set或者List不行嗎

還有

List<Poker>?pokerMax?=?new?ArrayList<Poker>();

?Set<Entry<Integer,?Player>>?entrySet?=?playerMap.entrySet(); ?這些轉(zhuǎn)換一時(shí)真的很費(fèi)解??!

求大神解讀?。。。。?!

0 回復(fù) 有任何疑惑可以回復(fù)我~

比較大小用index那個(gè)方法真的太棒了!?。?/p>

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
Java入門第三季
  • 參與學(xué)習(xí)       409767    人
  • 解答問(wèn)題       4510    個(gè)

Java中你必須懂得常用技能,不容錯(cuò)過(guò)的精彩,快來(lái)加入吧

進(jìn)入課程

借鑒別人的代碼加以改造完成的撲克牌游戲~~~貼墻!!

我要回答 關(guān)注問(wèn)題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)