前端js--剪刀石头布

效果图

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

代码

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><linkrel="stylesheet"href="https://use.fontawesome.com/releases/v5.11.2/css/all.css"/><link rel="stylesheet" href="style.css" /><title>石头剪刀布</title></head><body><div class="container"><header class="header"><h1>石头剪刀布</h1><button id="restart" class="restart-btn">重新开始</button><div id="score" class="score"><p>玩家:0</p><p>电脑:0</p></div></header><h2>请做出你的选择</h2><div class="choices"><i id="rock" class="choice fas fa-hand-rock fa-10x"></i><i id="paper" class="choice fas fa-hand-paper fa-10x"></i><i id="scissors" class="choice fas fa-hand-scissors fa-10x"></i></div></div><!-- modal --><div class="modal"><div id="result" class="modal-content"></div></div><script src="main.js"></script></body>
</html>
:root {--primary-color: #003699;--dark-color: #333333;--light-color: #f4f4f4;--lose-color: #dc3545;--win-color: #28a745;--modal-duration: 1s;
}* {box-sizing: border-box;padding: 0;margin: 0;
}body {font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;line-height: 1.6;background-color: #fff;color: #333;
}.container {max-width: 1100px;margin: auto;overflow: hidden;padding: 0 2rem;text-align: center;
}.restart-btn {display: none;background: var(--light-color);color: #333;padding: 0.4rem 1.3rem;font-size: 1rem;cursor: pointer;outline: none;border: none;margin-bottom: 1rem;
}.restart-btn:hover {background: var(--primary-color);color: #fff;
}.header {text-align: center;margin: 1rem 0;
}.header h1 {margin-bottom: 1rem;
}.score {display: grid;grid-template-columns: repeat(2, 1fr);font-size: 1.2rem;color: #fff;
}.score p:first-child {background: var(--primary-color);
}.score p:last-child {background: var(--dark-color);
}.choices {display: grid;grid-template-columns: repeat(3, 1fr);grid-gap: 2rem;margin-top: 3rem;text-align: center;
}
.choice {cursor: pointer;
}.choice:hover {color: var(--primary-color);
}.text-win {color: var(--win-color);
}.text-lose {color: var(--lose-color);
}
/* modal */
.modal {display: none;position: fixed;z-index: 1;left: 0;top: 0;height: 100%;width: 100%;overflow: auto;background: rgba(0, 0, 0, 0.5);animation-name: modalopen;animation-duration: var(--modal-duration);
}
.modal-content {background-color: #fff;text-align: center;margin: 10% auto;width: 350px;border-radius: 10px;padding: 3rem;box-shadow: 0 5px 8px 0 rgba(0, 0, 0, 0.2), 0 7px 20px 0 rgba(0, 0, 0, 0.17);
}.modal-content h1 {margin-bottom: 1rem;
}.modal-content p {font-size: 1.2rem;margin-top: 1rem;
}@keyframes modalopen {from {opacity: 0;}to {opacity: 1;}
}
/* 媒体查询 */
@media (max-width: 700px) {.choice {font-size: 110px;}
}@media (max-width: 500px) {.choice {font-size: 80px;}
}
// 获取dom节点
const choices = document.querySelectorAll(".choice");
const score = document.getElementById("score");
const result = document.getElementById("result");
const restart = document.getElementById("restart");
const modal = document.querySelector(".modal");
const scoreboard = {player: 0,computer: 0
};// play game
function play(e) {// 显示重新开始按钮restart.style.display = "inline-block";// 获取玩家的选择const playerChoice = e.target.id;// 获得电脑的选择const computerChoice = getComputerChoice();//   console.log(playerChoice, computerChoice);// 决定胜负const winner = getWinner(playerChoice, computerChoice);console.log(playerChoice, computerChoice, winner);showWinner(winner, computerChoice);
}// getComputerChoice
function getComputerChoice() {const rand = Math.random();if (rand < 0.33) {return "rock";} else if (rand <= 0.67) {return "paper";} else {return "scissors";}
}//  getWinner
function getWinner(p, c) {if (p === c) {return "draw";} else if (p === "rock") {if (c === "paper") {return "computer";} else {return "player";}} else if (p === "paper") {if (c === "scissors") {return "computer";} else {return "player";}} else if (p === "scissors") {if (c === "rock") {return "computer";} else {return "player";}}
}// show winner
function showWinner(winner, computerChoice) {if (winner === "player") {scoreboard.player++;result.innerHTML = `<h1 class="text-win">恭喜你,你赢了</h1><p>电脑的选择为</p><i class="fas fa-hand-${computerChoice} fa-10x"></i>`;} else if (winner === "computer") {scoreboard.computer++;result.innerHTML = `<h1 class="text-lose">抱歉,你输了</h1><p>电脑的选择为</p><i class="fas fa-hand-${computerChoice} fa-10x"></i>`;} else {result.innerHTML = `<h1>双方平局</h1><p>电脑的选择为</p><i class="fas fa-hand-${computerChoice} fa-10x"></i>`;}//   显示分数score.innerHTML = `
<p>玩家:${scoreboard.player}</p>
<p>电脑:${scoreboard.computer}</p>
`;// 显示modalmodal.style.display = "block";
}// clearModal
function clearModal(e) {if (e.target == modal) {modal.style.display = "none";}
}
// restartGame
function restartGame() {scoreboard.player = 0;scoreboard.computer = 0;score.innerHTML = `<p>玩家:0</p><p>电脑:0</p>`;
}
// 事件监听
choices.forEach(choice => choice.addEventListener("click", play));
window.addEventListener("click", clearModal);
restart.addEventListener("click", restartGame);

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

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

相关文章

微服务——操作索引库+文档操作+RestClient操作索引库和文档(java程序)

索引库操作 mapping属性 mapping是对文档的约束&#xff0c;常见约束属性包括: 创建索引库 #创建索引库 PUT /heima {"mappings": {"properties": {"info":{"type": "text","analyzer": "ik_smart"},…

带头循环双向链表详解

目录 一、什么是带头循环双向链表&#xff1f; 1.特点&#xff1a; 2.优点&#xff1a; 二、实现接口 1.前置准备 1.1需要的三个文件 1.2结构体的创建和头文件的引用 2.接口实现 2.1函数创建新节点 2.2打印链表内容 2.3尾插新节点 2.4头插新节点 2.5头删节点 2.6尾删…

【CSS】倾斜按钮

效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"/><meta http-equiv"X-UA-Compatible" content"IEedge"/><meta name"viewport" content"widthdevice-…

Pytest简介及jenkins集成

一、pytest介绍 pytest介绍 - unittest\nose pytest&#xff1a;基于unittest之上的单元测试框架 自动发现测试模块和测试方法 断言使用assert表达式即可 可以设置测试会话级、模块级、类级、函数级的fixtures 数据准备 清理工作 unittest&#xff1a;setUp、teardown、…

16. Spring Boot 统一功能处理

目录 1. 用户登录权限校验 1.1 最初用户登录验证 1.2 Spring AOP 用户统一登陆验证 1.3 Spring 拦截器 1.3.1 创建自定义拦截器 1.3.2 将自定义拦截器加入系统配置 1.4 练习&#xff1a;登录拦截器 1.5 拦截器实现原理 1.6 统一访问前缀添加 2. 统一异常处理 3. 统…

心跳跟随的心形灯(STM32(HAL)+WS2812+MAX30102)

文章目录 前言介绍系统框架原项目地址本项目开发开源地址硬件PCB软件功能 详细内容硬件外壳制作WS2812级联及控制MAX30102血氧传感器0.96OLEDFreeRTOS 效果视频总结 前言 在好几年前&#xff0c;我好像就看到了焊武帝 jiripraus在纪念结婚五周年时&#xff0c;制作的一个心跳跟…

R语言中数据重塑(长宽表的转化)

学习笔记&#xff0c;仅供学习使用。 目录 1-什么是整洁的数据&#xff1f; 2-宽表变成长表 示例1&#xff1a; 示例2&#xff1a; 示例3&#xff1a; 3-长表变宽表 示例1&#xff1a; 示例2&#xff1a; 1-什么是整洁的数据&#xff1f; 按照Hadley的表述&#xf…

【redis】redis的认识和安装

目录 1.redis是什么2.Redis的特点3.安装redis4.设置远程连接4.1 开启隧道4.2 可视化客户端连接4.3 开启防火墙 5.redis常见数据类型5.1 redis的一些全局命令5.2 数据结构 6. redis的典型应用---缓存&#xff08;cache&#xff09;6.1 使用redis做缓存6.2 缓存穿透&#xff0c;缓…

Excel·VBA表格横向、纵向相互转换

如图&#xff1a;对图中区域 A1:M6 横向表格&#xff0c;转换成区域 A1:C20 纵向表格&#xff0c;即 B:M 列转换成每2列一组按行写入&#xff0c;并删除空行。同理&#xff0c;反向操作就是纵向表格转换成横向表格 目录 横向转纵向实现方法1转换结果 实现方法2转换结果 纵向转横…

《吐血整理》高级系列教程-吃透Fiddler抓包教程(30)-Fiddler如何抓Android7.0以上的Https包-番外篇

1.简介 通过宏哥前边几篇文章的讲解和介绍想必大家都知道android7.0以上&#xff0c;有android的机制不在信任用户证书&#xff0c;导致https协议无法抓包。除非把证书装在系统信任的证书里&#xff0c;此时手机需要root权限。但是大家都知道root手机是非常繁琐的且不安全&…

HDFS中的sequence file

sequence file序列化文件 介绍优缺点格式未压缩格式基于record压缩格式基于block压缩格式 介绍 sequence file是hadoop提供的一种二进制文件存储格式一条数据称之为record&#xff08;记录&#xff09;&#xff0c;底层直接以<key, value>键值对形式序列化到文件中 优…

动态规划(一)

一、背包问题 1.1 01背包问题 特点:每件物品最多只用于一次 属性包括:最大值(Max)、最小值(Min)、数量 #include<iostream> #include<algorithm>using namespace std;const int N 1010;int n,m; int v[N],w[N]; int f[N][N];int main() {cin>>n>>m;…

MyCat概述

1.MyCat概述 MyCat是阿里巴巴的产品&#xff0c;他是开源的、基于Java语言编写的MySQL数据库中间件。可以像使用mysql一样来使用mycat&#xff0c;对于开发人员来说根本感觉不到mycat的存在。 MyCat下载地址&#xff1a;http://dl.mycat.org.cn/ MyCat官网&#xff1a;http:/…

CuratorFramework接口的作用和使用

CuratorFramework接口是Apache Curator库中的核心接口之一&#xff0c;用于与ZooKeeper集群进行交互。它提供了一组丰富的方法和功能&#xff0c;用于简化与ZooKeeper的交互操作&#xff0c;包括创建、删除、读取和更新节点等。 CuratorFramework接口的主要作用是封装了底层与…

【C语言进阶篇】模拟实现通讯录 (内附源码)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《C语言初阶篇》 《C语言进阶篇》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 &#x1f4cb; 前言一 、 通讯录的简介1.1 联系人的类型定义1.2 通讯录的定义1.3 通讯录要实现的功能 二 、 如何…

计算机网络的定义和分类

计算机网络的定义和分类 计算机网络的定义 计算机网络的精确定义并未统一计算机网络最简单的定义是&#xff1a;一些互相连接的、自治的计算机的集合 互连:指计算机之间可以通过有线或无线的方式进行数据通信自治:是指独立的计算机&#xff0c;它有自己的硬件和软件&#xff…

Python语法:... for ... in ... if ...

Python中&#xff0c;for...in...[if]...语句是一种简洁的构建List的方法&#xff0c;从for给定的List中选择出满足if条件的元素组成新的List&#xff0c;其中if是可以省略的。下面举几个简单的例子进行说明 [for in ]: ...for ....in..... 语句. 实例如下&#xff1a; (1) …

PHP实现首字母头像

<?php $name"哈哈"; $logoletter_avatar($name);echo <img src".$logo." style" border-radius: 50%;">;function letter_avatar($text) {$total unpack(L, hash(adler32, $text, true))[1];$hue $total % 360;list($r, $g, $b) hs…

【go-zero】docker镜像直接部署API与RPC服务 如何实现注册发现?docker network 实现 go-zero 注册发现

一、场景&问题 使用docker直接部署go-zero微服务会发现API无法找到RPC服务 1、API无法发现RPC服务 用docker直接部署 我们会发现API无法注册发现RPC服务 原因是我们缺少了docker的network网桥 2、系统内查看 RPC服务运行正常API服务启动,通过docker logs 查看日志还是未…

Linux学习之正则表达式元字符和grep命令

cat /etc/redhat-release看到操作系统的版本是CentOS Linux release 7.6.1810 (Core)&#xff0c;uname -r可以看到内核版本是3.10.0-957.21.3.el7.x86_64。 正则表达式是一种搜索字符串的模式&#xff0c;通俗点理解&#xff0c;也就是普通字符和元字符共同组成的字符集合匹…