今天搬了一天的家,状态不是很好,分享一个小游戏给大家吧~
先介绍一下游戏规则:
1、点击play后,游戏会提供4中不同的昆虫供玩家进行选择,这四种昆虫分别为:蟑螂、蛛蛛、蚊子和苍蝇。
2、当玩家选择完昆虫后,游戏开始
3、游戏会随机的生成玩家选择的昆虫到电脑屏幕,玩家利用鼠标点击到则得一分。
4、游戏开始时屏幕上显示一只昆虫,随后逐渐增多,同时记录玩家游戏时长
5、一段时间后,弹出小惊喜给玩家
游戏部分截图如下:
- 开始游戏:
- 选择界面:
游戏开始:
一段时间后:
之后弹出惊喜给玩家:
没错,这个时候玩家应该已经发现昆虫是点不完的了,且会越点越多~(大概心态会崩,开始赞美开发者了)
下面老规矩,上代码:
首先是html部分:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link rel="stylesheet" href="style.css" /> <title>Catch The Insect</title> </head> <body> <div class="screen"> <h1>Catch The Insect</h1> <button class="btn" id="start-btn">Play Game</button> </div> <div class="screen"> <h1>What is your "favorite" insect?</h1> <ul class="insects-list"> <li> <button class="choose-insect-btn"> <p>Fly</p> <img src="http://pngimg.com/uploads/fly/fly_PNG3946.png" alt="fly"> </button> </li> <li> <button class="choose-insect-btn"> <p>Mosquito</p> <img src="http://pngimg.com/uploads/mosquito/mosquito_PNG18175.png" alt="mosquito" /> </button> </li> <li> <button class="choose-insect-btn"> <p>Spider</p> <img src="http://pngimg.com/uploads/spider/spider_PNG12.png" alt="spider" /> </button> </li> <li> <button class="choose-insect-btn"> <p>Roach</p> <img src="http://pngimg.com/uploads/roach/roach_PNG12163.png" alt="roach" /> </button> </li> </ul> </div> <div class="screen game-container" id="game-container"> <h3 id="time" class="time">Time: 00:00</h3> <h3 id="score" class="score">Score: 0</h3> <h5 id="message" class="message"> Are you annoyed yet? <br> You are playing an impossible game!! </h5> </div> <script src="script.js"></script> </body> </html>
紧接着是js部分:
const screens = document.querySelectorAll('.screen'); const choose_insect_btns = document.querySelectorAll('.choose-insect-btn'); const start_btn = document.getElementById('start-btn') const game_container = document.getElementById('game-container') const timeEl = document.getElementById('time') const scoreEl = document.getElementById('score') const message = document.getElementById('message') let seconds = 0 let score = 0 let selected_insect = {} start_btn.addEventListener('click', () => screens[0].classList.add('up')) choose_insect_btns.forEach(btn => { btn.addEventListener('click', () => { const img = btn.querySelector('img') const src = img.getAttribute('src') const alt = img.getAttribute('alt') selected_insect = { src, alt } screens[1].classList.add('up') setTimeout(createInsect, 1000) startGame() }) }) function startGame() { setInterval(increaseTime, 1000) } function increaseTime() { let m = Math.floor(seconds / 60) let s = seconds % 60 m = m < 10 ? `0${m}` : m s = s < 10 ? `0${s}` : s timeEl.innerHTML = `Time: ${m}:${s}` seconds++ } function createInsect() { const insect = document.createElement('div') insect.classList.add('insect') const { x, y } = getRandomLocation() insect.style.top = `${y}px` insect.style.left = `${x}px` insect.innerHTML = `<img src="${selected_insect.src}" alt="${selected_insect.alt}" style="transform: rotate(${Math.random() * 360}deg)" />` insect.addEventListener('click', catchInsect) game_container.appendChild(insect) } function getRandomLocation() { const width = window.innerWidth const height = window.innerHeight const x = Math.random() * (width - 200) + 100 const y = Math.random() * (height - 200) + 100 return { x, y } } function catchInsect() { increaseScore() this.classList.add('caught') setTimeout(() => this.remove(), 2000) addInsects() } function addInsects() { setTimeout(createInsect, 1000) setTimeout(createInsect, 1500) } function increaseScore() { score++ if(score > 19) { message.classList.add('visible') } scoreEl.innerHTML = `Score: ${score}` }
最后是css部分:
@import url('https://fonts.googleapis.com/css?family=Press+Start+2P&display=swap'); * { box-sizing: border-box; } body { background-color: #516dff; color: #fff; font-family: 'Press Start 2P', sans-serif; height: 100vh; overflow: hidden; margin: 0; text-align: center; } a { color: #fff; } h1 { line-height: 1.4; } .btn { border: 0; background-color: #fff; color: #516dff; padding: 15px 20px; font-family: inherit; cursor: pointer; } .btn:hover { opacity: 0.9; } .btn:focus { outline: 0; } .screen { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; width: 100vw; transition: margin 0.5s ease-out; } .screen.up { margin-top: -100vh; } .insects-list { display: flex; flex-wrap: wrap; justify-content: center; list-style-type: none; padding: 0; } .insects-list li { margin: 10px; } .choose-insect-btn { background-color: transparent; border: 2px solid #fff; color: #fff; cursor: pointer; font-family: inherit; width: 150px; height: 150px; } .choose-insect-btn:hover { background-color: #fff; color: #516dff; } .choose-insect-btn:active { background-color: rgba(255, 255, 255, 0.7); } .choose-insect-btn img { width: 100px; height: 100px; object-fit: contain; } .game-container { position: relative; } .time, .score { position: absolute; top: 20px; } .time { left: 20px; } .score { right: 20px; } .message { line-height: 1.7; background-color: rgba(0, 0, 0, 0.5); width: 100%; padding: 20px; z-index: 100; text-align: center; opacity: 0; position: absolute; top: 0; left: 50%; transform: translate(-50%, -150%); transition: transform 0.4s ease-in; } .message.visible { transform: translate(-50%, 150%); opacity: 1; } .insect { cursor: pointer; display: flex; align-items: center; justify-content: center; width: 100px; height: 100px; position: absolute; transform: translate(-50%, -50%) scale(1); transition: transform 0.3s ease-in-out; } .insect.caught { transform: translate(-50%, -50%) scale(0); } .insect img { width: 100px; height: 100px; }
最后,祝大家玩的愉快~
标签:const,color,前端,height,width,insect,小游戏,有趣,btn From: https://www.cnblogs.com/kimi77/p/17399871.html