From 0d1940d0c5abda3012873e951395ce638f95d219 Mon Sep 17 00:00:00 2001 From: zhangyi-user <1293605013@qq.com> Date: Thu, 19 Mar 2026 19:11:07 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E8=99=AB=E5=AD=90?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E5=80=8D=E9=80=9F=E8=B0=83=E8=8A=82=E3=80=81?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=9C=80=E9=AB=98=E5=88=86=E5=92=8C4?= =?UTF-8?q?=E7=A7=8D=E6=96=B0=E8=99=AB=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- insect-catch-game/index.html | 30 ++++++++++++++++++ insect-catch-game/script.js | 50 ++++++++++++++++++++++++----- insect-catch-game/style.css | 61 +++++++++++++++++++++++++++--------- 3 files changed, 118 insertions(+), 23 deletions(-) diff --git a/insect-catch-game/index.html b/insect-catch-game/index.html index ebd3581..265b9c4 100644 --- a/insect-catch-game/index.html +++ b/insect-catch-game/index.html @@ -48,12 +48,42 @@ /> +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • Time: 00:00

    Score: 0

    +

    High Score: 0

    +
    + + + 1x +
    Are you annoyed yet?
    You are playing an impossible game!! diff --git a/insect-catch-game/script.js b/insect-catch-game/script.js index f9963e7..a0adab3 100644 --- a/insect-catch-game/script.js +++ b/insect-catch-game/script.js @@ -4,25 +4,44 @@ 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 highScoreEl = document.getElementById('high-score') +const speedSlider = document.getElementById('speed') +const speedValue = document.getElementById('speed-value') const message = document.getElementById('message') let seconds = 0 let score = 0 let selected_insect = {} +let gameSpeed = 1 +let highScore = localStorage.getItem('insectCatchHighScore') || 0 + +highScoreEl.innerHTML = `High Score: ${highScore}` 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 } + const emoji = btn.querySelector('span') + if (img) { + const src = img.getAttribute('src') + const alt = img.getAttribute('alt') + selected_insect = { type: 'img', src, alt } + } else if (emoji) { + const content = emoji.textContent + const alt = btn.querySelector('p').textContent.toLowerCase() + selected_insect = { type: 'emoji', content, alt } + } screens[1].classList.add('up') setTimeout(createInsect, 1000) startGame() }) }) +speedSlider.addEventListener('input', (e) => { + gameSpeed = parseInt(e.target.value) + speedValue.textContent = `${gameSpeed}x` +}) + function startGame() { setInterval(increaseTime, 1000) } @@ -42,7 +61,12 @@ function createInsect() { const { x, y } = getRandomLocation() insect.style.top = `${y}px` insect.style.left = `${x}px` - insect.innerHTML = `${selected_insect.alt}` + + if (selected_insect.type === 'emoji') { + insect.innerHTML = `${selected_insect.content}` + } else { + insect.innerHTML = `${selected_insect.alt}` + } insect.addEventListener('click', catchInsect) @@ -65,14 +89,24 @@ function catchInsect() { } function addInsects() { - setTimeout(createInsect, 1000) - setTimeout(createInsect, 1500) + const baseDelay = 1000 + const adjustedDelay = baseDelay / gameSpeed + + setTimeout(createInsect, adjustedDelay) + setTimeout(createInsect, adjustedDelay * 1.5) } function increaseScore() { score++ + scoreEl.innerHTML = `Score: ${score}` + + if (score > highScore) { + highScore = score + highScoreEl.innerHTML = `High Score: ${highScore}` + localStorage.setItem('insectCatchHighScore', highScore) + } + if(score > 19) { message.classList.add('visible') } - scoreEl.innerHTML = `Score: ${score}` -} \ No newline at end of file +} diff --git a/insect-catch-game/style.css b/insect-catch-game/style.css index 9808e9c..66ca07e 100644 --- a/insect-catch-game/style.css +++ b/insect-catch-game/style.css @@ -95,7 +95,8 @@ h1 { } .time, -.score { +.score, +.high-score { position: absolute; top: 20px; } @@ -108,24 +109,34 @@ h1 { 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; +.high-score { + top: 60px; + right: 20px; +} + +.speed-control { position: absolute; - top: 0; + top: 20px; left: 50%; - transform: translate(-50%, -150%); - transition: transform 0.4s ease-in; + transform: translateX(-50%); + display: flex; + align-items: center; + gap: 10px; + z-index: 100; } -.message.visible { - transform: translate(-50%, 150%); - opacity: 1; +.speed-control label { + font-size: 12px; +} + +.speed-control input[type="range"] { + width: 100px; + cursor: pointer; +} + +.speed-control span { + font-size: 12px; + min-width: 30px; } .insect { @@ -148,3 +159,23 @@ h1 { width: 100px; height: 100px; } + +.message { + position: absolute; + top: 0; + left: 50%; + transform: translate(-50%, -150%); + background-color: rgba(0, 0, 0, 0.3); + width: 100%; + padding: 20px; + z-index: 100; + text-align: center; + opacity: 0; + transition: transform 0.4s ease-in; + line-height: 1.6; +} + +.message.visible { + transform: translate(-50%, 150%); + opacity: 1; +}