打字通小游戏制作教程:用HTML5和JavaScript提升打字速度

news2024/11/15 10:24:17

🌟 前言

欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍

  • 🤖 洛可可白:个人主页

  • 🔥 个人专栏:✅前端技术 ✅后端技术

  • 🏠 个人博客:洛可可白博客

  • 🐱 代码获取:bestwishes0203

  • 📷 封面壁纸:洛可可白wallpaper

在这里插入图片描述

文章目录

  • 打字通小游戏制作教程:用HTML5和JavaScript提升打字速度
    • 体验地址
    • 准备工作
    • 创建HTML结构
    • 添加CSS样式
    • 编写JavaScript逻辑
    • 测试游戏
    • 全部代码
    • 🎉 结语
    • 🎉 往期精彩回顾

打字通小游戏制作教程:用HTML5和JavaScript提升打字速度

在这篇文章中,我们将一起学习如何使用HTML5和JavaScript来制作一个简单的打字通小游戏。这个小游戏可以帮助用户练习打字速度和准确性。通过这个教程,你将了解如何创建游戏界面、处理用户输入、实现倒计时以及计算得分。即使你是编程新手,也能跟随步骤完成这个项目。

体验地址

洛可可白⚡️打字通
在这里插入图片描述

准备工作

首先,确保你的计算机上安装了文本编辑器,如Notepad++、Sublime Text或Visual Studio Code。这些工具将帮助你编写和编辑代码。

创建HTML结构

打开你的文本编辑器,创建一个新的HTML文件,并输入以下代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>洛可可白打字通</title>
    <style>
        /* 在这里添加CSS样式 */
    </style>
</head>
<body>
    <div class="bigBox">
        <div class="container">你准备好了吗?</div>
        <textarea placeholder="开始输入..." style="resize: none" cols="30" rows="10"></textarea>
        <div class="operate">
            <button>开始</button>
            <div id="timer">60</div>
        </div>
    </div>
    <script>
        // 在这里添加JavaScript代码
    </script>
</body>
</html>

这是我们游戏的基本结构。<head>部分包含了页面的元数据和样式定义,<body>部分则是游戏的主要内容。

添加CSS样式

<style>标签内,我们将添加一些CSS样式来美化我们的打字通游戏。这包括游戏容器、文本区域、按钮和计时器的样式。

body {
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 0;
    -moz-user-select: none;
    -webkit-user-select: none;
    -ms-user-select: none;
    -khtml-user-select: none;
    -o-user-select: none;
    user-select: none;
}

.bigBox {
    width: 50%;
    background-color: #ac8c3e;
    margin: 40px auto;
    box-sizing: border-box;
    padding: 20px;
    border-radius: 30px;
    box-shadow: 0px 0px 30px 9px #939393;
}

.container {
    margin: 0 auto;
    text-align: center;
    padding: 20px;
}

textarea {
    width: 100%;
    height: 200px;
    margin: 20px 0;
    font-size: 20px;
    border: none;
}

.operate {
    width: 20%;
    margin: 0 auto;
    text-align: center;
}

button {
    font-size: 24px;
    padding: 10px 20px;
    background-color: #007bff;
    color: #fff;
    border: none;
    border-radius: 5px;
    cursor: pointer;
}

#timer {
    font-size: 48px;
    margin: 20px;
}

编写JavaScript逻辑

现在,我们将在<script>标签内添加JavaScript代码,这是游戏的核心部分。我们将创建游戏文本、初始化游戏、处理用户输入、实现倒计时以及计算得分。

const text = "Believe in yourself and all that you are..."; // 游戏文本
const container = document.querySelector(".container");
const input = document.querySelector("textarea");
const button = document.querySelector("button");
const timer = document.getElementById("timer");
input.value = "";

let countdown;

function startGame() {
    // 游戏开始后,禁用按钮
    button.disabled = true;

    // 显示文本
    container.textContent = text;

    // 启动倒计时
    countdown = setInterval(() => {
        const remainingTime = parseInt(timer.textContent) - 1;
        if (remainingTime === 0) {
            // 时间用完,游戏结束
            endGame();
        }

        timer.textContent = remainingTime;
    }, 1000);
}

function endGame() {
    // 停止倒计时
    clearInterval(countdown);

    // 计算得分
    const score = calculateScore();
    const scoreMessage = `你的得分是 ${score} 分!`;
    container.textContent = scoreMessage;

    button.disabled = false;
}

function calculateScore() {
    const userText = input.value.trim();
    const correctText = text.trim();
    const userWords = userText.split(" ");
    const correctWords = correctText.split(" ");
    let score = 0;

    for (let i = 0; i < userWords.length; i++) {
        if (userWords[i] === correctWords[i]) {
            score++;
        }
    }

    return score;
}

// 添加按钮点击事件监听器
button.addEventListener("click", () => {
    // 设置倒计时时间
    timer.textContent = "60";

    // 清空输入框和输出文本区域
    input.value = "";
    container.textContent = "";

    // 启动游戏
    startGame();
});

在这个脚本中,我们首先定义了游戏的文本。然后,我们创建了开始游戏的函数startGame,它将显示游戏文本并启动倒计时。我们还定义了结束游戏的函数endGame,它将停止倒计时并计算得分。calculateScore函数用于计算用户的得分。最后,我们为开始按钮添加了一个点击事件监听器,当用户点击按钮时,游戏将开始。

测试游戏

保存你的HTML文件,并在浏览器中打开它。你应该能看到一个打字通游戏的界面。点击“开始”按钮,游戏将开始,你可以尝试在限定时间内尽可能准确地输入显示的文本。时间结束后,你的得分将被计算出来。

全部代码

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>洛可可白⚡️打字通</title>
    <style>
      body {
        font-family: Arial, sans-serif;
        margin: 0;
        padding: 0;
        -moz-user-select: none;
        /*火狐*/
        -webkit-user-select: none;
        /*webkit浏览器*/
        -ms-user-select: none;
        /*IE10*/
        -khtml-user-select: none;
        /*早期浏览器*/
        -o-user-select: none;
        user-select: none;
      }

      .bigBox {
        width: 50%;
        background-color: #ac8c3e;
        margin: 40px auto;
        box-sizing: border-box;
        padding: 20px;
        border-radius: 30px;
        box-shadow: 0px 0px 30px 9px #939393;
      }

      .container {
        margin: 0 auto;
        text-align: center;
        padding: 20px;
      }

      textarea {
        width: 100%;
        height: 200px;
        margin: 20px 0;
        font-size: 20px;
        border: none;
      }

      .operate {
        width: 20%;
        margin: 0 auto;
        text-align: center;
      }

      button {
        font-size: 24px;
        padding: 10px 20px;
        background-color: #007bff;
        color: #fff;
        border: none;
        border-radius: 5px;
        cursor: pointer;
      }

      #timer {
        font-size: 48px;
        margin: 20px;
      }
    </style>
  </head>

  <body>
    <div class="bigBox">
      <div class="container">你准备好了吗?</div>
      <textarea
        name=""
        placeholder="开始输入..."
        id=""
        style="resize: none"
        cols="30"
        rows="10"
      ></textarea>
      <div class="operate">
        <button>开始</button>
        <div id="timer">60</div>
      </div>
    </div>

    <script>
      const text =
        "Believe in yourself and all that you are. Know that there is something inside you that is greater than any obstacle. This quote by Christian D. Larson reminds us that we all have the power within us to overcome any obstacle we may face. When we have confidence in ourselves and our abilities, we can achieve great things. So, let's trust ourselves, believe in our dreams, and work hard to make them a reality.";

      const container = document.querySelector(".container");
      const input = document.querySelector("textarea");
      const button = document.querySelector("button");
      const timer = document.getElementById("timer");
      input.value = "";

      let countdown;

      function startGame() {
        // 游戏开始后,禁用按钮
        button.disabled = true;

        // 显示文本
        container.textContent = text;

        // 启动倒计时
        countdown = setInterval(() => {
          const remainingTime = parseInt(timer.textContent) - 1;
          if (remainingTime === 0) {
            // 时间用完,游戏结束
            endGame();
          }

          timer.textContent = remainingTime;
        }, 1000);
      }

      function endGame() {
        // 停止倒计时
        clearInterval(countdown);

        // 计算得分
        const score = calculateScore();
        const scoreMessage = `你的得分是 ${score} 分!`;
        container.textContent = scoreMessage;

        button.disabled = false;
      }

      function calculateScore() {
        const userText = input.value.trim();
        const correctText = text.trim();
        const userWords = userText.split(" ");
        const correctWords = correctText.split(" ");
        let score = 0;

        for (let i = 0; i < userWords.length; i++) {
          console.log(userWords[i], correctWords[i]);
          if (userWords[i] === correctWords[i]) {
            score++;
          }
        }

        return score;
      }

      // 添加按钮点击事件监听器
      button.addEventListener("click", () => {
        // 设置倒计时时间
        timer.textContent = "60";

        // 清空输入框和输出文本区域
        input.value = "";
        container.textContent = "";

        // 启动游戏
        startGame();
      });
    </script>
  </body>
</html>

🎉 结语

恭喜你,你已经成功创建了一个打字通小游戏!这个教程涵盖了从创建基本的HTML结构到添加CSS样式,再到编写JavaScript交互逻辑的全过程。通过这个项目,你不仅学会了如何制作一个小游戏,还对前端开发有了基本的了解。随着你技能的提升,你可以尝试添加更多的功能,比如记录用户的最佳得分、添加音效或者实现更复杂的游戏逻辑。祝你编程愉快!
如果对你有帮助,点赞、收藏、关注是我更新的动力!👋🌟🚀

🎉 往期精彩回顾

  1. 拼图小游戏制作教程:用HTML5和JavaScript打造经典游戏
  • 234阅读 · 6点赞 · 8收藏
  1. Mock.js 基本语法与应用笔记
  • 215阅读 · 3点赞 · 8收藏
  1. 排序算法全景:从基础到高级的Java实现
  • 474阅读 · 22点赞 · 7收藏
  1. CentOS系统上安装Redis操作教程
  • 124阅读 · 4点赞 · 3收藏
  1. 打造你的HTML5打地鼠游戏:零基础入门教程
  • 1032阅读 · 17点赞 · 27收藏
  1. 打造你的贪吃蛇游戏:HTML、CSS与JavaScript的完美结合
  • 869阅读 · 24点赞 · 9收藏
  1. 快速上手:使用Hexo搭建并自定义个人博客
  • 579阅读 · 16点赞 · 17收藏
  1. 在Vue中处理接口返回的二进制图片数据
  • 582阅读 · 19点赞 · 15收藏
  1. 打造经典游戏:HTML5与CSS3实现俄罗斯方块
  • 1105阅读 · 31点赞 · 23收藏
  1. Spring Boot中Excel数据导入导出的高效实现
  • 1028阅读 · 23点赞 · 22收藏
  1. Spring Boot中实现图片上传功能的两种策略
  • 1187阅读 · 23点赞 · 13收藏
  1. CentOS上安装MySQL 5.7和MySQL 8.0教程
  • 806阅读 · 21点赞 · 13收藏
  1. Spring Boot工程集成验证码生成与验证功能教程
  • 1397阅读 · 38点赞 · 17收藏
  1. Spring Boot 3项目集成Swagger3教程
  • 771阅读 · 15点赞 · 8收藏
  1. CentOS上安装JDK的详细教程
  • 599阅读 · 12点赞 · 13收藏
  1. 解决前端项目中Node.js版本不一致导致的依赖安装错误
  • 845阅读 · 17点赞 · 16收藏
  1. 入门指南:使用uni-app构建跨平台应用
  • 1265阅读 · 29点赞 · 9收藏
  1. Vue项目中使用Mock.js进行API模拟
  • 650阅读 · 17点赞 · 7收藏
  1. Vue组件间通信实践
  • 863阅读 · 24点赞 · 18收藏
  1. CentOS上安装与配置Nginx
  • 649阅读 · 9点赞 · 6收藏
  1. Vue跳转页面传递参数
  • 263阅读 · 5点赞 · 4收藏
  1. vue项目如何下载使用gsap动画库
  • 544阅读 · 1点赞 · 0收藏
  1. VS Code上搭建React开发环境
  • 2263阅读 · 2点赞 · 10收藏
  1. vue命令式组件封装以及使用
  • 816阅读 · 2点赞 · 3收藏
  1. springboot项目常用配置
  • 379阅读 · 1点赞 · 0收藏
  1. 如何在Vue中使用百度地图API来创建地图应用程序。
  • 344阅读 · 3点赞 · 1收藏
  1. Nodejs搭建服务器
  • 167阅读 · 2点赞 · 1收藏
  1. 走入ES6
  • 201阅读 · 2点赞 · 1收藏
  1. Ajax技术包含Fetch和Axios
  • 175阅读 · 2点赞 · 2收藏
  1. Promise技术学这篇就够了
  • 82阅读 · 2点赞 · 1收藏
  1. 手把手教你CentOS下载Nginx配置使用
  • 463阅读 · 2点赞 · 3收藏
  1. 基于ubuntu的c语言编程简单易懂
  • 290阅读 · 3点赞 · 2收藏
  1. vue3 setup语法糖的三种书写方法
  • 2798阅读 · 5点赞 · 14收藏
  1. vue3中vuex 的使用基本使用和二次封装
  • 446阅读 · 3点赞 · 1收藏
  1. 初学Vue第一篇
  • 210阅读 · 1点赞 · 1收藏
  1. MySQL基础全套全网最详细讲解
  • 767阅读 · 3点赞 · 6收藏
  1. 数据结构之操作顺序表实战——C语言
  • 146阅读 · 3点赞 · 2收藏
  1. 前端开发之响应式布局,响应式 HTML, CSS and JavaScript 框架介绍;
  • 701阅读 · 3点赞 · 2收藏
  1. VS code搭建C/C++运行环境简单易上手
  • 2777阅读 · 5点赞 · 8收藏
  1. Vue.2&Vue.3项目引入Element-UI教程&踩坑
  • 9255阅读 · 22点赞 · 82收藏
  1. Vue项目引入Echarts可视化图表库教程&踩坑
  • 2198阅读 · 3点赞 · 5收藏
  1. VirtualBox虚拟机搭建CentOS系统教程
  • 4487阅读 · 4点赞 · 32收藏
  1. VS Code上搭建Vue开发环境
  • 10637阅读 · 13点赞 · 64收藏
  1. Color-UI 简介及使用教程
  • 5902阅读 · 2点赞 · 13收藏

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

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

相关文章

混合测试写一写

题目 服务器IP地址规划&#xff1a;client&#xff1a;12.0.0.12/24&#xff0c;网关服务器&#xff1a;ens36:12.0.0.1/24、ens33&#xff1a;192.168.44.1/24&#xff0c;Web1&#xff1a;192.168.44.30/24&#xff0c;Web2&#xff1a;192.168.44.50/24&#xff0c;Nginx&am…

2.4GHz SOC芯片SI24R03无线网络传感器方案

随着科技的不断进步&#xff0c;智能环境监测已成为现代社会发展的必然趋势。为了满足不同场景下对环境参数的实时监测需求&#xff0c;我们推出了适用于无线网络传感器方案的2.4GHz芯片&#xff0c;旨在为用户打造高效、智能的环境监测体系。 01方案介绍 1、技术原理&am…

2024年最便宜的阿里云服务器购买图文教程,2核2G61元,2核4G99元

2024年&#xff0c;阿里云推出了多款价格非常便宜的云服务器和轻量应用服务器&#xff0c;其中轻量应用服务器2核2G3M带宽50G系统盘只要61元/1年&#xff0c;2核4G4M带宽60G系统盘只要165元/1年。云服务器2核2G3M带宽40G系统盘只要99元/1年&#xff0c;2核4G5M带宽80G系统盘只要…

VS Code搭建windows+远程Linux上Docker的开发环境

在本地windows桌面系统远程Linux上Docker搭建开发环境主要步骤如下&#xff1a; 一、安装vs code和插件 在windows系统上安装vs code&#xff0c;并安装好remote-ssh、dev-container插件&#xff0c;也可以直接安装Remote Development&#xff0c;他会默认把vs code远程的几种…

【计算机视觉】图像处理算法(形态学滤波篇)

来源&#xff1a;《OpenCV3编程入门》&#xff0c;怀念毛星云大佬&#x1f56f;️ 说明&#xff1a;本系列重点关注各种图像处理算法的原理、作用和对比 形态学滤波(1 ):腐蚀与膨胀 形态学槪述 数学形态学的概念&#xff1a; 数学形态学(Mathematical morphology)是立在格论…

通过案例学习提高沟通绩效的方法

在工作过程中&#xff0c;是否经常听到员工抱怨费力不讨好&#xff0c;而上级总是对员工工作不满意&#xff0c;认为员工理解力太差、工作不认真&#xff0c;员工很冤枉&#xff0c;上级很恼火&#xff0c;总之是双方谁也不认为谁错。面对这样的问题&#xff0c;我们该如何解决…

13---HDMI电路设计

视频链接 HDMI电路设计01_哔哩哔哩_bilibili HDMI电路设计 1、HDMI简介 HDMI全称“High Definition Multimedia Interface高清多媒体接口”。2002年4月&#xff0c;来自电子电器行业的7家公司—日立、松下、飞利浦、Silicon Image、索尼、汤姆逊、东芝共同组建了HDMI高清多…

数据分析:如何深挖原因,推动业务

我们都知道&#xff0c;做事情如果只解决表面原因&#xff0c;并不能真正解决所有问题。但是&#xff0c;很多时候&#xff0c;数据分析的大部分工作&#xff0c;却让你花尽心思去找表面原因。比如&#xff1a; 用户数下跌了&#xff1a;A渠道新用户下跌 转化率提升了&#x…

在表格中循环插入表单

<template><div class"key">{{ruleForm.casesRange}}<el-form label-position"top" :model"ruleForm" refruleForm><el-form-item label"这个表格怎么写"><el-table :data"tableData" border>…

一次生产环境上的dockerd启动失败原因分析

今夜原计划对 生产环境 上的 SDN 组件进行一次紧急扩容操作的&#xff0c;但业务基础环境中的 Docker-Engine 启动不起来了、原定计划也就无法继续进行了。 尽管查清了基础业务环境中的故障原因&#xff0c;但金主DD说今天先不干了&#xff0c;那就整理整理思路写篇流水账吧 。…

什么!Python爬虫还能帮你找老婆?

大家好&#xff0c;今天是周日&#xff0c;来点愉快的。昨天在读书的时候&#xff0c;看到一个案例说美国有一位大哥&#xff0c;为了找到一个合适的女朋友&#xff0c;写了一段代码拿到了婚恋网站的一些妹子数据&#xff0c;然后使用一些模型对数据进行分类&#xff0c;接着根…

如何制作一个包含图文视频信息的二维码如何生成?办公多功能利器!

一个包含图片、文字、视频、PDF文件等多种内容的二维码——二维彩虹H5编辑二维码正在各行各业发挥着重要作用。 和普通的二维码不同&#xff0c;H5编辑二维码可以展示更多种类&#xff08;图文视频等&#xff09;、和数量的内容&#xff0c;被广泛应用在多种办公场景。你可以将…

mysql对索引的选择简述

概述 在业务中经常会优化一些mysql的慢查询&#xff0c;通常都是使用explain去查看分析&#xff0c;检查扫描行数和索引的命中情况&#xff1b; 但是在具体索引的选择上&#xff0c;explain结果中并没有直接展示出来&#xff1b; 此时可以开启mysql的追踪优化器Trace功能&…

(golang)切片何时会创建新切片或影响原切片

什么时候切片操作会影响原切片 // 1.切片后没有触发slice的扩容机制时 什么时候对切片操作会创建新切片不影响原切片 // 2.对切片头元素进行截取的时候 // 3.当使用append时&#xff0c;len > cap则会触发扩容机制 前置&#xff1a; //slice结构体 type SliceHeader struct…

JavaWeb05-JSP

目录 一、JSP 1.概述 2.主要作用 3.快速入门 4.JSP原理 5.JSP脚本 &#xff08;1&#xff09;主要分类 6.JSP使用 7.JSP缺点 8.EL表达式 &#xff08;1&#xff09;概述 &#xff08;2&#xff09;主要功能 &#xff08;3&#xff09;使用 &#xff08;4&#xff…

Java中JDK定时任务

Java中JDK定时任务 一、JDK自带Timer1.Timer核心方法&#xff08;1&#xff09;schedule与scheduleAtFixedRate区别schedule侧重保持间隔时间的稳定scheduleAtFixedRate保持执行频率的稳定 2.java.util.TimerTask&#xff08;1&#xff09;TimerTask核心方法 3.Timer的缺陷4.Ti…

内部审计2.0时代:数字化工具和方法全面升级

文章目录 一、内部审计的发展阶段二、内部审计的逻辑架构三、内部审计数字化转型面临的问题&#xff08;1&#xff09;缺少内部审计数字化转型规划和方案&#xff08;2&#xff09;非结构化数据的采集和后续利用不足&#xff08;3&#xff09;依赖编程或使用新工具的数据分析能…

MySQL分析sql语句的性能瓶颈的几种方式介绍

在 MySQL 中&#xff0c;性能瓶颈可能会导致数据库系统运行缓慢&#xff0c;影响用户体验。为了确保数据库的性能&#xff0c;识别和解决性能瓶颈是非常重要的。以下是一些常用的方法来分析 SQL 语句的性能瓶颈&#xff1a; 1. EXPLAIN 语句 EXPLAIN 是一个强大的工具&#xff…

发布DDD脚手架到Maven仓库,IntelliJ IDEA 配置一下即可使用

这篇文章将帮助粉丝伙伴们更高效地利用小傅哥构建的DDD&#xff08;领域驱动设计&#xff09;脚手架&#xff0c;搭建工程项目&#xff0c;增强使用的便捷性。让&#x1f46c;&#x1f3fb;兄弟们直接在 IntelliJ IDEA 配置个在线的链接&#xff0c;就能直接用上这款脚手架&…

day1-C++

1>提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数要求使用C风格字符串完成。 代码&#xff1a; #include <iostream> #include <string.h> using namespace std;int main() {string str ;int low 0, …