前端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.hqwc.cn/news/60950.html

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

相关文章

LeetCode--HOT100题(24)

目录 题目描述&#xff1a;234. 回文链表&#xff08;简单&#xff09;题目接口解题思路代码 PS: 题目描述&#xff1a;234. 回文链表&#xff08;简单&#xff09; 给你一个单链表的头节点 head &#xff0c;请你判断该链表是否为回文链表。如果是&#xff0c;返回 true &…

【腾讯云 Cloud Studio 实战训练营】基于Cloud Studio构建React完成点餐H5页面

前言 【腾讯云 Cloud Studio 实战训练营】基于Cloud Studio 构建React完成点餐H5页面一、Cloud Studio介绍1.1 Cloud Studio 是什么1.2 相关链接1.3 登录注册 二、实战练习2.1 初始化工作空间2.2 开发一个简版的点餐系统页面1. 安装 antd-mobile2. 安装 less 和 less-loader3. …

电力系统电流三段式保护MATLAB仿真模型

整体模型如下&#xff1a; Matlab/Simulink搭建的电力系统电流保护模型采用辐射型单电源供电的运行方式 Ⅰ段保护的搭建 Ⅰ段保护为瞬时速断保护&#xff0c;根据Ⅰ段整定原则确定整定值。线路发生短路故障时&#xff0c;短路电流急剧增大&#xff1b;超过设置的整定值时&…

【C# 基础精讲】为什么选择C# ?

C#&#xff08;C Sharp&#xff09;是由微软开发的一种通用、面向对象的编程语言。它最初于2000年发布&#xff0c;自那时以来逐渐成为开发者的首选之一。C#的设计目标是提供一种简单、现代、可靠且安全的编程语言&#xff0c;使开发者能够轻松构建各种类型的应用程序。 为什么…

南大实验pa0:安装环境

安装untubu没问题&#xff0c;但是切到清华软件园之后&#xff0c;问题百出。记录一下 问题1 如上图所示&#xff0c;在安装build-essential的时候出现了问题 The following packages have unmet dependencies:g-11 : Depends: gcc-11-base ( 11.2.0-19ubuntu1) but 11.4.0-1…

程序员到底有多“幸福”?

作为一个幸福&#xff08;辛苦的发福&#xff09;的程序员&#xff0c;一边苦哈哈地加班&#xff0c;一边也知道自己享受着互联网时代的红利&#xff0c;一边又感到随时会被优化的焦虑…… 相信很多程序员都和我一样&#xff0c;对“码农”这一身份又爱又恨&#xff0c;那么你认…

企业服务器被devos勒索病毒攻击后怎么处理,devos勒索病毒如何攻击的

众所周知&#xff0c;科学技术是第一生产力&#xff0c;科学技术的发展给企业与人们的生活带来了极大变化&#xff0c;但随之而来的网络安全威胁也不断增加。最近&#xff0c;我们收到很多企业的求助&#xff0c;企业的计算机服务器遭到了devos勒索病毒的攻击&#xff0c;导致企…

跨境电商线上店铺智能装修系统源码开发

搭建一个跨境电商线上店铺智能装修系统源码开发需要以下步骤&#xff1a; 1. 确定需求&#xff1a;首先&#xff0c;需要明确线上店铺智能装修系统的具体需求。 2. 选择开发语言和框架&#xff1a;根据需求&#xff0c;选择合适的开发语言和框架进行开发&#xff0c;可以提高…

深入JVM - JIT分层编译技术与日志详解

深入JVM - JIT分层编译技术与日志详解 文章目录 深入JVM - JIT分层编译技术与日志详解1. 背景简介2. JIT 编译器2.1. 客户端版本的编译器: C12.2. 服务端版本的编译器: C22.3. Graal JIT 编译器 3. 分层编译技术(Tiered Compilation)3.1. 汇聚两种编译器的优点3.2. 精准优化(Ac…

Profibus-DP转modbus RTU网关modbus rtu和tcp的区别

捷米JM-DPM-RTU网关在Profibus总线侧实现主站功能&#xff0c;在Modbus串口侧实现从站功能。可将ProfibusDP协议的设备&#xff08;如&#xff1a;EH流量计、倍福编码器等&#xff09;接入到Modbus网络中&#xff1b;通过增加DP/PA耦合器&#xff0c;也可将Profibus PA从站接入…

makefile include 使用介绍

文章目录 前言一、include 关键字1. 语法介绍2. 处理方式示例&#xff1a; 二、- include 操作总结 前言 一、include 关键字 1. 语法介绍 在 Makefile 中&#xff0c;include 指令&#xff1a; 类似于 C 语言中的 include 。将其他文件的内容原封不动的搬入当前文件。 当 …

手机便签中可以打勾的圆圈或小方块怎么弄?

在日常的生活和工作中&#xff0c;很多网友除了使用手机便签来记录灵感想法、读书笔记、各种琐事、工作事项外&#xff0c;还会用它来记录一些清单&#xff0c;例如待办事项清单、读书清单、购物清单、旅行必备物品清单等。 在按照记录的清单内容来执行的时候&#xff0c;为了…