一个用Java写了的简单的扑克牌魔术

一个用Java代码写的简单的扑克牌魔术,就是常见的在心里记一张牌,然后问你两次范围就知道答案,好像原理有点像二进制,小时候大人用这个魔术逗小孩开心,10几年了,原理我也说不清楚,反正代码可以实现,能讲清楚逻辑道理的可以教教我哈,谢谢Thanks♪(・ω・)ノ大佬。代码可以优化很多。。。

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeSet;public class 有趣的扑克牌游戏 {static Map<String, Integer> map = new HashMap<String, Integer>();static String temp[][] = new String[3][7];public static void Rand() {String arr[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "大王", "小王" };String colour[] = { "红桃", "黑桃", "梅花", "方块" };while (map.size() != 21) {int x1 = (int) (Math.random() * 15);if (x1 == 13 || x1 == 14) {map.put(arr[x1], 1);} else {int x2 = (int) (Math.random() * 4);String s = "" + colour[x2] + arr[x1];map.put(s, 1);}}System.out.println("随机生成的21张牌为:");int count = 0;for (String index : map.keySet()) {System.out.print(index + "  ");temp[0 + count / 7][count % 7] = index;count++;}f();}public static void f() {int count = 0;for (String index : map.keySet()) {count++;if (count == 1) {System.out.println();System.out.println();System.out.println("区间1:你选的1" + "-7张:");}if (count == 8) {System.out.println();System.out.println();System.out.println("区间2:你选的8" + "-14张:");}if (count == 15) {System.out.println();System.out.println();System.out.println("区间3:你选的15" + "-21张:");}System.out.print(index + "  ");}System.out.println();System.out.println("请问你喜欢的牌是在区间____?");Scanner input = new Scanner(System.in);System.out.print("区间:");int n = input.nextInt();System.out.println("...................我是分割线......................");System.out.println("我把牌重新洗了一下.......");for (int i = 0; i <= 6; i++) { // 模拟洗牌String exchange = temp[n - 1][i];temp[n - 1][i] = temp[1][i];temp[1][i] = exchange;}String clone[] = new String[21];for (int i = 0; i < temp.length; i++) {for (int j = 0; j < 7; j++) {clone[i * 7 + j] = temp[i][j];}}System.out.println("然后重新分区间");System.out.println();System.out.println("区间1:");for (int i = 0; i <= 6; i++) {System.out.print(clone[20 - i * 3] + " ");temp[0][i] = clone[20 - i * 3];}System.out.println();System.out.println();System.out.println("区间2:");for (int i = 0; i <= 6; i++) {System.out.print(clone[19 - i * 3] + " ");temp[1][i] = clone[19 - i * 3];}System.out.println();System.out.println();System.out.println("区间3:");for (int i = 0; i <= 6; i++) {System.out.print(clone[18 - i * 3] + " ");temp[2][i] = clone[18 - i * 3];}System.out.println("请问你刚刚喜欢的牌又在区间____?");System.out.print("区间:");n = input.nextInt();System.out.println("...................我是分割线......................");System.out.println("我最后把牌重新洗了一下.......");for (int i = 0; i <= 6; i++) { // 模拟洗牌String exchange = temp[n - 1][i];temp[n - 1][i] = temp[1][i];temp[1][i] = exchange;}for (int i = 0; i < temp.length; i++) {for (int j = 0; j < 7; j++) {clone[i * 7 + j] = temp[i][j];}}System.out.println("然后重新分区间");System.out.println();System.out.println("区间1:");TreeSet<String> set = new TreeSet<>(); for (int i = 0; i <= 6; i++) {// System.out.print(clone[20-i*3]+" ");set.add(clone[20 - i * 3]);temp[0][i] = clone[20 - i * 3];}for (String key : set) {System.out.print(key + " ");}set.clear();System.out.println();System.out.println();System.out.println("区间2:");for (int i = 0; i <= 6; i++) {// System.out.print(clone[19-i*3]+" ");set.add(clone[19 - i * 3]);temp[1][i] = clone[19 - i * 3];}for (String key : set) {System.out.print(key + " ");}set.clear();System.out.println();System.out.println();System.out.println("区间3:");for (int i = 0; i <= 6; i++) {// System.out.print(clone[18-i*3]+" ");set.add(clone[18 - i * 3]);temp[2][i] = clone[18 - i * 3];}for (String key : set) {System.out.print(key + " ");}set.clear();System.out.println("最后问你一次刚刚喜欢的牌又在区间____?");n = input.nextInt();System.out.println("你喜欢的牌极有可能是:");System.out.println(temp[n - 1][3]);}public static void main(String[] args) {Scanner input = new Scanner(System.in);System.out.println("请从一副扑克牌中抽21张扑克牌");System.out.println("输入任意字符开始系统随机选取");String n = input.nextLine();if (true) {Rand(); //生成随机21张}}
}

用Java写的一个简单的扑克牌魔术相关推荐

  1. 用Java写了一个简单的控制台狼人杀游戏

    最近上课老师布置的作业是写一个简答的狼人杀游戏,花了大概两天不到写完,比较乱,还有很多逻辑不太顺的地方,有问题的欢迎讨论. 先搞清楚游戏的玩法: 12人局的一个游戏 平民阵营(好人阵营):4个平民 神 ...

  2. 最近写了一个简单的面向对象的脚本语言 Q 语言

    最近写了一个简单的面向对象的脚本语言 Q 语言,语法类似于 Javascript, 加入了一些 python 的语法功能. 同时实现了部分的 Javascript prototype 的功能 (个人觉 ...

  3. 闲来无事,用java写了一个魔方小程序。附源码

    闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...

  4. java实现魔方_闲来无事,用java写了一个魔方小程序。附源码 | 学步园

    闲来无事,用java写了一个魔方小程序.附源码 使用三维数组.相对来说还是简单.呵呵. import java.util.ArrayList; import java.util.List; impor ...

  5. 自己写的一个简单的android记事本app

    自己写的一个简单的记事本app,效果如下: 一.首先是第一个界面的编写,最上面是一个TextView,中间是一个Linearlayout中嵌套一个listview布局,最下面是一个button.下面附 ...

  6. 用Java写的一个万年日历

    用Java写的一个万年日历 当我们学过分支结构语句和循环语句后,我们可以简单的完成一个小案例: 通过输入具体的年月日,输出此年此月此日为星期几,并打印此月日历. 说一下我的思路: 首先第一步,先实现输 ...

  7. java编程游戏飞机旋转问题_用JAVA写的一个飞机游戏

    根据网上视频教程,用JAVA写的一个飞机程序.先看效果先: 改程序主要应用了面向对象的方法构建,使用了AWT技术和一些双缓冲技术 关键有几个点: 一.双缓冲技术,防止重画造成的屏幕闪烁,可以直接用 p ...

  8. easy-mock写的一个简单的模拟二页的反馈

    用easy-mock写的一个简单的模拟二页的反馈,因为后端团队比较传统,所以设计的结构不太规范. 功能:每页10条,共2页,共12条记录,超出参数范围会返错误码: easy模板: {code: fun ...

  9. JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...

    用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...

最新文章

  1. 第二十四课.循环神经网络RNN
  2. apache自动跳转到服务HTML,apache自动将http协议跳转到https
  3. 20个非常有用的PHP类库
  4. DevExpress的GridControl的使用以及怎样添加列和绑定数据源
  5. 使用Zookeeper实现leader选举
  6. 蓝桥杯 试题 基础练习 Huffuman树——13行代码AC
  7. 分析java中文乱码的原因
  8. java中常用的关键字_java中的常用的关键字
  9. php周日,PHP减去一周周日
  10. MVC实战之排球计分(六)—— 使用EF框架,创建Controller,生成数据库。
  11. java容器分数0-9_2018.4.27 java容器
  12. Python并行编程(四):多线程同步之condition(条件变量)实现带有缓冲区的生产者-消费者模型...
  13. java 哈希表入门
  14. 《亲密关系》读后感_设计的直觉和亲密感
  15. 【数学之美】豆瓣9.1 颠覆世界的混沌理论
  16. 计算机硬件的主要性能指标包括,计算机硬件系统有哪些主要的性能指标
  17. Qt自定义进度条示例
  18. 计算机防火墙服务不能启动不了,Windows防火墙不能启动 服务也不能启动,怎么回事?...
  19. python动物专家系统_动物识别专家系统 实验报告
  20. Vue打包后出现的bug -favicon.ico' because it violates the following Content Security Policy direc

热门文章

  1. 2022 2 11 树莓派4B 截屏方法+SCIM输入法配置(三)
  2. 1.8(java高级特性)file文件与IO
  3. 旅游纵览杂志旅游纵览杂志社旅游纵览编辑部2023年第8期目录
  4. 接地(功能性接地)和保护接地的区别
  5. matlab git stash,[已解决]git stash 丢弃
  6. python 登录验证_Python实现简单登录验证
  7. sql按时间取去重最近_sql 去重排序及 java分页
  8. 苏嵌实训——day2
  9. Pwnable之[Toddler's Bottle](三)--memcpy
  10. 09-把时间当作朋友