JavaScript石头剪刀布游戏:计分与逻辑优化教程

javascript石头剪刀布游戏:计分与逻辑优化教程

本文旨在指导开发者使用 JavaScript 实现一个简单的石头剪刀布游戏,并重点解决计分问题和优化游戏逻辑。我们将通过示例代码,详细讲解如何正确地跟踪玩家和电脑的得分,并提供一种更简洁的方式来判断胜负,提升代码的可读性和效率。

游戏初始化与用户输入

首先,我们需要定义游戏所需的变量,包括可选的选项(石头、剪刀、布),以及玩家和电脑的初始得分。 玩家的选择可以通过 prompt() 函数获取,并使用 .toLowerCase() 方法将其转换为小写,方便后续比较。为了确保用户输入有效,可以使用循环进行验证。

const choices = ['rock', 'paper', 'scissors'];let playerScore = 0;let computerScore = 0;function getPlayerChoice() {  let choice;  while(true) {    choice = prompt('Pick Rock, Paper, or Scissors?').toLowerCase();    if(choices.includes(choice)) return choice;    else console.log('Invalid choice, please try again');  }}function getComputerChoice() {  return choices[Math.floor(Math.random() * choices.length)];}

注意: 确保玩家的选择在 choices 数组中,否则提示用户重新输入。

胜负判断与计分

游戏的核心在于判断胜负。传统的 if…else if…else 结构虽然可行,但当选项增多时会变得冗长且难以维护。一种更简洁的方法是利用数组的索引,结合取模运算,将石头剪刀布的循环关系表示出来。

立即学习“Java免费学习笔记(深入)”;

function playRound(playerSelection, computerSelection) {  if(playerSelection===computerSelection) {    return 'Draw'  }  else if((((choices.indexOf(playerSelection) - choices.indexOf(computerSelection)) + 3) % 3)===1) {    playerScore++    return `You win! ${playerSelection} beats ${computerSelection}`  }  else {    computerScore++    return `You lose! ${computerSelection} beats ${playerSelection}`  }}

这段代码的核心在于:

choices.indexOf(playerSelection) 和 choices.indexOf(computerSelection) 分别获取玩家和电脑选择在数组中的索引。((index1 – index2) + 3) % 3 利用取模运算,将循环关系转换为数值关系。如果结果为 1,则玩家获胜。

游戏流程与结果展示

game() 函数负责控制游戏的整体流程,循环进行若干轮游戏,并在结束后显示最终结果。

function game() {  for (let i = 1; i  computerScore) {    return 'You beat the computer! You are a genius'  } else if (playerScore < computerScore) {    return `You got beat by the computer. Practice your throws!`  } else {    return `You tied with the computer!`  }}console.log(game())

总结

通过上述步骤,我们实现了一个功能完善的石头剪刀布游戏。关键在于理解如何利用数组索引和取模运算,简化胜负判断的逻辑。这种方法不仅代码更简洁,而且更易于扩展,例如增加新的选项。在实际开发中,应注重代码的可读性和可维护性,选择最适合项目需求的方案。

以上就是JavaScript石头剪刀布游戏:计分与逻辑优化教程的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1516616.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
JavaScript 猜拳游戏:完善计分与逻辑优化教程
上一篇 2025年12月20日 10:10:51
如何在不刷新整个页面的情况下,将表单提交到指定DIV中
下一篇 2025年12月20日 10:11:04

相关推荐

  • 为你总结关于电脑常见故障的解决方法

    为你总结关于电脑常见故障的解决方法为你总结关于电脑常见故障的解决方法为你总结关于电脑常见故障的解决方法为你总结关于电脑常见故障的解决方法

    电脑如今已成为我们日常生活中不可或缺的工具,无论是工作、学习还是娱乐都离不开它。当电脑出现一些小问题时,其实很多情况并不需要送修,自己动手就能轻松应对。下面,黑鲨小编为大家整理了几种常见的电脑故障及其处理方法,一起来看看吧! 在排查电脑故障时,建议从核心硬件入手,逐一检查。 1、CPU 打开机箱后,…

    2026年10月6日 • 用户投稿
    100
  • 使用 JOptionPane 在 Java 中显示保留两位小数的浮点数

    使用 JOptionPane 在 Java 中显示保留两位小数的浮点数使用 JOptionPane 在 Java 中显示保留两位小数的浮点数使用 JOptionPane 在 Java 中显示保留两位小数的浮点数使用 JOptionPane 在 Java 中显示保留两位小数的浮点数

    本文介绍了如何在 Java 中使用 JOptionPane 显示浮点数,并将其格式化为保留两位小数。我们将探讨使用 DecimalFormat 类来实现这一目标,并提供详细的代码示例和注意事项,帮助读者更好地理解和应用。 在 Java 中,当需要以特定的格式显示浮点数时,可以使用 DecimalFo…

    2026年10月6日 • 用户投稿
    000
  • 如何解决华硕笔记本Win7系统音频服务未启动问题

    如何解决华硕笔记本Win7系统音频服务未启动问题如何解决华硕笔记本Win7系统音频服务未启动问题如何解决华硕笔记本Win7系统音频服务未启动问题如何解决华硕笔记本Win7系统音频服务未启动问题

    最近有位朋友遇到了华硕笔记本电脑音频服务无法启动的问题,导致平时无法播放音乐或视频声音,给日常使用带来了诸多不便。那么该如何应对呢?接下来就跟随步骤一起操作,轻松解决该问题。 华硕笔记本Win7系统音频服务未启动的解决方法/步骤: 方法一 首先打开运行Windows 7系统的电脑,点击右下角任务栏的…

    2026年10月6日 • 用户投稿
    600
  • 如何解决PHP应用与MailerLite邮件营销服务集成难题,使用Composer和官方SDK可以轻松实现

    如何解决PHP应用与MailerLite邮件营销服务集成难题,使用Composer和官方SDK可以轻松实现如何解决PHP应用与MailerLite邮件营销服务集成难题,使用Composer和官方SDK可以轻松实现如何解决PHP应用与MailerLite邮件营销服务集成难题,使用Composer和官方SDK可以轻松实现如何解决PHP应用与MailerLite邮件营销服务集成难题,使用Composer和官方SDK可以轻松实现

    可以通过一下地址学习composer:学习地址 嘿,各位PHP开发者们!在日常工作中,我们经常会遇到这样的场景:需要将自己的Web应用与第三方服务无缝对接,比如邮件营销平台。想象一下,每当有新用户在你的网站上注册时,你都希望他们能自动加入MailerLite的邮件列表,以便后续发送欢迎邮件或推广活动…

    2026年10月6日 • 用户投稿
    000
  • Java 中使用 JOptionPane 显示保留两位小数的浮点数

    Java 中使用 JOptionPane 显示保留两位小数的浮点数Java 中使用 JOptionPane 显示保留两位小数的浮点数Java 中使用 JOptionPane 显示保留两位小数的浮点数Java 中使用 JOptionPane 显示保留两位小数的浮点数

    本文将介绍如何在 Java 中使用 JOptionPane 显示浮点数,并将其精确到小数点后两位。我们将探讨使用 DecimalFormat 类进行格式化,并提供清晰的代码示例,帮助初学者掌握这种常用的数据展示技巧。 使用 DecimalFormat 格式化浮点数 DecimalFormat 类是 …

    2026年10月6日 • 用户投稿
    100
  • 如何解决苹果电脑软件闪退?更新软件与检查系统兼容性

    如何解决苹果电脑软件闪退?更新软件与检查系统兼容性如何解决苹果电脑软件闪退?更新软件与检查系统兼容性如何解决苹果电脑软件闪退?更新软件与检查系统兼容性如何解决苹果电脑软件闪退?更新软件与检查系统兼容性

    首先更新软件至最新版本,通过App Store或官网升级;其次检查软件与macOS Sonoma的兼容性,确认系统版本符合要求;最后尝试以安全模式启动,排除第三方插件干扰,若安全模式下正常则问题源于外部加载项冲突。 如果您尝试在苹果电脑上运行某个软件,但该软件频繁闪退或无法正常启动,则可能是由于软件…

    2026年10月6日 • 用户投稿
    100
  • 文心一言生成的图片可以商用吗 文心一言图片商用权限说明

    文心一言生成的图片可以商用吗 文心一言图片商用权限说明文心一言生成的图片可以商用吗 文心一言图片商用权限说明文心一言生成的图片可以商用吗 文心一言图片商用权限说明文心一言生成的图片可以商用吗 文心一言图片商用权限说明

    文心一言生成的图片不适合直接用于商业用途。1) 版权归百度公司,需许可才可商用。2) 个人学习或非盈利展示可使用,但需注明来源。3) 如需商用,可联系百度获取许可、修改图片或寻找替代资源。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 文心…

    2026年10月6日 • 用户投稿
    200
  • 告别繁琐手动同步:如何使用Composer轻松集成MailChimp与Magento,提升营销效率

    告别繁琐手动同步:如何使用Composer轻松集成MailChimp与Magento,提升营销效率告别繁琐手动同步:如何使用Composer轻松集成MailChimp与Magento,提升营销效率告别繁琐手动同步:如何使用Composer轻松集成MailChimp与Magento,提升营销效率告别繁琐手动同步:如何使用Composer轻松集成MailChimp与Magento,提升营销效率

    可以通过一下地址学习composer:学习地址 作为电商运营者或开发者,你是否曾为 Magento 商店的数据与 MailChimp 营销平台之间的数据同步问题而头疼不已?想象一下这样的场景:你的 Magento 商店每天都有新用户注册、有订单产生,甚至有用户将商品加入购物车后却迟迟未下单。这些宝贵…

    2026年10月6日 • 用户投稿
    100
  • Spring Boot 应用中安全获取资源文件:解决JAR打包后的兼容性问题

    Spring Boot 应用中安全获取资源文件:解决JAR打包后的兼容性问题Spring Boot 应用中安全获取资源文件:解决JAR打包后的兼容性问题Spring Boot 应用中安全获取资源文件:解决JAR打包后的兼容性问题Spring Boot 应用中安全获取资源文件:解决JAR打包后的兼容性问题

    本文旨在解决Spring Boot应用在打包成JAR文件后,通过传统文件路径方式(如Paths.get)无法正确加载resources目录下资源文件的问题。我们将深入探讨该问题的根源,并提供一种基于Spring Framework核心库ClassPathResource的健壮解决方案,确保资源文件在…

    2026年10月6日 • 用户投稿
    200
  • Java构造器重载与this()调用中的计数陷阱解析

    Java构造器重载与this()调用中的计数陷阱解析Java构造器重载与this()调用中的计数陷阱解析Java构造器重载与this()调用中的计数陷阱解析Java构造器重载与this()调用中的计数陷阱解析

    本文深入探讨了Java中构造器重载与this()关键字的使用,特别关注在构造器链式调用中维护静态变量(如对象计数器)时可能遇到的常见陷阱。通过分析一个具体的代码示例,文章揭示了因重复递增静态计数器导致的错误,并提供了正确的实现方式,旨在帮助开发者理解构造器调用机制,避免在复杂初始化逻辑中引入不易察觉…

    2026年10月6日 • 用户投稿
    100
  • 第33周硬派越野车型周销量TOP10:坦克300仅排第三

    硬派越野车型市场虽整体规模有限,但竞争格局却愈发胶着。依据权威机构发布的2025年第33周(8月11日至8月17日)终端销量数据,当前国内销量排名前十的硬派越野车型如下: 第一名,方程豹豹5,官方指导价23.98万-32.98万元,周销量达0.11万辆 ☞☞☞AI 智能聊天, 问答助手, AI 智能…

    2026年10月6日
    000
  • 理解Java包机制:解决类引用中的“无法解析符号”错误

    理解Java包机制:解决类引用中的“无法解析符号”错误理解Java包机制:解决类引用中的“无法解析符号”错误理解Java包机制:解决类引用中的“无法解析符号”错误理解Java包机制:解决类引用中的“无法解析符号”错误

    本文深入探讨Java中常见的“无法解析符号”错误,尤其是在处理跨包类引用时。核心问题源于默认包与命名包之间的交互限制。教程将详细解释Java包的工作原理,并通过具体代码示例展示,当主类(Main)位于默认包而其他类位于命名包时,如何导致引用失败。最终,提供并强调将所有类(包括主类)放置于命名包内的标…

    2026年10月6日 • 用户投稿
    000
  • 三分钟搞定 DeepSeek 接入 Word:智能文档生成全流程

    三分钟搞定 DeepSeek 接入 Word:智能文档生成全流程三分钟搞定 DeepSeek 接入 Word:智能文档生成全流程三分钟搞定 DeepSeek 接入 Word:智能文档生成全流程三分钟搞定 DeepSeek 接入 Word:智能文档生成全流程

    deepseek 接入 word 并实现智能文档生成的步骤包括:1. 准备好 word 文档并申请 deepseek api 密钥;2. 下载并安装 deepseek 插件,授权 api 密钥;3. 在 word 中输入主题,利用 deepseek 生成文档内容。 ☞☞☞AI 智能聊天, 问答助手,…

    2026年10月6日 • 用户投稿
    100
  • composer如何安装一个Git仓库的特定commit

    composer如何安装一个Git仓库的特定commitcomposer如何安装一个Git仓库的特定commitcomposer如何安装一个Git仓库的特定commitcomposer如何安装一个Git仓库的特定commit

    答案:通过在composer.json中添加VCS仓库并使用”dev-分支#commit哈希”格式锁定版本,可安装指定commit。具体步骤为:1. 在repositories中声明Git仓库;2. require中用dev-master#abc123…形式指定c…

    2026年10月6日 • 用户投稿
    100
  • Java构造器重载中的静态变量计数:避免重复初始化

    Java构造器重载中的静态变量计数:避免重复初始化Java构造器重载中的静态变量计数:避免重复初始化Java构造器重载中的静态变量计数:避免重复初始化Java构造器重载中的静态变量计数:避免重复初始化

    本文深入探讨了Java中构造器重载与静态变量计数时可能遇到的常见陷阱。通过分析一个具体的代码示例,揭示了由于构造器链式调用(this(…))导致静态计数器重复递增的问题。文章详细阐述了问题根源,并提供了正确的解决方案,强调了在构造器中管理共享静态资源时应遵循的最佳实践,以确保数据的一致性…

    2026年10月6日 • 用户投稿
    000
  • 重装系统win10 没声音怎么办?win10重装后没有声音解决方法

    重装系统win10 没声音怎么办?win10重装后没有声音解决方法重装系统win10 没声音怎么办?win10重装后没有声音解决方法重装系统win10 没声音怎么办?win10重装后没有声音解决方法重装系统win10 没声音怎么办?win10重装后没有声音解决方法

    有用户反映在重装windows 10系统后出现没有声音的问题,无论是播放音乐还是视频都听不到任何音频输出,严重影响日常使用,甚至怀疑是硬件损坏。先别慌,这并不一定意味着电脑出了故障。通常情况下,重装系统后无声问题多与声卡驱动未正确安装或系统设置不当有关。若驱动正常却仍无声音,则可能是系统配置出现了偏…

    2026年10月6日 • 用户投稿
    100
  • 为什么苹果电脑无法识别外接硬盘?检查格式与端口连接

    为什么苹果电脑无法识别外接硬盘?检查格式与端口连接为什么苹果电脑无法识别外接硬盘?检查格式与端口连接为什么苹果电脑无法识别外接硬盘?检查格式与端口连接为什么苹果电脑无法识别外接硬盘?检查格式与端口连接

    首先检查外接硬盘的文件系统是否兼容,若为NTFS则需安装第三方工具或格式化为exFAT/APFS;再排查物理连接,更换数据线、尝试不同端口或供电方式,确认硬盘在其他设备上能否识别,以排除硬件故障。 如果您尝试将外接硬盘连接到苹果电脑,但设备无法被识别或读取,这可能是由文件系统格式不兼容或物理连接问题…

    2026年10月6日 • 用户投稿
    100
  • MAC的备忘录怎么同步到iPhone_iCloud备忘录在多设备间同步设置

    1、确保Mac与iPhone登录同一Apple ID并开启iCloud备忘录同步;2、将默认存储账户设为iCloud;3、检查网络连接并手动刷新同步;4、重启iCloud备忘录服务以修复同步异常。 如果您在使用多台苹果设备时发现备忘录内容无法实时更新,可能是iCloud同步设置未正确启用。以下是实现…

    2026年10月6日
    000
  • 如何优化虚拟内存设置提升系统性能?

    虚拟内存是硬盘模拟内存的技术,用于缓解RAM不足的问题。通过任务管理器观察内存占用,若常接近100%则需调整。Windows默认自动管理,高级用户可手动设置:建议初始大小为物理内存的1.5-2倍,最大为2-3倍,设置后需重启生效。过大导致频繁读写拖慢系统,过小易引发程序崩溃。即使使用SSD也应启用虚…

    2026年10月6日
    200
  • iPad分屏功能如何开启_iPad分屏功能开启详细步骤

    iPad分屏功能如何开启_iPad分屏功能开启详细步骤iPad分屏功能如何开启_iPad分屏功能开启详细步骤iPad分屏功能如何开启_iPad分屏功能开启详细步骤iPad分屏功能如何开启_iPad分屏功能开启详细步骤

    iPad分屏功能通过Slide Over和Split View实现多任务处理,Slide Over以浮动小窗快速切换应用,适用于查看消息或日程;Split View则将屏幕一分为二,支持并排使用两个应用,适合写文档、看视频等场景。开启方式包括从Dock拖拽应用至边缘或顶部下拉选择应用。用户可拖动分割…

    2026年10月6日 • 用户投稿
    200

发表回复

登录后才能评论
关注微信