用Html和js和layui写一个简单猜拳小游戏

news2025/4/11 8:33:25

      简单学习技术,写了一个小游戏,用html和js写一个简单的小游戏。玩家点击按钮出拳,玩家胜利结果显示绿色,玩家输了结果显示红色,平局结果显示蓝色

页面效果:

代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>石头、剪刀、布 小游戏</title>
<link rel="stylesheet" href="../layui/css/layui.css" media="all">
<style>
/* 添加样式以中心布局两个游戏并增加一些间距 */
.game-container {
  text-align: center;
  margin: 5% auto;
}

.game-container > button {
  margin: 0 5px; /* 添加按钮间距 */
}

#result, #message {
  margin: 20px 0;
}

</style>
</head>
<body>
  <div class="game-container">
    <h1>石头、剪刀、布 小游戏</h1>
    <div id="choices">
      <button onclick="play('石头')" class="layui-btn layui-btn-primary layui-border-blue">石头</button>
      <button onclick="play('布')" class="layui-btn layui-btn-primary layui-border-orange">布</button>
      <button onclick="play('剪刀')" class="layui-btn layui-btn-primary layui-border-green">剪刀</button>
    </div>
    <div id="result"></div>
  </div>
  

  <script src="./gamejs/game.js"></script>
</body>
</html>
html解析:

1. `<!DOCTYPE html>`: 声明文档类型为 HTML5,告诉浏览器使用 HTML5 规范来解析页面。

2. `<html lang="en">`: HTML 标签,指定页面语言为英语。

3. `<head>`: 页面头部,包含了文档的元信息和引用的外部资源。

  • `<meta charset="UTF-8">`: 声明文档使用 UTF-8 字符集编码。
  • `<meta name="viewport" content="width=device-width, initial-scale=1.0">`: 设置移动设备的视口大小,并且使用 1:1 的比例放大。
  • `<title>石头、剪刀、布 小游戏</title>`: 设置页面标题为“石头、剪刀、布 小游戏”。
  • `<link rel="stylesheet" href="../layui/css/layui.css" media="all">`: 引入外部样式表 layui.css,用于页面样式。

4. `<style>`: 内联样式,用于定义页面元素样式。

  • `.game-container`: 设置游戏容器样式为居中布局,并增加一些间距。
  • `.game-container > button`: 设置游戏按钮之间的间距。
  •  `#result, #message`: 设置结果和信息显示区域的样式。

5. `<body>`: 页面主体内容。

  • `<div class="game-container">`: 游戏容器,包含了游戏标题、游戏选项按钮和结果显示区域。
  • `<h1>石头、剪刀、布 小游戏</h1>`: 游戏标题。
  • `<div id="choices">`: 游戏选项按钮容器。
  • `<button οnclick="play('石头')" class="layui-btn layui-btn-primary layui-border-blue">石头</button>`: 选择石头的按钮,点击后执行 play 函数。
  • `<button οnclick="play('布')" class="layui-btn layui-btn-primary layui-border-orange">布</button>`: 选择布的按钮,点击后执行 play 函数。
  • `<button οnclick="play('剪刀')" class="layui-btn layui-btn-primary layui-border-green">剪刀</button>`: 选择剪刀的按钮,点击后执行 play 函数。
  •  `<div id="result"></div>`: 结果显示区域,用于显示游戏结果。

6. `<script src="./gamejs/game.js"></script>`: 引入外部 JavaScript 文件 game.js,用于实现游戏逻辑。

Js实现(game.js):

function play(playerChoice) {
    var choices = ['石头', '布', '剪刀']; // 可选择的选项
    var computerChoice = choices[Math.floor(Math.random() * 3)]; // 电脑随机选择
    var result;

    if (playerChoice === computerChoice) {
        result = '平手!';
		 document.getElementById('result').style.color = "blue"; // 玩家输时文字变成红色
    } else if (
        (playerChoice === '石头' && computerChoice === '剪刀') ||
        (playerChoice === '剪刀' && computerChoice === '布') ||
        (playerChoice === '布' && computerChoice === '石头')) {
        result = '你赢了!';
        document.getElementById('result').style.color = "green"; // 玩家赢时文字变成绿色
    } else {
        result = '你输了!';
        document.getElementById('result').style.color = "red"; // 玩家输时文字变成红色
    }

    // 显示结果
    document.getElementById('result').innerHTML = `
		<div  style="margin-left: 0%;margin-top: 1%;">
			<span style="font-size:20px; font-style:normal;font-family:'宋体';color:#000000">你的选择: ${playerChoice} </span>
			<br>
			<span style="font-size:20px; font-style:normal;font-family:'宋体';color:#000000">电脑的选择: ${computerChoice} </span>
			<br>
			<span style="font-size:20px; font-style:normal;font-family:'宋体';">结果:${result}  </span>
		</div>
    `;
}
js解析:
  1. function play(playerChoice) { ... }: 定义了一个名为 play 的函数,接受玩家选择的选项作为参数。

  2. var choices = ['石头', '布', '剪刀'];: 创建一个包含可选择的选项的数组。

  3. var computerChoice = choices[Math.floor(Math.random() * 3)];: 通过随机数生成电脑的选择,即从 choices 数组中随机选择一个选项作为电脑的选择。

  4. var result;: 声明一个变量 result 用于存储游戏结果。

  5. 根据玩家和电脑的选择进行判断,更新结果和结果展示区域的文字颜色:

    • 如果玩家和电脑选择相同,将结果设为平手,并将结果文字颜色设置为蓝色。
    • 如果玩家胜利,将结果设为“你赢了!”,并将结果文字颜色设置为绿色。
    • 如果玩家失败,将结果设为“你输了!”,并将结果文字颜色设置为红色。
  6. 使用 document.getElementById('result').innerHTML 更新结果展示区域的内容,根据游戏结果和玩家与电脑的选择,动态生成展示的文本内容,并设置对应的字体样式和颜色。

目录结构:

效果:

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

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

相关文章

【C语言】数组

㊙️小明博客主页&#xff1a;➡️ 敲键盘的小明 ㊙️ ✅关注小明了解更多知识☝️ 文章目录 前言一、什么是数组&#xff1f;二、一维数组的创建和初始化2.1 一维数组的创建2.2 一维数组的初始化2.3 一维数组的使用3.3 一维数组的存储 三、二维数组的创建和初始化3.1 二维数组…

深度学习 | DRNN、BRNN、LSTM、GRU

1、深度循环神经网络 1.1、基本思想 能捕捉数据中更复杂模式并更好地处理长期依赖关系。 深度分层模型比浅层模型更有效率。 Deep RNN比传统RNN表征能力更强。 那么该如何引入深层结构呢&#xff1f; 传统的RNN在每个时间步的迭代都可以分为三个部分&#xff1a; 1.2、三种深层…

虚函数的讲解

文章目录 虚函数的声明与定义代码演示基类Person派生类Man派生类Woman 测试代码动态绑定静态绑定访问私有虚函数总结一下通过成员函数指针调用函数的方式 虚函数的声明与定义 虚函数存在于C的类、结构体等中&#xff0c;不能存在于全局函数中&#xff0c;只能作为成员函数存在…

❀My小学习之排序算法❀

目录 排序算法&#xff08;Sorting algorithm&#xff09;:) 一、定义 二、分类 三、评价标准 排序算法&#xff08;Sorting algorithm&#xff09;:) 一、定义 所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或递减的…

【网络技术】【Kali Linux】Wireshark嗅探(一)ping和ICMP

一、实验目的 本次实验使用wireshark流量分析工具进行网络嗅探&#xff0c;旨在了解ping命令的原理及过程。 二、网络环境设置 本系列实验均使用虚拟机完成&#xff0c;主机操作系统为Windows 11&#xff0c;虚拟化平台选择Oracle VM VirtualBox&#xff0c;组网模式选择“N…

c语言的数组

#在这一篇中介绍三个数组 1.一维数组 2.字符数组 3.二维数组 1.一维数组 数组的定义&#xff1a; 类型 数组名[元素个数] ----这个为数组的定义 #include <stdio.h> int main() {int a[4];//在这里&#xff0c;我定义了一个只能装载4个整数类型元素的数组char b[5…

WPF+Halcon 培训项目实战(1-5):Halcon安装,图像处理,Halcon简单模板匹配

文章目录 前言相关链接项目专栏我个人对就业市场的评价Halcon安装实战1-4&#xff1a;Halcon基础实战5&#xff1a;模板匹配[形状匹配]实战代码 结尾 前言 为了更好地去学习WPFHalcon&#xff0c;我决定去报个班学一下。原因无非是想换个工作。相关的教学视频来源于下方的Up主…

IDEA 开发中常用的快捷键

目录 Ctrl 的快捷键 Alt 的快捷键 Shift 的快捷键 Ctrl Alt 的快捷键 Ctrl Shift 的快捷键 其他的快捷键 Ctrl 的快捷键 Ctrl F 在当前文件进行文本查找 &#xff08;必备&#xff09; Ctrl R 在当前文件进行文本替换 &#xff08;必备&#xff09; Ctrl Z 撤…

excel 函数技巧

1&#xff1a;模糊查询 LOOKUP(1,0/FIND(F1062,Sheet1!C$2:Sheet1!C$9135),Sheet1!B$2:Sheet1!B$9135) 函数含义&#xff1a;寻找F列1062行和sheet1中的C2行到C9135行进行模糊查询&#xff0c;返回该行对应的B2行到B9135行的结果。未查到返回结果0 函数公式&#xff1a; LO…

基于Mbed Studio环境下开发STM32

基于Mbed Studio环境下开发STM32 &#x1f4cd;Mbed官网&#xff1a;https://os.mbed.com/ ✨mbed OS是ARM出的一个免费开源的&#xff0c;面向物联网的操作系统。提供了一个定义良好的API来开发C应用程序&#xff1b;集成度很高&#xff0c;类似Arduino&#xff0c;目前并不兼…

Flink on K8S生产集群使用StreamPark管理

&#xff08;一&#xff09;直接部署&#xff08;手动测试用&#xff0c;不推荐&#xff09; Flink on Native Kubernetes 目前支持 Application 模式和 Session 模式&#xff0c;两者对比 Application 模式部署规避了 Session 模式的资源隔离问题、以及客户端资源消耗问题&am…

Linux操作系统基础:从入门到实践

目录 学习目标&#xff1a; 学习内容&#xff1a; 学习时间&#xff1a; 学习产出&#xff1a; Linux操作系统概述 Linux操作系统的定义和主要特点 Linux操作系统与其他操作系统的比较 Linux操作系统在不同领域的应用案例 Linux操作系统的历史 Linux操作系统的起源和发展过程 L…

浅谈WPF之ToolTip工具提示

在日常应用中&#xff0c;当鼠标放置在某些控件上时&#xff0c;都会有相应的信息提示&#xff0c;从软件易用性上来说&#xff0c;这是一个非常友好的功能设计。那在WPF中&#xff0c;如何进行控件信息提示呢&#xff1f;这就是本文需要介绍的ToolTip【工具提示】内容&#xf…

生产系统稳定上线600天!中国联通CUDB for OceanBase的开源共建和规模化应用

中国联通软件研究院架构部平台承载了上千应用的数据库需求&#xff0c;并且现存大量数据库使用过程缺少规范、缺少监控&#xff0c;同时还存在着数据库核心技术相关风险。为了实现核心技术自主可控&#xff0c;及时为用户解决线上问题、满足用户的功能需求&#xff0c;提供物美…

procise纯PL流程点灯记录

procise纯PL流程点灯记录 一、概述 此篇记录使用procise工具构造JFMQL15T 纯PL工程&#xff0c;显示PL_LED闪烁&#xff1b; 硬件说明如下&#xff1a; 时钟引脚 Pl_CLK: U2 ,IO_L14P_T2_SRCC_34 PL_LED1 : E2, IO_L17P_T2_AD5P_35 PL_LED2: D6, IO_L2N_T0_AD8N_35 PL_LED3 :…

C++11 lambda函数和包装器

目录 前言 一.lambda的引入 二、lambda函数的使用 1.一般使用 2.引用 三、包装器 1.包装普通对象 2.包装类成员对象 3.bind 前言 学习过python的同学应该对lambda函数不陌生&#xff0c;这是一个匿名函数&#xff0c;不需要写函数的名字。在不会多地方调用某个简单函数…

C# vs报错 id为XX的进程当前未运行

报错原因&#xff1a;虚拟目录端口被占用 解决方法&#xff1a;重新配置新的目录端口就行 1、选择项目属性 2、更改端口号&#xff0c;点击创建虚拟目录 3、重新生成项目

C# WPF上位机开发(MVVM模式开发)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 学习过vue的同学都知道mvvm这个名词。从字面上理解&#xff0c;可能有点拗口&#xff0c;但是我们可以去理解一下它的优点是什么。mvc相信大家都明…

InDesign插件-常规功能开发-添加参考线-js脚本开发-ID插件

文章目录 1.脚本执行概述2.InDesign 对象模型3.源码解析4.界面及结果5.总结 1.脚本执行概述 “脚本”面板和“脚本标签”面板概述&#xff0c;InDesign 包含两个用于脚本的面板&#xff1a;“脚本”面板和“脚本标签”面板。在“脚本”面板中可以运行脚本而不必离开 InDesign。…

Python sanic框架钉钉和第三方打卡机实现

同样还是需要开通钉钉应用这里就不错多说了 第一步:梳理逻辑流程 前提&#xff1a;打卡的机器是使用postgres数据库&#xff0c;由于因为某些原因&#xff0c;钉钉userId 我已经提前获取到了存放到数据库里。 1.用户打卡成功后&#xff0c;我们应该监听数据库进行查询&#xf…