24点游戏

背景

目的

这是该游戏的接口

接口的实现

测试程序

实现效果

写在最后


24点游戏

棋牌类益智游戏,要求四个数字经过算术运算结果等于24.
这个游戏可以利用扑克牌进行(可以抽去大小王和花牌,留下40张数字牌),
然后从牌中随机抽取4张牌,用加、减、乘、除(也可以用括号,开方乘方等数学运算)
将抽出的四张牌的数字计算成24。

24点
四张牌必须使用且只能使用一次。
小时候玩的版本是只有1~10这10个数字,
但是对数字的顺序没有规定,也可以使用括号,
而且,当时只知道 +、-、*、\ 这四种运算法则,
就只用加减乘除。

背景

第一次接触24点游戏是在小学5年级的时候,那时候是在同学的计算器的上。
那时,同学发现计算器上有一个写着“24点”的按钮,按下去后就像发现了新大陆似的。
起初,我们并不知道这个游戏怎么玩,后来了个同学说明了大致的规则,然后我们就开始玩了。
此后,我们经常玩这个游戏,直到那个计算器的电池没电了。

目的

  1. .怀念小学时光,那时候一个简单地游戏便能够将一群朋友聚集在一起,简单,也快乐。
  2. 锻炼自己的编程能力,尝试自己实现一些简单地想法。
  3. 尽可能的少接触手机,回归简单的生活。

代码如下:

这是该游戏的接口

定义为接口主要是想先把想到的方法先记录下来。

package point24;
/*** 24点游戏接口*   其中声明了游戏介方法绍introtuct(),示例方法 example(),游戏方法play(),创建数字方法create(),列举结果方法enumerate()* @author 莫得脑子**/
public interface Point24 {/*** 游戏介绍*/public void introtuct();/*** 示例*/public void example();/*** 玩家游戏*/public void play();/*** 创建4个随机数*/public void create();/*** 列举可能的结果*/public void enumerate();}

接口的实现

这代码写得烂,之所以会写,有两个原因。

一、怀念小时候的游戏

二、想体验自己通过程序完成自己想做的事情的感觉(尽管代码写得再差,心里也高兴)

package point24.impl;import java.util.Scanner;import point24.Point24;
/*** 这是24点游戏接口的实现类*     实现了接口中的方法* @author 莫得脑子**/
public class Point24Impl implements Point24{static int num1,num2,num3,num4;//声明游戏中的四个数字/*** 游戏介绍*   包括该游戏的简介,游戏规则*/@Overridepublic void introtuct() {//简介System.out.println();System.out.println("简介:");System.out.println("24点是棋牌类益智游戏");System.out.println();System.out.println(" 它始于何年何月已无从考究,但它以自己独具的数学魅力和丰富的内涵正逐渐被越来越多的人们所接受。");System.out.println(" 这种游戏方式简单易学,能健脑益智,是一项极为有益的活动。");System.out.println();//游戏规则System.out.println("规则:");System.out.println();System.out.println("随机生成4个数字(1~10),用加、减、乘、除(也可以用括号,开方乘方等数学运算)将四个数字计算成24");System.out.println("要求四个数字经过算术运算结果等于24.");System.out.println("四个数字必须使用且只能使用一次");System.out.println();}/*** 示例* 演示游戏的界面*/@Overridepublic void example() {System.out.println("***开始游戏***");System.out.println("2   2   3   3"+"\t"+"请输入您的计算方法:");System.out.println("(2+2)*(3+3)");System.out.println("输入完成!");}/*** 玩家游戏*     玩家开始游戏,玩家可以输入自己的想法,输入完成后程序输出玩家的输入结果*/@Overridepublic void play() {System.out.println("请输入您的计算方法:");Scanner sc = new Scanner(System.in);String result = sc.next();System.out.println("输入完成!");System.out.println("您输入的结果为:"+result);System.out.println();}/*** 创建游戏的4个随机数*/@Overridepublic void create() {int cards[] = new int[4];num1 = (int)(Math.random()*10+1);num2 = (int)(Math.random()*10+1);num3 = (int)(Math.random()*10+1);num4 = (int)(Math.random()*10+1);//将随机数装入数组cards[0]=num1;cards[1]=num2;cards[2]=num3;cards[3]=num4;for (int i : cards) {System.out.print(i+"\t");}}@Overridepublic void enumerate() {int count=0;//列举游戏可能结果boolean flag =false;//默认玩家计算结果错误//++仅有一种if (num1+num2+num3+num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"+"+num2+"+"+num3+"+"+num4);}//+-3种// 如果出现两个-,那么其余两个数字的和至少要等于26,显然不可能if (num1+num2+num3-num4==24) {flag=true;}if (num1+num2-num3+num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"+"+num2+"-"+num3+"+"+num4);}if (num1-num2+num3+num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"-"+num2+"+"+num3+"+"+num4);}//+*6种if (num1+num2+num3*num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"+"+num2+"+"+num3+"*"+num4);}if (num1+num2*num3+num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"+"+num2+"*"+num3+"+"+num4);}if (num1*num2+num3+num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"+"+num3+"+"+num4);}if (num1+num2*num3*num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"+"+num2+"*"+num3+"*"+num4);}if (num1*num2+num3*num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"+"+num3+"*"+num4);}if (num1*num2*num3+num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"*"+num3+"+"+num4);}//+/3种//两个/不可能计算出24if (num1+num2+num3/num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"+"+num2+"+"+num3+"/"+num4);}if (num1+num2/num3+num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"+"+num2+"/"+num3+"+"+num4);}if (num1/num2+num3+num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"/"+num2+"+"+num3+"+"+num4);}//--不可能计算出24//-*2种//如果-出现在第一个位置,那么要求第一个数字至少是25,显然不可能if (num1*num2*num3-num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"*"+num3+"-"+num4);}if (num1*num2-num3*num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"-"+num3+"*"+num4);}if (num1*num2-num3-num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"-"+num3+"*"+num4);}//-/不可能计算出24//**仅有一种if (num1*num2*num3*num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"*"+num3+"*"+num4);}//*/6种if (num1*num2*num3/num4==24) {         flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"*"+num3+"/"+num4);}if (num1*num2/num3*num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"/"+num3+"*"+num4);}if (num1*num2/num3/num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"/"+num3+"/"+num4);}if (num1*num2/num3*num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"/"+num3+"*"+num4);}if (num1/num2/num3*num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"/"+num2+"/"+num3+"*"+num4);}//三种运算符if (num1+num2-num3*num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"+"+num2+"-"+num3+"*"+num4);}if (num1+num2-num3/num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"+"+num2+"-"+num3+"/"+num4);}if (num1+num2*num3-num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"+"+num2+"*"+num3+"-"+num4);}if (num1+num2*num3/num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"+"+num2+"*"+num3+"/"+num4);}if (num1+num2/num3*num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"+"+num2+"/"+num3+"*"+num4);}if (num1-num2+num3*num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"-"+num2+"+"+num3+"*"+num4);}if (num1*num2-num3+num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"-"+num3+"+"+num4);}if (num1*num2+num3-num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"+"+num3+"-"+num4);}if (num1*num2-num3/num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"-"+num3+"/"+num4);}if (num1*num2+num3/num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"+"+num3+"/"+num4);}if (num1*num2/num3+num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"/"+num3+"+"+num4);}if (num1*num2/num3-num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"*"+num2+"/"+num3+"-"+num4);}if (num1/num2*num3+num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"/"+num2+"*"+num3+"+"+num4);}if (num1/num2*num3-num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"/"+num2+"*"+num3+"-"+num4);}if (num1/num2+num3*num4==24) {flag=true;count++;System.out.println("第"+count+"组解"+num1+"/"+num2+"+"+num3+"*"+num4);}//根据flag值,判断随机生成的四个数字是否有解if (flag==true) {System.out.println("这四个数字组合有"+count+"组解");}else {System.out.println("这四个数字组合无解");}}
}

测试程序

package point24.test;import java.util.Scanner;import point24.Point24;
import point24.impl.Point24Impl;public class Test {public static void main(String [] args) {Scanner sc = new Scanner(System.in);/*** 24点游戏界面*/while (true) {System.out.println("************************************************");System.out.println("***************   欢迎进入24点游戏          ***************");System.out.println("************************************************");System.out.println("********* 0.游戏规则       1.开始游戏        2.退出游戏********");System.out.println("************************************************");System.out.println("请选择菜单:");// 操作数int choice = sc.nextInt();switch (choice) {case 0:System.out.println("***游戏规则***");introduct();System.out.println("示例:");example();break;case 1:System.out.println("***开始游戏***");// 创建游戏所需的4个数字create();// 玩家开始游戏play();enumerate();System.out.println();break;case 2:System.out.println("退出成功!");System.exit(0);break;default:// 提示玩家操作有误System.out.println("操作错误!");break;}}}private static void enumerate() {Point24 pE = new Point24Impl();pE.enumerate();}private static void play() {Point24 pP = new Point24Impl();pP.play();}private static void create() {Point24 pC = new Point24Impl();pC.create();}private static void example() {Point24 pE = new Point24Impl();pE.example();}private static void introduct() {Point24 pI = new Point24Impl();pI.introtuct();}
}

实现效果

游戏规则界面

游戏界面

游戏退出

写在最后

欢迎各位技术大佬批评指正。

​​​​​​​24点游戏相关推荐

  1. php 24点算法,PHP实现简单的24点游戏

    忽然想到做一个小应用,需要使用到24点判断,故而写一个简单版的. 代码粗糙,轻拍. /** * 24点游戏 * @author 长安猎人 */ $arr = [10, 4, 5, 3]; $opArr ...

  2. 【c#】24点游戏的实现(可存档且局域网互联)

    (更新,附上此款游戏的源代码供大家学习吧!http://download.csdn.net/detail/gshengod/5774531) lz辛苦考上了北邮的研究生,刚进入实验室,就接到了一个棘手 ...

  3. Java黑皮书课后题第3章:**3.24(游戏:抽牌)编写程序,模拟从一副52张的牌中抽一张牌,程序应显示牌的大小、花色

    **3.24(游戏:抽牌)编写程序,模拟从一副52张的牌中抽一张牌,程序应显示牌的大小.花色 题目 题目概述 运行示例 破题 代码 题目 题目概述 **3.24(游戏:抽牌)编写程序,模拟从一副52张 ...

  4. python游戏开发步骤_详解Python GUI版24点游戏制作过程

    本文作者为浙江温州永嘉县教师发展中心应根球老师,电子邮箱:ycicada@163.com. 传统用扑克牌算24点游戏用于小学低中段学生训练四则运算效果不错,也可用于防止老年痴呆.本项目模拟传统扑克24 ...

  5. 用matlab算24点小游戏,24点游戏的Matlab程序

    function GUI_games24 S.fh = figure('units','pixels',... 'position',[500 500 800 200],... 'menubar',' ...

  6. 基于android平台的24点游戏设计与实现需求分析,基于Android平台的24点游戏设计与实现需求分析_毕业设计论文.doc...

    基于Android平台的24点游戏设计与实现 摘要 随着移动设备的普及以及移动设备的硬件的提升,移动设备的功能越来越完善,移动设备的系统平台也日渐火热起来.目前国内最常见的移动开发平台有Symbian ...

  7. 1.16 24点游戏

    24点游戏的解决办法,也是采取穷举法的思路,4个数,有4!=24中排列的方法,然后3个操作符号,有4×4×4 = 64种结果,再加上括号,有5种结果,于是,每4个数有24*66*5 = 7680中结果 ...

  8. 24点游戏详细截图介绍以及原型、Alpha、Beta对比

    原型设计 图片展示 功能与界面设计 1.登录注册 2.手机号验证 3.24点游戏 4.粉色系女生界面 Alpha 图片展示 功能与界面设计 1.24点游戏 2.背景音乐 3.可查看多种可能的答案 4. ...

  9. 用python代替人脑运算24点游戏

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:老方玩编程 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...

  10. cdoj 1252 24点游戏 dfs

    24点游戏 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1252 Descr ...

最新文章

  1. AI从入门到放弃2:CNN的导火索,用MLP做图像分类识别?
  2. (0073)iOS开发之核心动画高级技巧
  3. 展开被 SpringBoot 玩的日子 《 二 》 WEB 开发
  4. SQL语言学习(六)分组函数学习
  5. 数字笔记-Notion使用教程
  6. java 多线程 聊天_Java做一个多线程类似于QQ的聊天程序。
  7. python图形化编程更改内部参数_python-参数化-(3)(替换数据)
  8. [css] 使用rem布局时怎样合理设置根标签字体大小?
  9. 中介是如何快速炒高房租,并让你入坑的
  10. ci持续集成工程师前景_『中级篇』docker之CI/CD持续集成-项目生成镜像(76)
  11. WPF之X名称空间学习
  12. ORACLE错误6650
  13. C++编译器在编译程序时会自动定义的预处理器(类似于全局变量)
  14. android 代码操作.db demo,Android实现商品展示效果
  15. saas,pass介绍
  16. IEEE Transactions on Industrial Informatics(TII)投稿指导
  17. latex 两个表格并排放置
  18. 整合百度AI实现手机拍照识别车牌号
  19. MAC 打开所有来源的程序
  20. HTML5+CSS3小实例:有趣的沙漏加载动画

热门文章

  1. C# npoi读execel 未能加载文件或程序集“ICSharpCode.SharpZipLib, Version=0.86.0.518, Culture=neut al, PublicKeyTok
  2. Facebook变现方式详解
  3. 一分钟快速搭建Windows防污染DNS服务器——Pcap_DNSProxy
  4. 知识付费内容分类和平台解析
  5. 领导者-追随者模型介绍
  6. 如何用数学知识提升情商?数学学霸们的6大思维习惯
  7. 碎碎念C++(一)冗杂问题
  8. 用计算机弹奏若当来世,狐妖小红娘的主题曲求若当来世完整版。
  9. CSDN天津俱乐部简介
  10. 多媒体个人计算机能处理什么,多媒体计算机可以处理的信息类型有什么?