Javaのセットを使用して、家主が発行した2種類のカードをシミュレートします(サイズまたはスーツに応じて)

最初の種類

色に応じて、同じ色を並べて、同じ色を並べ替えます

最初の並べ替えは、コード内のall()メソッドを参照します

2番目のソート

実際の大家さんゲームの並べ替え方法は、王様(こちらはジョーカー)の順番で並べ替えるジョーカー2AKQJ109876543で、スーツの順番は自分で調整できます。

2番目の並べ替えは、コード内の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