然后我们需要附加两个元素:

  1. 我们将在其中显示玩家必须输入的文本的元素:
    。我们将使用一段简单的 javascript 代码添加需要输入的文本:
            var text2type = \\'Some text that needs to be typed...\\';            function init(){                $(\\'#txt\\').text( text2type );            }
  1. 需要获得焦点的元素,我们可以在玩家按下按键时添加事件侦听器。我们并不真正需要显示该元素,我们只需要将它放在页面中并且它必须是可见的,否则它无法接收焦点。但是,如果我们不想显示它,我们会将其宽度和高度设置为 0。

现在我们需要确保文本输入元素始终具有焦点。首先,我们在 boda=y 标记中添加一个事件,当单击正文时,该事件会将焦点设置到 textinput 元素,这实际上意味着页面中的任何位置:

我们还需要在页面加载并准备好时设置焦点。

$( document ).ready(function() {    $(\\'#textinput\\').focus();});

现在我们需要编写最重要的部分,即处理输入部分的代码。代码很简单,有3个主要方法:

\\'use strict\\';class TypingGame {    constructor( text, div ) {      this.text = text;      this.history = \\\"\\\";      this.misspelled = false;      this.stats = [];    }    add(c) {      if ( c == this.text.substring( this.history.length, this.history.length   1 ) ){        this.history  = c;        this.misspelled = false;      }      else{        this.misspelled = true;      }      this.render();    }    render(){        let cursorstyle = \\'cursor\\'   ( this.misspelled ? \\'-misstyped\\' : \\'\\' );      $(\\'#txt\\').html(         \\'\\'   this.history   \\'\\'          \\'\\'   this.text.substring( this.history.length, this.history.length   1 )   \\'\\'          \\'\\'   this.text.substring( this.history.length   1 )   \\'\\'      );    }  }

对于下一部分,当在 textinput 元素中输入新字母时,我们需要更新打字机对象(记住我们有一个监听器 ).

            function updateText(){                let c = $(\\'#textinput\\').val();                if ( c.length > 0 ) {                    typer.add( c.slice(-1) );                }                $(\\'#textinput\\').val(\\'\\');                showCurrent()            }

现在我们有了第一个原型,具有可运行的打字游戏的游戏机制。在下一节中,我们将添加更多元素来测量每分钟字数和每分钟字符数(wpm 和 cpm)的打字速度,并在漂亮的对话框中显示性能。

","image":"http://www.luping.net/uploads/20241106/1730856247672ac537d7b5f.jpg","datePublished":"2024-11-08T12:33:57+08:00","dateModified":"2024-11-08T12:33:57+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 用 javascript 创建一个打字游戏来测量 wpm 速度

用 javascript 创建一个打字游戏来测量 wpm 速度

发布于2024-11-08
浏览:875

Create a typing game in javascript to measure wpm speed

用 JavaScript 创建一个快速打字游戏

在本教程中,我们将创建一个简单的打字游戏,以 wpm 为单位测量我们的打字速度 - 每分钟单词数、每分钟字符数、拼写错误,并允许改进它。我们将只使用 javascript 和 jQuery(这并不是真正需要的,但它会让我们的打字游戏变得不那么冗长,这样我们就可以专注于应用程序的其余部分。

我们首先创建一个简单的 html 页面:


    
        Typing Test WPM: How fast can you type? ⌨️?

然后我们需要附加两个元素:

  1. 我们将在其中显示玩家必须输入的文本的元素:
    。我们将使用一段简单的 javascript 代码添加需要输入的文本:
            var text2type = 'Some text that needs to be typed...';

            function init(){
                $('#txt').text( text2type );
            }

  1. 需要获得焦点的元素,我们可以在玩家按下按键时添加事件侦听器。我们并不真正需要显示该元素,我们只需要将它放在页面中并且它必须是可见的,否则它无法接收焦点。但是,如果我们不想显示它,我们会将其宽度和高度设置为 0。

现在我们需要确保文本输入元素始终具有焦点。首先,我们在 boda=y 标记中添加一个事件,当单击正文时,该事件会将焦点设置到 textinput 元素,这实际上意味着页面中的任何位置:

我们还需要在页面加载并准备好时设置焦点。

$( document ).ready(function() {
    $('#textinput').focus();
});

现在我们需要编写最重要的部分,即处理输入部分的代码。代码很简单,有3个主要方法:

  • 构造函数设置需要输入的文本并初始化一些类变量。
  • add 方法,添加输入的新字符,这可能会导致错误,也可能不会。
  • 渲染方法正在渲染文本,玩家可以直观地反馈进度,并且可以看到何时拼写错误。
'use strict';

class TypingGame {

    constructor( text, div ) {
      this.text = text;
      this.history = "";

      this.misspelled = false;
      this.stats = [];
    }

    add(c) {

      if ( c == this.text.substring( this.history.length, this.history.length   1 ) ){
        this.history  = c;
        this.misspelled = false;
      }
      else{
        this.misspelled = true;
      }

      this.render();
    }


    render(){

        let cursorstyle = 'cursor'   ( this.misspelled ? '-misstyped' : '' );

      $('#txt').html( 
        ''   this.history   ''  
        ''   this.text.substring( this.history.length, this.history.length   1 )   ''
          ''   this.text.substring( this.history.length   1 )   ''
      );

    }


  }

对于下一部分,当在 textinput 元素中输入新字母时,我们需要更新打字机对象(记住我们有一个监听器 ).

            function updateText(){

                let c = $('#textinput').val();
                if ( c.length > 0 ) {
                    typer.add( c.slice(-1) );
                }
                $('#textinput').val('');
                showCurrent()
            }

现在我们有了第一个原型,具有可运行的打字游戏的游戏机制。在下一节中,我们将添加更多元素来测量每分钟字数和每分钟字符数(wpm 和 cpm)的打字速度,并在漂亮的对话框中显示性能。

版本声明 本文转载于:https://dev.to/websilvercraft/create-a-speed-typing-game-in-javascript-4lpc?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • Context API 与 Redux
    Context API 与 Redux
    在 React 生态系统中,Context API 和 Redux 都是流行的状态管理工具,但它们有不同的用途并提供不同的优势。 React 中内置的 Context API 提供了一种在组件树中共享状态的方法,而无需在每个级别手动传递 props。它对于更简单的应用程序或主题管理或用户身份验证等特...
    编程 发布于2024-11-08
  • 使用 useState 的状态更新方法
    使用 useState 的状态更新方法
    React 是用于开发动态和交互式用户界面的最流行的 JavaScript 库之一。在开发应用程序时,状态管理对于性能和用户体验至关重要。在这种情况下,useState 挂钩是管理组件状态的最常见方法之一。在本文中,我们将深入研究 useState. 的状态更新方法 状态更新方法 ...
    编程 发布于2024-11-08
  • 考虑到 libcurl 的可用性,何时适合在 PHP 中启用“allow_url_fopen”?
    考虑到 libcurl 的可用性,何时适合在 PHP 中启用“allow_url_fopen”?
    在 PHP 中允许“allow_url_fopen”:平衡行为开发人员经常请求在 PHP 中激活“allow_url_fopen”。在本文中,我们将检查当前的行业规范并评估允许此功能是否仍然谨慎,特别是在 libcurl 可用的情况下。当前行业规范对于大多数 Web 应用程序,启用“allow_ur...
    编程 发布于2024-11-08
  • 何时在 jQuery.parseJSON 中使用单引号和双引号?
    何时在 jQuery.parseJSON 中使用单引号和双引号?
    jQuery.parseJSON 中的单引号与双引号使用 jQuery 的 parseJSON 方法时,用户可能会遇到行为差异,具体取决于是单引号还是双引号双引号用于将 JSON 字符串括起来。在本文中,我们将探讨这些差异。双引号:标准方法根据 JSON 标准,双引号被认为是括起的首选方法JSON ...
    编程 发布于2024-11-08
  • 如何处理多处理 Python 应用程序中的日志记录?
    如何处理多处理 Python 应用程序中的日志记录?
    Python 中的多处理日志记录使用 Python 的多处理模块时,重要的是要考虑日志记录实践,以避免因多个进程写入而导致错误同时处理相同的文件句柄。默认情况下,mp.get_logger() 提供的多处理感知记录器可确保 sys.stderr 中正确的锁定机制。但是,不支持多处理感知的模块可能需要...
    编程 发布于2024-11-08
  • 回答:我如何运行特定的phinx seeder并在phpunit中获取生成的记录?
    回答:我如何运行特定的phinx seeder并在phpunit中获取生成的记录?
    这个答案解决了我遇到的一个问题:在 phpunit 上运行 Phinx 播种机: 回答回复:我如何运行特定的phinx seeder并在phpunit中获取生成的记录? ...
    编程 发布于2024-11-08
  • 如何以编程方式为 LinearLayout 中的按钮添加边距?
    如何以编程方式为 LinearLayout 中的按钮添加边距?
    LinearLayout 中的动态边距在 Android 开发中,布局在组织和显示用户界面元素方面发挥着至关重要的作用。布局的一个常见要求是能够指定元素之间的边距。虽然 XML 提供了一种直观的方式来定义边距,但开发人员可能需要以编程方式创建布局以确保灵活性或处理动态内容。此问题探讨如何以编程方式向...
    编程 发布于2024-11-08
  • 如何使用 PowerMock 和 Mockito 有效模拟私有方法?
    如何使用 PowerMock 和 Mockito 有效模拟私有方法?
    使用 PowerMock 模拟私有方法的替代解决方案尽管最初提出的使用 PowerMock 的解决方案遇到了困难,但事实证明,另一种方法是成功的。使用 Mockito 和 PowerMock 的组合,可以有效地模拟私有方法。如提供的代码片段所示,类 CodeWithPrivateMethod 拥有一...
    编程 发布于2024-11-08
  • 如何在 PHP 中将列式数据结构转换为基于行的格式?
    如何在 PHP 中将列式数据结构转换为基于行的格式?
    将多维列式数据重新排序为基于行的结构给定一个具有面向列数据的关联数组,任务是将其转置为由行组成的多维数组。原始数组中的数据按列排列,目标是将同一列的值合并到行中。原始数组:$where = [ 'id' => [ 12, 13, 14 ...
    编程 发布于2024-11-08
  • Next.JS 或 Nuxt.JS 哪个最好
    Next.JS 或 Nuxt.JS 哪个最好
    The ability to build scalable and seamless web applications quickly is the dream of every web developer. As a result, the importance of frameworks in ...
    编程 发布于2024-11-08
  • 了解 RESTful API 和 Web 服务:主要区别和用例
    了解 RESTful API 和 Web 服务:主要区别和用例
    在现代软件开发领域,RESTful API 和 Web 服务都是实现不同系统之间无缝通信的基础。虽然这些术语经常互换使用,但它们代表具有独特特征和用例的不同概念。对于旨在构建高效、可互操作和可扩展的应用程序的开发人员来说,掌握 RESTful API 和 Web 服务 之间的差异至关重要。在本节中,...
    编程 发布于2024-11-08
  • React 应用程序的基本设计模式:升级您的组件游戏
    React 应用程序的基本设计模式:升级您的组件游戏
    如果您已经进入 React 世界一段时间,您可能听说过“这只是 JavaScript”这句话。虽然这是事实,但这并不意味着我们不能从一些经过验证的模式中受益,使我们的 React 应用程序更易于维护、可重用并且使用起来更加愉快。让我们深入研究一些基本的设计模式,这些模式可以让你的 React 组件从...
    编程 发布于2024-11-08
  • 使用 PHP 构建 API 和 Web 服务
    使用 PHP 构建 API 和 Web 服务
    使用 PHP 构建 API 和 Web 服务涉及以下步骤:建立 PHP 环境,安装 PHP、Apache 服务器和 mod_php 模块。创建 API,编写 PHP 脚本处理请求并返回响应。创建 Web 服务,使用 PHP 框架或纯 PHP 来创建服务器。实战案例:构建用户注册 API,处理 POS...
    编程 发布于2024-11-08
  • Restful 路由 - Flask API 示例
    Restful 路由 - Flask API 示例
    Restful 路由致力于使所有不同应用程序的路由保持一致。 REST 是表述性状态转移。它以一致的、人类可读的、机器可读的方式使用 HTTP。 标准是 GET、POST、PATCH、PUT 和 DELETE。 下面将给出 Flask API 数据库中的几个静态路由的示例,用于从前端获取/向前端...
    编程 发布于2024-11-08
  • ## 如何在没有反向引用的情况下匹配 Go 正则表达式中的重复字符?
    ## 如何在没有反向引用的情况下匹配 Go 正则表达式中的重复字符?
    在 Go 的正则表达式中匹配重复字符在 Go 的正则表达式中,匹配重复字符可能是一个挑战,因为不支持反向引用。这可能会令人沮丧,特别是当您需要执行复杂的模式匹配任务时。要解决此限制,有两种可能的解决方案:使用替代正则表达式库:一种选择是使用支持反向引用的第三方正则表达式库。一个流行的选择是“glen...
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3