为了账号安全,请及时绑定邮箱和手机立即绑定

扑克牌游戏-交作业

package com.imooc.pukepai;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
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;
public class PuKeTest {		
     public Set<PuKe>  si;	
     public List<PuKe> puke;	
     public List<Player> player;	
     /**	
     * 创建一副扑克牌	
     */	
        public void creatPuke(){
        		puke=new ArrayList<PuKe>();
        		String[] li={"2","3","4","5","6","7","8","9","10","J","Q","K","A"};		
        		String[] lis={"黑桃","红桃","方块","梅花"};		
        		//创建集合中的对象		
        		PuKe pu;		
        		for(int i=0;i<lis.length;i++){	
        			   for(int j=0;j<li.length;j++){	
        			   			pu=new PuKe();				
        			   			pu.colour=lis[i];				
        			   			pu.num=li[j];				
        			   			puke.add(pu);			
        			}					
        		}			   
        		 System.out.println("-------创建扑克牌成功--------");	   	  
        		  for (PuKe p : puke) {		
        		    System.out.print(p.colour+p.num+" ");	
        		    }			
       		}	
       		/**	
       		* 洗牌	
       		* @return 	
       		*/	
       		public void xiPai(){
       				System.out.println("-----开始洗牌------");		
       				si=new HashSet<PuKe>();		
       				PuKe pu;		
       				for(int i=0;i<puke.size();i++){		
       					pu=new PuKe();			
       					pu.colour=puke.get(i).colour;			
       					pu.num=puke.get(i).num;			
       					si.add(pu);		
       				}		
       				 System.out.println();		
       				 System.out.println("-------洗牌成功-------");		
       		for (PuKe p : si) {		
       				System.out.print(p.colour+p.num+" ");			
       				}
       							
       				}	
       /**	
       * 创建两个player	
       */	
       public void creatPlayer(int a){	
        	System.out.println("--------开始创建玩家--------");	    
        	player=new ArrayList<Player>();		
        	Scanner sc=new Scanner(System.in);		
        	Player players;		
        	for(int i=1;i<=a;i++){		
        		try {			
        			players=new Player();				
        			System.out.println("请输入第"+i+"个人的ID:");				
        			players.id=sc.nextInt();				
        			System.out.println("请输入第"+i+"个人的名字:");				
        			players.name=sc.next();				
        			player.add(players);		
        				}catch(InputMismatchException e){		
        			System.out.println("您输入的ID有误,请重新输入!");				
        			this.creatPlayer(a);		
        				}catch (NumberFormatException e) {				
        				// TODO: handle exception				
        			System.out.println("程序有误,请重新开始!");		
        					e.printStackTrace();		
        					}			
       		}		
       		        System.out.println("这个游戏参加的玩家有"+a+"个人,他们分别是:");	
       		        	for (Player p : player) {		
       		        		System.out.println("玩家:"+p.id+"号"+p.name);	
       		        			}		
       		        	}	
       	/**	
       	* 玩家从洗完牌的集合中获取扑克牌	
       	*/	
       	public void getPuke(int b){	
       		System.out.println("---------获取"+b+"张手牌--------");		
       		List<PuKe> puk=new ArrayList<PuKe>();		
       		puk.addAll(si);
       		//		for (PuKe puKe : puk) {
       		//			System.out.print(puKe.colour+puKe.num+" ");
       		//		}		
       		   int c=player.size();		
       		   List<PuKe> ps;		
       		   for(int i=0;i<c;i++){			
       		   ps=new ArrayList<PuKe>();			
       		   player.get(i).pukes=new ArrayList<PuKe>();			
       		   System.out.println("玩家"+player.get(i).name+"选的牌为:");			
       		   	for(int j=0;j<b;j++){		
       		   			ps.add(puk.get(i+j*c));				
       		   			System.out.print(puk.get(i+j*c).colour+puk.get(i+j*c).num+"");	
       		 		}		
       		 			System.out.println();		
       		 			    player.get(i).pukes.addAll(ps);
       		//		    for (PuKe puKe : player.get(i).pukes) {
       		//				System.out.println(puKe.colour+puKe.num+"");
       		//			}	
       			}		
       	}   
       	 /**   
       	   * 将玩家的扑克牌进行比较  
       	   */	
       	    public void vsMax(){	
       	    	System.out.println("-------开始进行比较------");
       	    	//		player=new ArrayList<Player>();		
       	    	Map<String,PuKe> map=new HashMap<String,PuKe>();		
       	    	List<PuKe> lis=new ArrayList<PuKe>();		
       	    	for(int i=0;i<player.size();i++){		
       	    		int b=player.get(i).pukes.size();			
       	    		Collections.sort(player.get(i).pukes,new CardComparator());			
       	    		System.out.println(player.get(i).name+"的最大牌为:"+player.get(i).pukes.get(b-1));	
       	    		lis.add(player.get(i).pukes.get(b-1));			
       	    		map.put(player.get(i).name, player.get(i).pukes.get(b-1));	
       	    	}		
       	    	//对各个人的最大值进行整合排序		
       	    	Collections.sort(lis,new CardComparator());		
       	    	int c=lis.size();		
       	    	Set<Entry<String,PuKe>> entrySet=map.entrySet();		
       	    	for(Entry<String,PuKe> entry:entrySet){		
       	    		if(entry.getValue().equals(lis.get(c-1))){		
       	    				System.out.println(entry.getKey()+"获得了胜利!其最大值为:"+entry.getValue());	
       	    					}	
       	    			}		
       	   	}	
       	 /**	
       	 * @param args	
       	 */	
       	 public static void main(String[] args) {	
       	 	// TODO Auto-generated method stub				
       	 	PuKeTest pt=new PuKeTest();		
       	 	pt.creatPuke();		
       	 	pt.xiPai();		
       	 	pt.creatPlayer(3);	   
       	 	 pt.getPuke(4);	    
       	 	 pt.vsMax();	
       	 	 
       	 	 }
       	 	 }
       	 	 
       	 	 
package com.imooc.pukepai;
    public class PuKe {
    	public String colour;	
    	public String num;	
    public PuKe(){		
    
    	}    
    public PuKe(String colour,String num){  
      	this.colour=colour;    	
      	this.num=num;   
      	 }	
     @Override	
    public int hashCode() {	
    	final int prime = 31;		
    	int result = 1;		
    	result = prime * result + ((colour == null) ? 0 : colour.hashCode());		
    	result = prime * result + ((num == null) ? 0 : num.hashCode());		
    	return result;
    		}	
    @Override	
    public boolean equals(Object obj) {	
    	if (this == obj)			
    	return true;		
    	if (obj == null)			
    	return false;		
    	if (!(obj instanceof PuKe))			
    	return false;		
    	PuKe other = (PuKe) obj;		
    	if (colour == null) {			
    	if (other.colour != null)				
    	return false;		
    	  } else if (!colour.equals(other.colour))		
    	  	return false;		
    	  	if (num == null) {			
    	  	if (other.num != null)				
    	  	return false;		
    	  	} else if (!num.equals(other.num))		
    	  		return false;		return true;
    	  	}	
    @Override	
    public String toString() {		
        return colour+num;	
        }	  
          }
          
package com.imooc.pukepai;
import java.util.List;
   public class Player {	
   	public String name;	
   	public int id;    
   	public List<PuKe> pukes;	
   	}
   	
package com.imooc.pukepai;
import java.util.Comparator;
   public class CardComparator implements Comparator<PuKe> {	
   @Override	
   public int compare(PuKe o1, PuKe o2) {	
   	// TODO Auto-generated method stub		
   	if(o1.num.equals(o2.num)){		
   		return o1.colour.compareTo(o2.colour);		
   		}else{		
   			return o1.num.compareTo(o2.num);	
   		}	
   		}
   		}

写的头蒙

正在回答

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409794    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

扑克牌游戏-交作业

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信