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

比大小,不一样的算法,利用list集合的indexOf定位,用随机抽取牌的方式而非打乱顺序!

package demo_playing_cards;
/*
 * 1.主要功能是创建牌属性
 * 2.将创建好的对象赋值给List集合。
 */
public class Cards implements Comparable<Cards>{
       private String design; // 创建花色属性
       private String number; //创建点色属性
       
	public String getDesign() {
		return design;
	}
	public void setDesign(String design) {
		this.design = design;
	}
	public String getNumber() {
		return number;
	}
	public void setNumber(String number) {
		this.number = number;
	}
	
	public Cards(String design,String number){
		this.design = design;
		this.number = number;
	}
	@Override
	public int compareTo(Cards o) {
		// TODO 自动生成的方法存根
		return this.number.compareTo(o.number);
	}
}

用户类:创建用户

package demo_playing_cards;

import java.util.HashSet;
import java.util.Set;

/**
 * 1.创建学生对象,进行抓牌比点数
 * 2.没人抓取2张牌,按照2~A比大小,若点数相同则按照黑红梅方顺序比较
 */
public class TestUserName{
            private Integer Id;
            
            private String Name;
			
            Set<Cards> set;
            
            @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 == null)
					return false;
				if (!(obj instanceof TestUserName))
					return false;
				TestUserName other = (TestUserName) obj;
				if (Name == null) {
					if (other.Name != null)
						return false;
				} else if (!Name.equals(other.Name))
					return false;
				return true;
			}
            
			public Integer getId() {
				return Id;
			}
			public void setId(Integer id) {
				Id = id;
			}
			public String getName() {
				return Name;
			}
			public void setName(String name) {
				Name = name;
			}
     public TestUserName(Integer Id,String Name){
    	 this.Id = Id;
    	 this.Name = Name;
    	 this.set = new HashSet<Cards>();
     }
	
	}
package demo_playing_cards;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.InputMismatchException;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;
/*
 * 1.将创建好的牌存入List有序集合中
 */
public class Testlist {
	
      public List<Cards> list;  //存放创建好的牌对象
      public List<String> list1;//存放牌模型的集合框架
      public Map<Integer,TestUserName> user;//创建学生对象并且随机选牌
      List<Integer> userStore;  
      TestUserName username;
      Scanner input;
//      TestUserName username;
      
      public Testlist(){
    	  list = new ArrayList<Cards>();
    	  list1 = new ArrayList();
    	  user = new HashMap<Integer,TestUserName>();
    	  userStore = new ArrayList<Integer>();
    	  input = new Scanner(System.in);
      }
      
      /**
       * 创建一个从2~A的集合
       */
      public void TestAdd(){
    	  for(int i = 2; i <= 10; i++){
    		  list1.add(String.valueOf(i));
    	  }
    	  list1.addAll(Arrays.asList("J","Q","K","A"));
//    	  System.out.println("测试添加牌模型:");
//    	  for (String cards : list1) {
//			System.out.print(cards+",");
//		}
      }
      /**
       * 创建牌
       */
      public void TestAdd2(){
    	  System.out.println("----------创建扑克牌!-----------");
    	for (String cards : list1) {
			list.add(new Cards("方块",cards));	
			list.add(new Cards("梅花",cards));
			list.add(new Cards("红桃",cards));
			list.add(new Cards("黑桃",cards));
		}
    	
    	//测试是否创建成功
    	System.out.println("----------扑克牌创建成功!-----------");
    	System.out.print("为:");
    	for (Cards cards : list) {
			System.out.print(cards.getDesign()+cards.getNumber()+",");
		}
    	System.out.println();
      }
      
      
      /**
       * 存储用户ID的方法
       */
      public void TestUserStort(Integer ID){
    	  userStore.add(ID);
      }
      
      /**
       * 创建用户对象并且随机抽取里面的两张牌
       * @param args
       */
      public void TestUserName(){
//    	  boolean searchFlag=false;
    	  Integer ID = null;
    	  for(int i = 1;i <= 2; i++){ 
    		  while(true){
          
			try {
				System.out.println("请输入第"+i+"个用户ID");
				   ID = input.nextInt();
			} catch (Exception e) {
				// TODO 自动生成的 catch 块
				System.out.println("请输入整形的ID");//捕捉类型不匹配的错误
				input.next();    //清空缓冲区
				continue;
			}
			 //判断ID在user集合中是否存在
				  TestUserName us = user.get(ID);
				  if(us != null){
					  System.out.println("已存在该学生!!");	
					  continue;
					  }			        	  				  
		
				  TestUserStort(ID);	  
          break;
    		  }
    	  //输入用户名
    	  System.out.println("请输入第"+i+"用户名");
    	  
    	  String name = input.next();
    	  //将ID和name给创建对象
    	   username = new TestUserName(ID, name);
    	   user.put(ID,username);
    	   
		}
    	  
    	  
    	  Set<Entry<Integer,TestUserName>> entryset = user.entrySet();    	  
   	   for (Entry<Integer, TestUserName> entry : entryset) {
			System.out.println("----欢迎玩家:" + entry.getValue().getName());
   	   }
    	  }  
      
      /**
       * 进行发牌
       */
      public void TestLicensing(){
    	  Random random = new Random();
    	  System.out.println("---------开始发牌...---------");
    	
    	  TestUserName name1 = user.get(userStore.get(0));
    	  TestUserName name2 = user.get(userStore.get(1));
    	  Cards ca = null;
    	  int []size = new int[2];
    	  for(int i = 0;i < 2; i++){
    		  do{
    		  ca = list.get(random.nextInt(list.size()-1));
    		  }while(name1.set.contains(ca));
    		  name1.set.add(ca);
    		  System.out.println( name1.getName() + "用户所抽到的牌:" + ca.getDesign()+ca.getNumber());
    		 size[i] = list.indexOf(ca);
    	  }
    	  Cards ca1;
    	  int[] size2 = new int[2];
    	  for(int i = 0;i < 2; i++){
    		  do{
    		  ca1 = list.get(random.nextInt(list.size()-1));
    		  }while(name1.set.contains(ca1) || name2.set.contains(ca));
    		  name2.set.add(ca1);
    		  System.out.println( name2.getName() + "用户所抽到的牌:" + ca1.getDesign()+ca1.getNumber());
    		  size2[i] = list.indexOf(ca1);
    	  }
    	  //对数组进行排序
    	  Arrays.sort(size);
    	  Arrays.sort(size2);
    	  //进行比较,谁大谁赢
    	  if(size[1]>size2[1]){
    		  System.out.println(name1.getName()+"获胜");
    	  }else
    		  System.out.println(name2.getName()+"获胜");
      }
      
      public static void main(String[] args){
    	  Testlist st = new Testlist();
    	  st.TestAdd();
    	  st.TestAdd2();
    	  st.TestUserName();
    	  st.TestLicensing();
      }
}


正在回答

2 回答

哇,好厉害!


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

好巧我也是利用角标排定大小,但是真敢其实是很烂的,关键是我忘了比较器咋写

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

举报

0/150
提交
取消

比大小,不一样的算法,利用list集合的indexOf定位,用随机抽取牌的方式而非打乱顺序!

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