数组的应用-24点游戏

目录


24点游戏

游戏规则

游戏主要分为三部分

电脑出牌

用户输入算式

电脑判断胜负

总结 


24点游戏

游戏规则:

  1. 54张扑克抽出大小王,剩余52张用来用于游戏;
  2. 每一轮从52张牌中随机抽出4张;
  3. 玩家运用加,减,乘,除方法对4张牌进行组合运算,得出24点即为胜利;
  4. 如果无法算出24点,可以弃牌,表示本轮失败。

游戏主要分为三部分:

  1. 电脑随机出4张牌;
  2. 玩家输入4张牌对应的算式;
  3. 电脑检验算式结果,决定游戏胜败情况。

电脑出牌

java知识点:

  1. 整形数组
  2. Math中的随机数

代码:

    private static int[] dispathCard() {int[] card = new int[13];for(int i = 0; i < card.length; i++) {card[i] = i + 1;}int[] res_card = new int[4];for(int i = 0; i < res_card.length; i++){res_card[i] = card[(int)(Math.random()*card.length)];System.out.println("card " + i + " is " + res_card[i]);}return res_card;}

用户输入算式

java知识点:

  1. Scanner类的使用;
    private static String input() {Scanner inputScanner = new Scanner(System.in);System.out.println("Please input your answer like(4-2*6*2):");return inputScanner.nextLine();}

电脑判断胜负

java知识点:

  1. 整形,字符型数组的使用;
  2. switch分支语句的使用。
 private static boolean checkAnswer(String answer) {int[] card = new int[4];for(int i = 0; i < card.length; i++) {card[i] = answer.charAt(2*i) - '0';}char[] operator = new char[3];for(int i = 0; i < operator.length; i++) {operator[i] = answer.charAt(2*i + 1);}int result = card[0];for(int i = 0; i < operator.length; i++) {result = caculate(result, operator[i], card[i+1]);}return (24 == result);}private static int caculate(int num1, char op, int num2) {int result = 0;switch (op) {case '+':result = num1 + num2;break;case '-':result = num1 - num2;break;    case '*':result = num1 * num2;break;case '/':result = num1 / num2;break;default:break;}return result;}

 游戏记录:


总结 

1. 没有处理弃牌的逻辑,在游戏过程中,存在电脑出的拍无法拼出24点的情况,这中情况看作平局;

2.玩家也可以输入弃牌指令,电脑直接判负;

3.没有考虑带括号的运算式情况,读者如果有兴趣可以添加计算带有括号的表达式。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/19805.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JUC常见类

White graces&#xff1a;个人主页 &#x1f649;专栏推荐:Java入门知识&#x1f649; &#x1f649; 内容推荐:Java锁的策略&#x1f649; &#x1f439;今日诗词:苟利国家生死以,岂因祸福避趋之&#x1f439; ⛳️点赞 ☀️收藏⭐️关注&#x1f4ac;卑微小博主&#x1f64…

Windows系统WDS+MDT网络启动自动化安装

Windows系统WDS+MDT网络启动自动化安装 适用于在Windows系统上WDS+MDT网络启动自动化安装 1. 安装准备 1.下载windows server 2019、windows 10 pro的ISO文件,并安装好windows server 2019 2.下载windows 10 2004版ADK及镜像包 1.1 安装平台 Windows 111.2. 软件信息 软件…

模型优化——模型剪枝、模型量化、知识蒸馏

1.模型剪枝 1.1什么是模型剪枝&#xff1f; 深度学习网络模型从卷积层到全连接层存在着大量冗余的参数&#xff0c;大量神经元激活值趋近于0&#xff0c;将这些神经元去除后可以表现出同样的模型表达能力&#xff0c;这种情况被称为过参数化&#xff0c;而对应的技术则被称为模…

摸鱼大数据——select查询7-10

7、union联合查询 union: 对重复数据会去重 union all: 对重复数据不会去重 ​ 注意&#xff1a;union和union all中两边的字段&#xff08;类型、顺序&#xff09;要对应上 示例: use day08; select * from students; ​ select id,name from students where id in (95001,9…

C++面试题其二

19. STL中unordered_map和map的区别 unordered_map 和 map 都是C标准库中的关联容器&#xff0c;但它们在实现和性能方面有显著区别&#xff1a; 底层实现&#xff1a;map 是基于红黑树实现的有序关联容器&#xff0c;而 unordered_map 是基于哈希表实现的无序关联容器。元素…

make xxxx_defconfig 分析

文章目录 执行依赖scripts_basic执行依赖outputmakefile实现%config make rpi_3_32b_defconfig V1&#xff1a; make -f ./scripts/Makefile.build objscripts/basiccc -Wp,-MD,scripts/basic/.fixdep.d -Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -stdgnu11 …

opencv视频抽帧保存图片

opencv视频抽帧保存图片video2pic 文章目录 opencv视频抽帧保存图片video2picopencv视频按帧率抽帧opencv视频按帧数抽帧 opencv视频按帧率抽帧 import cv2 import os video_pathC:/Users/Desktop/video/1.mp4 nameos.path.basename(video_path).split(".")[0] outp…

Vue3实战笔记(54)—揭秘Vue3实战:1分钟学会mitt,轻松玩转跨组件通讯

文章目录 前言一、自定义的 useMitt二、在组件中使用 useMitt&#xff1a;三、确保 useMitt 的单例性总结 前言 在 Vue3 中&#xff0c;由于官方移除了on\off 和 $once 实例方法&#xff0c;导致原先基于 Vue2 的事件总线&#xff08;EventBus&#xff09;模式不再适用。因此&…

【QT】qcombox的信号使用小细节,activated(int)和currentIndexChanged(int)

activated(int)和currentIndexChanged(int)这两个信号在QComboBox中都有传递当前索引的功能&#xff0c;但它们触发的条件有所不同&#xff0c;导致它们适用于不同的场景。以下是它们之间的主要区别&#xff1a; 1. activated(int) 触发条件&#xff1a;当用户主动选择了一个…

Python中的 Lambda 函数

大家好&#xff0c;在 Python 编程的世界里&#xff0c;有一种功能强大却不常被提及的工具&#xff0c;它就是 Lambda 函数。这种匿名函数在 Python 中拥有着令人惊叹的灵活性和简洁性&#xff0c;却常常被许多开发者忽视或者只是将其当作一种附加功能。Lambda 函数的引入&…

Java18+ springboot+mysql +Thymeleaf 技术架构开发的全套同城服务家政上门系统源码(APP用户端+APP服务端+PC管理端)

Java springbootmysql Thymeleaf 技术架构开发的全套同城服务家政上门系统源码&#xff08;APP用户端APP服务端PC管理端&#xff09; 家政上门预约系统&#xff1a;该系统综合运用springboot、java1.8、vue移动支付、微信授权登录等技术&#xff0c;由用户小程序、站长小程序、…

C#面:.Net中会存在内存泄漏吗,请简单描述

在C# .NET中&#xff0c;内存泄漏是可能存在的。内存泄漏指的是在程序运行过程中&#xff0c;分配的内存空间没有被正确释放&#xff0c;导致这些内存空间无法再被其他部分使用&#xff0c;从而造成内存的浪费。 在C# .NET中&#xff0c;垃圾回收器&#xff08;Garbage Collec…

亚马逊云科技峰会盛大举行 | 光环新网携光环云数据以高性能智算服务助力企业创新发展

2024年5月29日&#xff0c;云计算行业的年度盛典”2024亚马逊云科技中国峰会”在上海世博中心再次盛大启幕。作为全球领先的云计算服务提供商&#xff0c;亚马逊云科技峰会聚焦前沿科技&#xff0c;与来自不同行业、不同科技领域的优秀企业和用户共同探索AI时代的云端创新发展。…

QProcess类实现将子进程的窗口嵌入的主进程中

在主进程中创建子进程,子进程也是通过qt新建的qwidget窗口的应用程序. bool CncOpWindows::LoadVisionMeasureApp() {QString cmd QCoreApplication::applicationDirPath();int iCamAppType 0;switch (iCamAppType){case 0:cmd "/ImageGrab.exe";//子程序执行文件地…

Java知识大纲

一、基础 (一) Java的应用范围和相关组件 (二)搭建开发环境 (三)类文件定义 (四)编写第一个程序 (五)编译和运行 (六)变量定义和使用 (七)字符串的定义和使用 (八)变量类型转换 (九)静态变量 (十)基本运算、逻辑运算、位运算 (十一)流程结构(条件&#xff0c;循环&a…

华为官网的自助申诉

代码&#xff1a;如下 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>Document</title> …

MatLab命令行常用命令记录

文章目录 MatLab常用命令行MatLab常用按键标点说明 MatLab常用命令行 Matlab常用命令用来管理目录、命令、函数、变量、工作区、文件及窗口。常用命令如下表 命令作用cd显示或改变当前文件夹load加载指定文件的变量dir显示当前文件夹或指定目录下的文件diary日志文件命令type…

Facebook会话过期是什么情况?如何解决?

如果你点开这篇文章&#xff0c;可能你曾经遇到过Facebook会话过期的错误。无论你是在抓取Facebook数据还是只是浏览动态&#xff0c;看到这个错误消息都会让人很不爽。但别担心&#xff0c;我们将会分享解决Facebook会话过期错误的最佳方法&#xff0c;这样你就可以迅速修复问…

TemuTHunt使用简单介绍

数据列表 详情 列表及详情 数据监控 ------------------------------------------------华丽的分割线------------------------------------ 数据列表 商品详情 更多功能及分析报表 是不是很好用。

算法学习笔记(7.3)-贪心算法(最大切分乘问题)

目录 ##问题描述 ##问题思考 ##贪心策略确定 ##代码实现 ##时间复杂度 ##正确性验证 ##问题描述 给定一个正整数 &#x1d45b; &#xff0c;将其切分为至少两个正整数的和&#xff0c;求切分后所有整数的乘积最大是多少 ##问题思考 假设我们将 &#x1d45b; 切分为 &…