守岁共此时

代码

直接贴代码了,异常处理有点问题,正常流程能跑通

package com.yuhan.snginx.util.chunwan;

import java.util.*;

/**

* @author yuhan

* @since 2024/02/10

*/

public class CWMS {

static String[] num = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};

static String[] style = {"♠️", "♥️", "♣️", "♦️"};

static String[] wang = {"大王", "小王"};

public static List listPoker = new ArrayList<>(54);

public static List choose = new ArrayList<>(4);

public static HashMap map = new HashMap<>();

static {

map.put(1, "南方");

map.put(2, "北方");

map.put(3, "二家岗子");

}

public static List getAllPoker() {

for (String string : style) {

for (String s : num) {

listPoker.add(string + s);

}

}

listPoker.add(Arrays.toString(wang));

return listPoker;

}

public static void choosePoker() {

String styleIn, numIn;

for (int i = 0; i < 4; i++) {

System.out.println("\n请选择花色");

Scanner scanner = new Scanner(System.in);

styleIn = scanner.nextLine();

System.out.println("请选择数字");

numIn = scanner.nextLine();

System.out.println("是否确认选择 ok or any keys");

String sc = scanner.nextLine();

if (!Objects.equals(sc, "ok")) {

return;

}

while (Objects.isNull(styleIn) || Objects.isNull(numIn)) {

System.out.println("输入错误,请重新输入");

}

String chPoker = styleIn + numIn;

while (!listPoker.contains(chPoker)) {

System.out.println("花色非法或不存在的数字");

}

System.out.println("\n 本次选择" + chPoker);

choose.add(chPoker);

}

System.out.println("你选择的扑克分别为:");

choose.forEach(System.out::println);

}

public static void suffer() {

System.out.println("\n 请打乱刚刚选择的牌,按ok键进行 !");

Scanner scanner = new Scanner(System.in);

if ("ok".equalsIgnoreCase(scanner.nextLine())) {

System.out.println("\n洗牌前顺序");

choose.forEach(s -> System.out.println(s + " "));

Collections.shuffle(choose);

System.out.println("\n洗牌后顺序");

choose.forEach(s -> System.out.println(s + " "));

}

}

public static List push() {

System.out.println("请从中间撕碎扑克,按 ok 撕碎 !");

Scanner scanner = new Scanner(System.in);

if (!"ok".equalsIgnoreCase(scanner.nextLine())) {

System.out.println("不撕就别玩,结束了");

return choose;

}

ArrayList result = new ArrayList<>(choose);

for (String s : choose) {

String str = s + "副本";

result.add(str);

}

result.forEach(System.out::println);

return result;

}

public static void nameSuffer(List push) {

System.out.println("请输入你的姓名,名字有几个字,就将最上面的牌放到最下边几次");

Scanner scanner = new Scanner(System.in);

String name = scanner.nextLine();

if (Objects.isNull(name)) {

System.out.println("姓名为空");

return;

}

for (int i = 0; i < name.length(); i++) {

String first = push.get(0);

push.remove(0);

push.add(first);

}

}

public static void magicTime(List push) {

String magic = "见证奇迹的时刻";

for (int i = 0; i < magic.length(); i++) {

String first = push.get(0);

push.remove(0);

push.add(first);

}

}

public static void suffer_3(List push, boolean region, int regionChoose) {

Random random = new Random();

if (region) {

regionChoose = (regionChoose < 1 || regionChoose > 3) ? 3 : regionChoose;

}

// 生成3到5之间的随机数

int randomNum = region ? random.nextInt(4 + (3 - regionChoose)) : random.nextInt(4);

System.out.println(randomNum);

ArrayList third = new ArrayList<>();

for (int i = 0; i < 3; i++) {

third.add(push.get(i));

}

// third.forEach(System.out::println);

// System.out.println("third");

if (!region) {

push.remove(0);

push.remove(0);

push.remove(0);

} else {

for (int i = 0; i < regionChoose; i++) {

push.remove(0);

}

}

// push.forEach(System.out::println);

// System.out.println("removed");

push.addAll(randomNum + 1, third);

}

public static String getFirst(List suffered) {

return suffered.get(0);

}

public static int region() {

System.out.println("\n 请选择南北方人 ,如果你是南方人请输入 1;如果你是北方人请输入 2; 如果不能确认你是南北方人请输入 3");

Scanner scanner = new Scanner(System.in);

int i = scanner.nextInt();

while (Objects.isNull(map.get(i))) {

System.out.println("输入错误,请重新输入 !");

i = scanner.nextInt();

}

System.out.println("你已选择" + map.get(i));

return i;

}

public static void drop(List pushed, int i) {

for (int i1 = 0; i1 < i; i1++) {

pushed.remove(0);

}

}

public static int chooseSex() {

Scanner scanner = new Scanner(System.in);

System.out.println("请选择 性别 男:1 女:2");

int i = scanner.nextInt();

System.out.println(i == 1 ? "男" : "女");

return i;

}

/**

* 好运留下来

*

* @param args

*/

public static void luck(List push) {

String first = push.get(0);

push.remove(0);

System.out.println("好运留下来");

push.add(first);

System.out.println("烦恼丢出去");

push.remove(0);

}

private static void anyWay(List pushed) {

while (pushed.size() > 1) {

luck(pushed);

}

}

public static void main(String[] args) {

// 获取完整扑克

getAllPoker().forEach(t -> System.out.print(" " + t));

// 从中选择四张

choosePoker();

// 打乱

suffer();

// 撕碎

List pushed = push();

// name

nameSuffer(pushed);

// suffer_3

suffer_3(pushed, false, 0);

// 记住取出的第一张牌

String first = getFirst(pushed);

// 南北方人选择

// 南方北方切牌

suffer_3(pushed, true, region());

// 男女选择

int sex = chooseSex();

drop(pushed, sex);

// 见证奇迹的时刻

magicTime(pushed);

// 多来几次

anyWay(pushed);

// 对比

System.out.println("第一张牌" + first);

System.out.println("丢完剩下的" + pushed.get(0));

}

}

好文阅读

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: