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

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

我的紙牌,部分內容借鑒大牛

package?com.imooc;

import?java.util.ArrayList;
import?java.util.Collections;
import?java.util.HashSet;
import?java.util.Iterator;
import?java.util.List;
import?java.util.Scanner;
import?java.util.Set;
/**
?*?控制器,主函數
?*?@author?jelly
?*
?*/
public?class?Controller?{
	List<Poker>?poker?=?new?ArrayList<Poker>();
	List<Player>?player?=?new?ArrayList<Player>();
	Set<Poker>?newPoker;
????//創建poker牌
	public?void?build()?{
		System.out.println("-----------開始創建撲克牌-----------");

		String[]?suits?=?{?"方片",?"梅花",?"紅桃",?"黑桃"?};
		String[]?numbers?=?{?"2",?"3",?"4",?"5",?"6",?"7",?"8",?"9",?"10",?"J",
				"Q",?"K",?"A",?};
		System.out.println("-----------撲克創建成功----------");
		System.out.print("為:[");
		for?(int?i?=?0;?i?<?4;?i++)?{
			for?(int?j?=?0;?j?<?13;?j++)?{
				poker.add(new?Poker(suits[i],?numbers[j]));
			}
		}
		for?(Poker?pk?:?poker)?{
			System.out.print(pk?+?",");
		}

		System.out.println("]");
	}

	//?洗牌
	public?void?shuffle()?{
		System.out.println("----------開始洗牌----------");
		this.newPoker?=?new?HashSet<>(poker);
		System.out.println("----------洗牌結束----------");
	}

	//?創建玩家
	public?void?buildPlayer()?{
		System.out.println("----------創建玩家----------");
		int?i?=?0;
		while?(i?<?2)?{
			System.out.println("請輸入第"?+?(i?+?1)?+?"位玩家的ID和姓名");
			try?{
				Scanner?in?=?new?Scanner(System.in);
				System.out.println("輸入ID:");
				int?id?=?in.nextInt();
				System.out.println("輸入姓名:");
				String?name?=?in.next();
				player.add(new?Player(id,?name));
				i++;
			}?catch?(Exception?e)?{
				System.out.println("請輸入整數類型的ID");
			}
		}
		for?(int?k?=?0;?k?<?player.size();?k++)?{
			System.out.println("歡迎玩家:"?+?player.get(k).getName());
		}

	}

	//?發牌
	public?void?deal()?{
		System.out.println("----------開始發牌----------");
		for?(int?i?=?0;?i?<?2;?i++)?{
			for?(int?j?=?0;?j?<?2;?j++)?{
				Iterator<Poker>?it?=?newPoker.iterator();
				Poker?poker?=?it.next();
				player.get(j).handPoker.add(poker);
				System.out.println("玩家"?+?player.get(j).getName()?+?"拿牌");
				newPoker.remove(poker);
			}
		}
		System.out.println("----------發牌結束----------");
	}

	public?void?game()?{
		System.out.println("----------開始游戲----------");
		Compare?compare?=?new?Compare();
		for?(int?i?=?0;?i?<?2;?i++)?{
			Collections.sort(player.get(i).handPoker,?compare);
			System.out.println("玩家"?+?player.get(i).getName()?+?"最大的手牌為"
					+?player.get(i).handPoker.get(1));
		}
		if?(compare.compare(player.get(0).handPoker.get(0),
				player.get(1).handPoker.get(1))?>?0)?{
			System.out.println("玩家"?+?player.get(0).getName()?+?"獲勝");
		}?else?{
			System.out.println("玩家"?+?player.get(1).getName()?+?"獲勝");
		}
		System.out.println("玩家各自的手牌為");
		for?(int?j?=?0;?j?<?2;?j++)?{
			System.out.println("玩家"+player.get(j).getName());
			for?(Poker?poker?:?player.get(j).handPoker)?{
					System.out.println(poker+"??");
			}
		}
	}

	public?static?void?main(String[]?args)?{
		Controller?cr?=?new?Controller();
		cr.build();
		cr.shuffle();
		cr.buildPlayer();
		cr.deal();
		cr.game();
	}
}


正在回答

9 回答

恩,有一些漏洞,應該用collection.shuffle(),方法,不過我當時不知道這個方法,謝謝各位了,多多學習

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

然后 game方法 中對比的應該是2個較大的手牌么?,

if?(compare.compare(player.get(0).handPoker.get(0),

????????????????player.get(1).handPoker.get(1))?>?0)

此句第一個handPoker.get(0),應該是較小那一個,是否該改為handPoker(1)??? ?

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

丶呵欠

上邊這句寫錯了,應該是 改為handPoker.get(1)
2015-08-05 回復 有任何疑惑可以回復我~
#2

大明狗

我也不懂,但是我改了以后運行的結果不對
2015-08-13 回復 有任何疑惑可以回復我~
#3

丶呵欠 回復 大明狗

我的沒改之前,是錯的。改完之后正確。。。。
2015-08-14 回復 有任何疑惑可以回復我~
#4

大明狗 回復 丶呵欠

我覺得就是打錯了,排序下來get(0)應該都是較小的那個牌才對啊
2015-08-15 回復 有任何疑惑可以回復我~
#5

丶呵欠 回復 大明狗

對啊,所以我說應該是吧第一個HandPoker.get(0) 這里改成1才對,因為1才是較大的牌。
2015-08-15 回復 有任何疑惑可以回復我~
#6

大明狗 回復 丶呵欠

嗯,改了以后應該沒什么問題 的
2015-08-16 回復 有任何疑惑可以回復我~
#7

丶呵欠 回復 大明狗

不知道你洗牌部分是不是和樓主一樣,一樣的話,你多次運行 看看結果,貌似不會變化
2015-08-16 回復 有任何疑惑可以回復我~
#8

大明狗 回復 丶呵欠

洗牌方法和他的不一樣
2015-08-17 回復 有任何疑惑可以回復我~
查看5條回復

洗牌部分真的洗牌了嗎?

這樣多次運行結果應該不會變,因為并沒有洗牌,只是把newpoker賦值了poker,然而前面應該加一句?Collections.shuffle(poker);

才可做到洗牌效果吧?

可能不對,考慮考慮

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

Controller 中 創建Poker 語句

for?(Poker?pk?:?poker)?{

????????????System.out.print(pk?+?",");

????????}

為什么我輸出的是地址符?

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

丶呵欠

原因是我這里寫錯了~ public String toString() { return this.suit+this.num; }
2015-08-04 回復 有任何疑惑可以回復我~

代碼無懈可擊,但我覺得有個地方可能有問題:

老師要求隨機洗牌后按順序從第一張撲克開始發牌,用Set(無序的)集合,用迭代器取牌并不符合發牌規則,這更像從撲克牌中隨機取牌,如果洗牌后的排序不變,你的發牌出現的結果是隨機的

?//?發牌
????public?void?deal()?{
????????System.out.println("----------開始發牌----------");
????????for?(int?i?=?0;?i?<?2;?i++)?{
????????????for?(int?j?=?0;?j?<?2;?j++)?{
????????????????Iterator<Poker>?it?=?newPoker.iterator();
????????????????Poker?poker?=?it.next();
????????????????player.get(j).handPoker.add(poker);
????????????????System.out.println("玩家"?+?player.get(j).getName()?+?"拿牌");
????????????????newPoker.remove(poker);
????????????}
????????}
????????System.out.println("----------發牌結束----------");
????}
?Set<Poker>?newPoker;?//代碼中洗牌后的撲克牌的集合


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

厲害啊


0 回復 有任何疑惑可以回復我~
package?com.imooc;

import?java.util.Arrays;
import?java.util.Comparator;
import?java.util.List;
/**
?*?比較規則
?*?@author?jelly
?*
?*/
public?class?Compare?implements?Comparator<Poker>?{

	@Override
	public?int?compare(Poker?o1,?Poker?o2)?{

		List<String>?nums?=?Arrays.asList("2",?"3",?"4",?"5",?"6",?"7",?"8",
				"9",?"J",?"Q",?"K",?"A");
		List<String>?color?=?Arrays.asList("方塊",?"梅花",?"紅桃",?"黑桃");
		if?(nums.indexOf(o1.getNum())?==?nums.indexOf(o2.getNum()))
			return?(((Integer)?(color.indexOf(o1.getSuit())))
					.compareTo((Integer)?(color.indexOf(o2.getSuit()))));
		else?{
			return?(((Integer)?nums.indexOf(o1.getNum())))
					.compareTo(((Integer)?nums.indexOf(o2.getNum())));
		}
	}
}


0 回復 有任何疑惑可以回復我~
package?com.imooc;



/**
?*?poker?class
?*?@author?jelly
?*
?*/
public?class?Poker?{
	private?String?suit;//撲克牌的花色
	private?String?num;//poker's?number

	public?Poker(String?suit,String?num){
		this.suit?=?suit;
		this.num?=?num;

	}
	public?String?getSuit()?{
		return?suit;
	}
	public?void?setSuit(String?suit)?{
		this.suit?=?suit;
	}
	public?String?getNum()?{
		return?num;
	}
	public?void?setNum(String?num)?{
		this.num?=?num;
	}
????public?String?toString()
????{
????????return?this.suit+this.num;
????}

}


0 回復 有任何疑惑可以回復我~
package?com.imooc;

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

/**
?*?玩家類
?*?@author?jelly
?*
?*/
public?class?Player?{
	private?int?ID;//萬家的ID
	private?String?name;
	List<Poker>?handPoker?=?new?ArrayList<Poker>();
	
	public?Player(int?ID,String?name){
		this.ID?=?ID;
		this.name?=?name;
	}
	public?int?getID()?{
		return?ID;
	}
	public?void?setID(int?iD)?{
		ID?=?iD;
	}
	public?String?getName()?{
		return?name;
	}
	public?void?setName(String?name)?{
		this.name?=?name;
	}
}


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

舉報

0/150
提交
取消

我的紙牌,部分內容借鑒大牛

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

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

幫助反饋 APP下載

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

公眾號

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