Simulación de Java Se Lucha contra propietarios 【Practica el uso de colecciones】

Propietario simulado

Propósito: practicar el uso de colecciones

Ideas:

  • Un total de 54 cartas se dividen en cuatro palos, por lo que puedes obtener 52 cartas en un bucle.
  • HashMap: se usa para almacenar todas las tarjetas, la clave es de tipo Integer y el valor es de tipo String
  • ArrayList: utilizado para guardar el índice
  • TreeSet: se utiliza para guardar jugadores y cartas de mano (se puede clasificar de forma natural y se ve ordenado)
  • Shuffle: a través del método shuffle en Colecciones (barajar la colección)
  • Finalmente encuentra la tarjeta del jugador en el mapa por índice.
  1. Defina dos matrices para almacenar el tamaño del palo y la tarjeta respectivamente
  2. Crea una colección HashMap para almacenar todas las tarjetas
  3. Cree una ArrayList para almacenar el índice de la tarjeta
  4. Use bucles anidados para generar 52 tarjetas y agregue las tarjetas y el índice a la colección Map, y el índice a la colección ArrayList
  5. La adición del rey y el rey a esta carta está lista para completarse.
  6. Baraja el índice de la matriz a través del método aleatorio de Colecciones.
  7. Cree cuatro colecciones TreeSet para representar a los tres jugadores y las cartas de mano
  8. Empiece a repartir, recorra la colección de listas de arrays a través del bucle for ordinario y maneje las cartas por juicio
  9. Escriba el método de lectura de tarjetas recorriendo el índice en la colección de conjuntos de árboles y buscando la tarjeta en el mapa a través del índice
    10. Llame al método de lectura de tarjetas

Mostrar resultados de ejecución:
resultado de la operación

package cn.dreamyi.demo1.doudizhu;

import java.util.*;

public class Doudizhu {
    
    
    public static void main(String[] args) {
    
    

        String[] colors = {
    
    "♦", "♥", "♣", "♠"};
        String[] numbers = {
    
    "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A", "2"};

        //创建map集合保存所有牌
        HashMap<Integer, String> hm = new HashMap<>();
        ArrayList<Integer> al = new ArrayList<>();//保存牌的索引

        int index = 0;
        for (String color : colors) {
    
    
            for (String number : numbers) {
    
    
                al.add(index);
                hm.put(index, color + number);
                index++;
            }
        }
        hm.put(index, "小王");
        al.add(index);
        index++;
        hm.put(index, "大王");
        al.add(index);

        //洗牌 打乱顺序
        Collections.shuffle(al);

        //创建三个玩家和底牌集合
        TreeSet<Integer> play1 = new TreeSet<>();
        TreeSet<Integer> play2 = new TreeSet<>();
        TreeSet<Integer> play3 = new TreeSet<>();
        TreeSet<Integer> dp = new TreeSet<>();

        //开始发牌
        for (int i = 0; i < al.size(); i++) {
    
    
            if (i >= al.size() - 3) {
    
    
                dp.add(al.get(i));
            } else {
    
    
                if (i % 3 == 0) {
    
    
                    play1.add(al.get(i));
                } else if (i % 3 == 1) {
    
    
                    play2.add(al.get(i));
                } else if (i % 3 == 2) {
    
    
                    play3.add(al.get(i));
                }
            }
        }
        //看牌
        lookPoker("张三",play1,hm);
        lookPoker("李四",play2,hm);
        lookPoker("王五",play3,hm);
        lookPoker("底牌",dp,hm);
    }

    /**
     * 定义发看牌方法
     * @param play 玩家名字
     * @param list 玩家的索引
     * @param map 洗过后的牌
     */
    public static void lookPoker(String play,TreeSet<Integer> list,Map<Integer,String> map){
    
    
        System.out.println(play+"的牌:");
        Set<Map.Entry<Integer, String>> entries = map.entrySet();
        for(Integer i:list){
    
    
            System.out.print(map.get(i)+" ");
        }
        System.out.println();
    }
}

Cuenta pública: comience con Jane [mmk_xgg]
estudiar juntos
Siga y aprenda juntos

Supongo que te gusta

Origin blog.csdn.net/weixin_42143994/article/details/114028169
Recomendado
Clasificación