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.
- Defina dos matrices para almacenar el tamaño del palo y la tarjeta respectivamente
- Crea una colección HashMap para almacenar todas las tarjetas
- Cree una ArrayList para almacenar el índice de la tarjeta
- 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
- La adición del rey y el rey a esta carta está lista para completarse.
- Baraja el índice de la matriz a través del método aleatorio de Colecciones.
- Cree cuatro colecciones TreeSet para representar a los tres jugadores y las cartas de mano
- Empiece a repartir, recorra la colección de listas de arrays a través del bucle for ordinario y maneje las cartas por juicio
- 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:
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]
Siga y aprenda juntos