刘谦龙年春晚魔术模拟
守岁共此时
代码
直接贴代码了,异常处理有点问题,正常流程能跑通
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<String> listPoker = new ArrayList<>(54);public static List<String> choose = new ArrayList<>(4);public static HashMap<Integer, String> map = new HashMap<>();static {map.put(1, "南方");map.put(2, "北方");map.put(3, "二家岗子");}public static List<String> 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<String> push() {System.out.println("请从中间撕碎扑克,按 ok 撕碎 !");Scanner scanner = new Scanner(System.in);if (!"ok".equalsIgnoreCase(scanner.nextLine())) {System.out.println("不撕就别玩,结束了");return choose;}ArrayList<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> pushed) {while (pushed.size() > 1) {luck(pushed);}}public static void main(String[] args) {// 获取完整扑克getAllPoker().forEach(t -> System.out.print(" " + t));// 从中选择四张choosePoker();// 打乱suffer();// 撕碎List<String> pushed = push();// namenameSuffer(pushed);// suffer_3suffer_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));}}
相关文章:
刘谦龙年春晚魔术模拟
守岁共此时 代码 直接贴代码了,异常处理有点问题,正常流程能跑通 package com.yuhan.snginx.util.chunwan;import java.util.*;/*** author yuhan* since 2024/02/10*/ public class CWMS {static String[] num {"A", "2", &quo…...

re:从0开始的CSS学习之路 9. 盒子水平布局
0. 写在前面 过年也不能停止学习,一停下就难以为继,实属不应 1. 盒子的水平宽度 当一个盒子出现在另一个盒子的内容区时,该盒子的水平宽度“必须”等于父元素内容区的宽度 盒子水平宽度: margin-left border-left padding-lef…...

【MySQL基础】:深入探索DQL数据库查询语言的精髓(上)
🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. DQL1.1 基本语法1.2 基础查询1.3 条件查询1.3 聚合函数 🌤️ 全篇…...

JavaScript实现轮播图方法
效果图 先来看下效果图,嫌麻烦就不用具体图片来实现了,主要是理清思路。(自动轮播,左右按钮切换图片,小圆点切换图片,鼠标移入暂停轮播,鼠标移出继续轮播) HTML 首先是html内容&am…...
Web课程学习笔记--jsonp的原理与简单实现
jsonp的原理与简单实现 原理 由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源,为了实现跨域请求,可以通过script标签实现跨域请求,然后在服务端输出JSON数据并执行回调函数&…...

第78讲 修改密码
系统管理实现 修改密码实现 前端 modifyPassword.vue: <template><el-card><el-formref"formRef":model"form":rules"rules"label-width"150px"><el-form-item label"用户名:&quo…...

Docker 容器网络:C++ 客户端 — 服务器应用程序。
一、说明 在下面的文章中, 将向您概述 docker 容器之间的通信。docker 通信的验证将通过运行 C 客户端-服务器应用程序和标准“ping”命令来执行。将构建并运行两个单独的 Docker 映像。 由于我会关注 docker 网络方面,因此不会提供 C 详细信息。…...

Android 识别车牌信息
打开我们心爱的Android Studio 导入需要的资源 gradle //开源车牌识别安卓SDK库implementation("com.github.HyperInspire:hyperlpr3-android-sdk:1.0.3")button.setOnClickListener(v -> {Log.d("Test", "");try (InputStream file getAs…...

C#在窗体正中输出文字以及输出文字的画刷使用
为了在窗体正中输出文字,需要获得输出文字区域的宽和高,这使用MeasureString方法,方法返回值为Size类型; 然后计算输出的起点的x和y坐标,就可以输出了; using System; using System.Collections.Generic; …...

二十、K8S-1-权限管理RBAC详解
目录 k8s RBAC 权限管理详解 一、简介 二、用户分类 1、普通用户 2、ServiceAccount 三、k8s角色&角色绑定 1、授权介绍: 1.1 定义角色: 1.2 绑定角色: 1.3主体(subject) 2、角色(Role和Cluster…...

【PTA|期末复习|编程题】数组相关编程题(一)
目录 7-1 乘法口诀数列 (20分) 输入格式: 输出格式: 输入样例: 输出样例: 样例解释: 代码 7-2 矩阵列平移(20分) 输入格式: 输出格式: 输入样例: 输出样例: …...

[office] 怎么在Excel2003菜单栏自定义一个选项卡 #其他#微信#知识分享
怎么在Excel2003菜单栏自定义一个选项卡 怎么在Excel2003菜单栏自定义一个选项卡 ①启动Excel2003,单击菜单栏--工具--自定义。 ②在自定义界面,我们单击命令标签,在类别中选择新菜单,鼠标左键按住新菜单,拖放到菜单栏…...
面试 JavaScript 框架八股文十问十答第六期
面试 JavaScript 框架八股文十问十答第六期 作者:程序员小白条,个人博客 相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新! ⭐点赞⭐收藏⭐不迷路!⭐ 1)use strict是什么…...

【Web】小白友好的Java内存马基础学习笔记
目录 简介 文件马与内存马的比较 文件马原理 内存马原理 内存马使用场景 内存马分类 内存马注入方式 这篇文章主要是概念性的,具体技术细节不做探究,重点在祛魅。 简介 内存马(Memory Shellcode)是一种恶意攻击技术&…...
Rust猜数字游戏
Rust进阶:猜数字游戏 Rust是一门现代的系统级编程语言,注重内存安全、并发性能以及表达力。在这篇博客中,我们将深入介绍一个更加复杂的猜数字游戏代码,展示Rust语言的一些高级特性。 代码示例 以下是一个升级版的Rust猜数字游…...
.gitlab-ci.yml文件参数配置和使用
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...
Go语言从基础到高级-目录
一、编程入门和Go语言简介 什么是编程和为什么要学习编程计算机编程的基本概念Go语言简介为什么选择Go语言 二、设置Go语言开发环境 如何安装Go语言设置环境变量Go语言的工作空间配置 三、Go语言基础 Hello, World!初体验变量和常量数据类型(整数、浮点数、字符…...
Linux CentOS stream 9 alias
alias命令在Linux中用于创建命令别名。它允许用户为常用的命令或命令组合创建短而易记的别名,从而提高工作效率。 alias命令与windows中的快捷方式相同,执行别名时,终端解释器就进行查询与转换,进而执行原来的完整命令。 熟练使用alias命令可以使我们将一长串命令或者一些…...
WebSocketServer+redis实时更新页面数据
redis 实现发布订阅功能具体实现_redis convertandsend-CSDN博客 主要看上面这个 使用redis做websocket分布式消息推送服务_websocket redis-CSDN博客 ClassCastException: java.lang.String cannot be cast to com.alibaba.fastjson.JSONObject 的解决办法_java.lang.class…...
快速掌握Vue.js框架:从入门到实战
一、引言 Vue.js,作为一款广受欢迎的渐进式JavaScript框架,以其轻量级、易用性和高效性在前端开发领域占据了一席之地。Vue.js遵循MVVM(Model-View-ViewModel)设计模式,它通过双向数据绑定机制简化了开发者对用户界面与底层数据模型之间关系的处理,使得构建现代Web应用变…...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
JS手写代码篇----使用Promise封装AJAX请求
15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...

路由基础-路由表
本篇将会向读者介绍路由的基本概念。 前言 在一个典型的数据通信网络中,往往存在多个不同的IP网段,数据在不同的IP网段之间交互是需要借助三层设备的,这些设备具备路由能力,能够实现数据的跨网段转发。 路由是数据通信网络中最基…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化
一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一,是基于哈希表的Map接口非同步实现。它允许使用null键和null值(但只能有一个null键),并且不保证映射顺序的恒久不变。与Hashtable相比,Hash…...

react-pdf(pdfjs-dist)如何兼容老浏览器(chrome 49)
之前都是使用react-pdf来渲染pdf文件,这次有个需求是要兼容xp环境,xp上chrome最高支持到49,虽然说iframe或者embed都可以实现预览pdf,但为了后续的定制化需求,还是需要使用js库来渲染。 chrome 49测试环境 能用的测试…...

开疆智能Ethernet/IP转Modbus网关连接鸣志步进电机驱动器配置案例
在工业自动化控制系统中,常常会遇到不同品牌和通信协议的设备需要协同工作的情况。本案例中,客户现场采用了 罗克韦尔PLC,但需要控制的变频器仅支持 ModbusRTU 协议。为了实现PLC 对变频器的有效控制与监控,引入了开疆智能Etherne…...
大模型智能体核心技术:CoT与ReAct深度解析
**导读:**在当今AI技术快速发展的背景下,大模型的推理能力和可解释性成为业界关注的焦点。本文深入解析了两项核心技术:CoT(思维链)和ReAct(推理与行动),这两种方法正在重新定义大模…...