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;
/**
?*?控制器,主函數(shù)
?*?@author?jelly
?*
?*/
public?class?Controller?{
List<Poker>?poker?=?new?ArrayList<Poker>();
List<Player>?player?=?new?ArrayList<Player>();
Set<Poker>?newPoker;
????//創(chuàng)建poker牌
public?void?build()?{
System.out.println("-----------開始創(chuàng)建撲克牌-----------");
String[]?suits?=?{?"方片",?"梅花",?"紅桃",?"黑桃"?};
String[]?numbers?=?{?"2",?"3",?"4",?"5",?"6",?"7",?"8",?"9",?"10",?"J",
"Q",?"K",?"A",?};
System.out.println("-----------撲克創(chuàng)建成功----------");
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("----------洗牌結(jié)束----------");
}
//?創(chuàng)建玩家
public?void?buildPlayer()?{
System.out.println("----------創(chuàng)建玩家----------");
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("請輸入整數(shù)類型的ID");
}
}
for?(int?k?=?0;?k?<?player.size();?k++)?{
System.out.println("歡迎玩家:"?+?player.get(k).getName());
}
}
//?發(fā)牌
public?void?deal()?{
System.out.println("----------開始發(fā)牌----------");
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("----------發(fā)牌結(jié)束----------");
}
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();
}
}
2015-08-17
恩,有一些漏洞,應(yīng)該用collection.shuffle(),方法,不過我當(dāng)時不知道這個方法,謝謝各位了,多多學(xué)習(xí)
2015-08-05
然后 game方法 中對比的應(yīng)該是2個較大的手牌么?,
if?(compare.compare(player.get(0).handPoker.get(0),
????????????????player.get(1).handPoker.get(1))?>?0)
此句第一個handPoker.get(0),應(yīng)該是較小那一個,是否該改為handPoker(1)??? ?
2015-08-05
洗牌部分真的洗牌了嗎?
這樣多次運(yùn)行結(jié)果應(yīng)該不會變,因?yàn)椴]有洗牌,只是把newpoker賦值了poker,然而前面應(yīng)該加一句?Collections.shuffle(poker);
才可做到洗牌效果吧?
可能不對,考慮考慮
2015-08-04
Controller 中 創(chuàng)建Poker 語句
for?(Poker?pk?:?poker)?{
????????????System.out.print(pk?+?",");
????????}
為什么我輸出的是地址符?
2015-07-26
代碼無懈可擊,但我覺得有個地方可能有問題:
老師要求隨機(jī)洗牌后按順序從第一張撲克開始發(fā)牌,用Set(無序的)集合,用迭代器取牌并不符合發(fā)牌規(guī)則,這更像從撲克牌中隨機(jī)取牌,如果洗牌后的排序不變,你的發(fā)牌出現(xiàn)的結(jié)果是隨機(jī)的:
2015-07-16
厲害啊
2015-07-10
2015-07-10
2015-07-10