자바의 세트를 사용하여 집주인이 발행 한 두 종류의 카드를 시뮬레이션합니다 (크기 또는 슈트에 따라 다름)

첫 번째 종류

색상에 따라 같은 색상을 정렬 한 다음 같은 색상을 정렬합니다.

첫 번째 정렬은 코드의 all () 메서드를 참조합니다.

두 번째 종류

실제 시뮬레이션 집주인 게임의 분류 방법은 왕 (여기는 JOKER)의 순서에 따라 분류하는 것입니다. joker2AKQJ109876543, 정장의 순서는 직접 조정할 수 있습니다.

두 번째 정렬은 코드에서 all2 () 메서드를 참조합니다.

다음은 특정 코드 구현입니다. 함수를 전환하면 매개 변수없는 생성자에서 호출의 특정 메소드를 수정하고 all2 () 메소드를 all () 메소드로 변경하여 전환 할 수 있습니다.

//模拟三人斗地主发牌
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;

public class ThreeDemo2 {
    
    
	static List<Integer> list = new ArrayList<Integer>();
	static List<String> list1 = new ArrayList<String>();
	static List<String> list2 = new ArrayList<String>();
	static List<Integer> player1 = new ArrayList<Integer>();
	static List<Integer> player2 = new ArrayList<Integer>();
	static List<Integer> player3 = new ArrayList<Integer>();
	static List<Integer> diPai = new ArrayList<Integer>();
	static int index = 0;
	static int spe;
	static Map<Integer, String> map = new HashMap<Integer, String>();
	public static void main(String[] args) {
    
    
		new ThreeDemo2();
	}
	public ThreeDemo2() {
    
    
		//也可以用数组进行存储...相对简单一点
		list1.add("♠");
		list1.add("♥");
		list1.add("♣");
		list1.add("♦");
		
		list2.add("2");
		list2.add("3");
		list2.add("4");
		list2.add("5");
		list2.add("6");
		list2.add("7");
		list2.add("8");
		list2.add("9");
		list2.add("10");
		list2.add("J");
		list2.add("Q");
		list2.add("K");
		list2.add("A");
		
		all2();
		pecialPai();
		//System.out.println(list.size());
		//System.out.println(list2.get(list2.size()-1));
		threePlayer();
		//System.out.println(map);
		//spe = pecialPai();
		look("赌神", player1, map);
		look("赌圣", player2, map);
		look("赌王", player3, map);
		look("底牌", diPai, map);
		System.out.print("地主牌为:");
		System.out.println(map.get(spe));
	}
	//按花色排序,然后在花色中排序,将list的集合下标赋给map的key作为标志
	public static void all() {
    
    
		map.put(index, "JOKER");
		list.add(index);
		index++;
		map.put(index, "joker");
		list.add(index);
		index++;
		for (String color : list1) {
    
    
			for (String num : list2) {
    
    
				map.put(index, color+num);
				list.add(index);
				index++;
			}
		}
	}
	//按电脑斗地主进行排序
	public static void all2() {
    
    
		map.put(index, "JOKER");
		list.add(index);
		index++;
		map.put(index, "joker");
		list.add(index);
		index++;
		for (int i = 0; i < list1.size(); i++) {
    
    
			map.put(index, list1.get(i)+list2.get(0));
			list.add(index);
			index++;
		}
		//一个大于号小于号的问题排了半天的错误,我吐了
		for (int i = list2.size()-1; i >= 1; i--) {
    
    
			for (int j = 0; j < list1.size(); j++) {
    
    
				map.put(index, list1.get(j)+list2.get(i));
				list.add(index);
				index++;
			}
		}
	}
	//随机一个地主牌的key
	public static void  pecialPai() {
    
    
		Random random = new Random();
		spe = random.nextInt(51);
	}
	//将标好的集合打乱,然后赋给三个集合,获得之后继续整理好
	public static void threePlayer() {
    
    
		Collections.shuffle(list);
		diPai.add(list.get(51));
		diPai.add(list.get(52));
		diPai.add(list.get(53));
		for (int i = 0; i < list.size()-3; i++) {
    
    
			if (i%3 == 0) {
    
    
				player1.add(list.get(i));
			}
			if (i%3 == 1) {
    
    
				player2.add(list.get(i));
			}
			if (i%3 == 2) {
    
    
				player3.add(list.get(i));
			}
		}
		//System.out.println(spe);
		for (int i = 0; i < player1.size(); i++) {
    
    
			if (player1.get(i) == spe) {
    
    
				player1.addAll(diPai);
			}
		}
		for (int i = 0; i < player2.size(); i++) {
    
    
			if (player2.get(i) == spe) {
    
    
				player2.addAll(diPai);
			}
		}
		for (int i = 0; i < player3.size(); i++) {
    
    
			if (player3.get(i) == spe) {
    
    
				player3.addAll(diPai);
			}
		}
		Collections.sort(player1);
		Collections.sort(player2);
		Collections.sort(player3);
		Collections.sort(diPai);
		
	}
	//将三个集合的下标对应到key,获取到内容,只打印内容
	public static void look(String name,List<Integer> player,Map<Integer,String> allPai) {
    
    
		System.out.print(name + ":");
		for (Integer key : player) {
    
    
			String value = allPai.get(key);
			System.out.print(value+" ");
		}
		System.out.println();
	}
}

var foo = 'bar';

구체적인 구현 그림은 다음과 같습니다.

여기에 사진 설명 삽입

스위칭 메소드가 all () 인 이후의 구현 다이어그램은 다음과 같습니다.

여기에 사진 설명 삽입

기존 규칙은 무엇인가요? 버그가 있거나 이해가 안된다면 저와 개인적으로 채팅 할 수 있습니다. qq : 1638580498

추천

출처blog.csdn.net/xiaole060901/article/details/107964971