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

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

交作業了,感覺挺繁瑣的

public?class?Card?implements?Comparable{	
????String?num;	
????String?color;	
????Card(String?color,String?num){		
????????this.num=num;		
????????this.color=color;	
????}		
@Override	
public?int?hashCode()?{		
????final?int?prime?=?31;		
????int?result?=?1;		
????result?=?prime?*?result?+?((num?==?null)???0?:?num.hashCode());		
????return?result;	
????}
	
@Override	
public?boolean?equals(Object?obj)?{		
????if?(this?==?obj)			
????return?true;		
????if?(!(obj?instanceof?Card))			
????return?false;		
????Card?other?=?(Card)?obj;		
????if?(num?==?null)?{			
????if?(other.num?!=?null)				
????return?false;		}?
????else?if?(!num.equals(other.num))			
????return?false;		
????return?true;	
}	
@Override	
public?int?compareTo(Object?o)?{	
????//如果數字相同的話就按照花色來排序	
????if(this.num.compareTo(num)==0)?{			
????return?this.color.compareTo(color);		
????}		
????return?this.num.compareTo(num);			
????}
}
import?java.util.ArrayList;import?java.util.List;
public?class?Player?{	
????int?id;
????String?name;	
????List<Card>holdCard=new?ArrayList<Card>();	
????Player(int?id,String?name){		
????????this.id=id;		
????????this.name=name;	
????}	
@Override	
public?int?hashCode()?{		
????final?int?prime?=?31;		
????int?result?=?1;		
????result?=?prime?*?result?+?((name?==?null)???0?:?name.hashCode());		
????return?result;	
}	

@Override	
public?boolean?equals(Object?obj)?{		
????if?(this?==?obj)			
????return?true;		
????if?(!(obj?instanceof?Player))			
????return?false;		
????Player?other?=?(Player)?obj;		
????if?(name?==?null)?{			
????if?(other.name?!=?null)				
????return?false;		
????//調用名字來比對
????}?else?if?(!name.equals(other.name))			
????return?false;		
????return?true;	
}

正在回答

1 回答

import?java.util.ArrayList;
import?java.util.Collections;
import?java.util.HashMap;
import?java.util.InputMismatchException;
import?java.util.List;
import?java.util.Map;
import?java.util.Map.Entry;
import?java.util.Scanner;
import?java.util.Set;
import?java.util.Random;

public?class?PukeTest?{	List<Card>puke=new?ArrayList<Card>();//存放創建好的撲克牌	
Map<Integer,Player>pls=new?HashMap<Integer,Player>();//存放玩家的id?姓名?	
Set<Entry<Integer,?Player>>entry=pls.entrySet();//用于接收玩家信息并方便調用	
List<Card>orderPuke=new?ArrayList<Card>();//存放打亂的撲克牌	
List<Card>resultCard=new?ArrayList<Card>();//存放最終比大小的兩張牌	

Random?random=new?Random();	
//	一,創建一副撲克牌
//包括四種花色:黑桃,紅桃,梅花,方塊
//十三種點數:2-10,j,q,k,a,不考慮大小王	
public?void?createCard()?{		
System.out.println("--------------創建撲克牌--------------------");		
String?Element[]=?{"2","3","4","5","6","7","8","9","10","j","Q","K","A"};		
String[]huase=?{"方塊","梅花","紅桃","黑桃"};		
//外循環:花色		內循環:不同大小的卡片		
for(int?i=0;i<huase.length;i++)?{			
for(int?j=0;j<Element.length;j++)?{				
puke.add(new?Card(huase[i],Element[j]));			
}		
}				
System.out.println("--------------創建撲克牌成功--------------------");		
//遍歷創建的所有卡片		
int?k=0;		
for?(int?i=0;i<puke.size();i++)?{			
System.out.print(puke.get(i).color+puke.get(i).num+",");			
k++;			
if(k==13)?{				
System.out.println();				
k=0;			
}		
}		
System.out.println("共"+puke.size()+"張牌!");			
}
//	?二,創建兩名玩家
//	?*?玩家至少要有ID、姓名、手牌等屬性,手牌為撲克牌的集合	
public?void?createp()?{		
System.out.println("--------------創建玩家--------------------");		
int?i=0;		
while(i<2)?{			
try{				
Scanner?input=new?Scanner(System.in);				
System.out.println("請輸入第"+(i+1)+"位玩家的ID和姓名");				
System.out.println("輸入ID:");				
Integer?id=input.nextInt();								
if(pls.containsKey(id)){					
System.out.println("請不要重復輸入相同的ID:");					
continue;				
}				
System.out.println("輸入姓名:");				
String?name=input.next();				
Player?newPlayer=new?Player(id,name);				
if(pls.containsValue(newPlayer))?{					
System.out.println("請不要重復輸入同一個姓名");					
continue;				
}				
pls.put(id,newPlayer);				
i++;				
}catch(InputMismatchException?e)?{					
System.out.println("請輸入整數類型的ID");					
continue;				
}		
}				
for?(Entry<Integer,?Player>?entry2?:?entry)?{			
System.out.println("---------歡迎玩家"+entry2.getValue().name);		
}	
}
//	?三,洗牌
//	?*?將之前創建的“一副撲克牌”打亂順序	
public?void?order()?{		
for(int?i=0;i<52;)?{			
Integer?x=random.nextInt(52);			
Card?j=puke.get(x);			
List<Integer>list=new?ArrayList<Integer>();			
list.add(random.nextInt());			
while(list.contains(x))?{				
continue;			
}			
orderPuke.add(j);			
i++;		
}				
System.out.println("--------------洗牌完畢--------------------");		
int?k=0;		
for?(int?i=0;i<orderPuke.size();i++)?{			
System.out.print(orderPuke.get(i).color+orderPuke.get(i).num+",");			
k++;			
if(k==13)?{				
System.out.println();				
k=0;			
}	
System.out.println("共"+orderPuke.size()+"張牌!");		
}		
		}
//	?四,發牌
//	?*?將洗牌的撲克牌集合,從第一張開始,發給兩名玩家,按照一人一張的方式,每人發2張	
public?void?pass()?{		
System.out.println("--------------開始發牌--------------------------------");		
for(int?i=0;i<4;)?{			
for?(Entry<Integer,?Player>?entry2?:?entry)?{				
Card?x=orderPuke.get(0);				
System.out.println("-----------	"+entry2.getValue().name+"拿牌");				
entry2.getValue().holdCard.add(0,?x);				
resultCard.add(0,?x);				
orderPuke.remove(0);				
i++;			
}		
}		
Collections.sort(resultCard);		
System.out.println("----------發牌結束!-----------------");	}
//	*?五,游戲
//	?*?比較兩名玩家手中的撲克牌點數最大的牌,大的贏,如果點數相同,則按照花色比較。	
public?void?pk()?{		
System.out.println("-------------開始游戲--------------");		
System.out.println("比賽結果:");		
Card?resultCard;		
List?result?=new?ArrayList();		
for?(Entry<Integer,?Player>?entry2?:?entry)?{			
Player?pl=entry2.getValue();			
Collections.sort(pl.holdCard);			
Card?maxCard=pl.holdCard.get(1);			
Card?minCard=pl.holdCard.get(0);			
System.out.println(pl.name+"最大的牌是"+maxCard.color+maxCard.num);			
System.out.println(pl.name+"最小的牌是"+minCard.color+minCard.num);			
result.add(maxCard);		}		
Collections.sort(result);		
for?(Entry<Integer,?Player>?entry2?:?entry)?{			
Player?pl=entry2.getValue();			
if(pl.holdCard.contains(result.get(result.size()-1)))?{				
System.out.println("獲勝者:"+pl.name);			}						}	}		public?static?void?main(String[]?args)?{		PukeTest?pt=new?PukeTest();		pt.createCard();		pt.createp();		pt.order();		pt.pass();		pt.pk();	}}


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

舉報

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

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

進入課程

交作業了,感覺挺繁瑣的

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

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

幫助反饋 APP下載

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

公眾號

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