前言

  demo预览->typewriter gameⅡ (chrome only 没做兼容

  别看一开始时速度不快,会线性增长的哦,反正楼主的score还没达到过40...

  为什么叫Ⅱ呢?之前写了个打字机游戏(试玩猛戳这里),数据上只是简单的手写了50个单词,全部输入正确即可过关,本来想改一下做成竞技类的(有分数的),但是一样的小游戏写俩没啥意思,正好最近看了下css3,突然有了某种灵感,于是typewriter gameⅡ粗线了。

过程

  之前的打字机游戏是基于canvas和粒子系统的,这次是基于dom和css3的,不过思路都是一样的。

  在看下文之前,可以先回顾下《Canvas之打字机游戏》和《css3实践之摩天轮式图片轮播+3D正方体+3D标签云(perspective、transform-style、perspective-origin)》,相同的内容就不多说了。

  html文件主要就是dom的一些css,核心文件主要就是两个js文件。

  初始化文件,主要构造单词数组以及整个游戏界面。

  单词直接从网上拉了个txt文件(看文件戳这里),然后用ajax和正则将里面的单词提取放在array数组中。

$.ajax ({
  type: 'GET',
  url: 'data.html',
  dataType: 'html',
  async: false,  // 异步
  success: function (msg) {
    window.array = msg.split(/[^A-z]+/)
  }
});

  不得不说正则表达式实在是太屌,有时间一定要好好看看。

  接着构造了游戏的主要界面,9个正方体围成的一个圈,构造方法和前文说的摩天轮式图片轮播类似,可以参考前文。

  游戏的核心文件,控制整个小游戏的逻辑。

  简单说说整个逻辑。监听键盘,当正确打字时,字的颜色发生变化,不断旋转,不断出现新的单词,旋转速度也不断变快,直到游戏结束。

  这之中最纠结的是写createWord方法。因为得找一个时机创造新的单词替换旧单词,最终我选择当旋转位置如下时调用方法:

  刚好这一位置该div即将处在盲区,经过实践发现旋转角度满足28+40*n 时调用方法即可,哈希角度去重。

  还有一个问题,因为创造新的单词前,先要去掉旧的单词,jquery可以用empty方法,如果用原生的js将dom一个一个remove,要倒序写:

var c = d[i].getElementsByClassName('cell');
// 必须倒着来 notice
for(var j = c.length - 1; j >= 0; j--) {
  d[i].removeChild(c[j]);
}

  其他的话,主要是对旋转速度的控制,以及游戏过程中的各种index的控制,只要逻辑正确,随便怎么写都行。

总结

  有兴趣看完整的代码可以猛戳:打字机游戏Ⅱ源码

  有任何bug或者其他问题麻烦给我留言。

  css3很强大,正则表达式很强大,感概ing...

打字机游戏Ⅱ之手速pk的更多相关文章

  1. JY游戏之手游《打卡乐猫》

    JY游戏之手游戏<打卡乐猫> JY是一款专门制作js小游戏的js库,它集成了一些对网页类小游戏的功能帮助 ,能帮你更快的完成js开发,它的主体框架包JY.JYG.Sprite.Sprite ...

  2. Contest - 2014 SWJTU ACM 手速测试赛(2014.10.31)

    题目列表: 2146 Problem A [手速]阔绰的Dim 2147 Problem B [手速]颓废的Dim 2148 Problem C [手速]我的滑板鞋 2149 Problem D [手 ...

  3. 手速太慢QAQ

    显然D是个细节题,但是还剩1h时看眼榜还没人过EF,只好冷静写D,大概思路是任何时候如果min(n,m)<=2,max(n,m)<=4暴搜,否则直接贪心是很对的,即第一步让S.T长度平均化 ...

  4. JQuery测手速小游戏-遁地龙卷风

    (-1)写在前面 我用的chrome49,jquery3.0,我得到过399分,信不信由你. (1)设计思路 两个p元素放在div里,每个p元素的高度和宽度都和div一样,当鼠标放在div上时,第一个 ...

  5. Canvas之打字机游戏

    最近针对粒子化作了一点点的探究,决定结合其做个小游戏,于是这个简单的打字游戏出世了. 试玩地址:Typewriter game  仅在chrome下测试,请谨慎使用其他浏览器(特别是ff):加载速度有 ...

  6. 学就完事了!万星项目带你做 3D 游戏——GitHub 热点速览 v.21.18

    本文首发于「HelloGitHub」微信公众号,搜索「HelloGitHub」点击关注解锁更多宝藏! 作者:HelloGitHub-小鱼干 新手开始学习的时候,都会遇到一个问题:如何开始学 xx?Se ...

  7. ACM: Gym 101047B Renzo and the palindromic decoration - 手速题

     Gym 101047B  Renzo and the palindromic decoration Time Limit:2000MS     Memory Limit:65536KB     64 ...

  8. ACM: FZU 2102 Solve equation - 手速题

     FZU 2102   Solve equation Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...

  9. 51Nod 欢乐手速场1 C 开心的小Q[莫比乌斯函数]

    开心的小Q tangjz (命题人) quailty (测试)   基准时间限制:1 秒 空间限制:131072 KB 分值: 80 如果一个数字存在一个约数是完全平方数,那么小Q就认为这个数是有趣的 ...

随机推荐

  1. druid连接池异常

    在从excel导入10W条数据到mysql中时,运行一段时间就会抛这个异常,连接池问题 org.springframework.transaction.CannotCreateTransactionE ...

  2. SQL Server(三)——增、删、改、查

    一.数据库操作 create database 数据库名称 ——创建drop database 数据库名称 ——删除use 数据库名称 ——使用go 两条SQL语句之间分隔 二.表的操作 create ...

  3. maven-shade-plugin

    <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> ...

  4. EF深入系列--细节

    1.在调试的时候,查看EF生成的SQL语句 在Context类的构造函数中添加以下代码,就可以在调试的时候在[输出]窗口中看到SQL语句 this.Database.Log = s => Sys ...

  5. HTML5游戏开发引擎,初识CreateJS

    CreateJS为CreateJS库,可以说是一款为HTML5游戏开发的引擎.打造 HTML5 游戏,构建新游戏,提供构建最新 HTML5 的技术.你可以通过这个网站学习如何构建跨平台和跨终端游戏.这 ...

  6. 安装 gcc-c++ 时报错和原有 gcc 版本冲突

    Centos 6.7 安装 gcc-c++时报下面的错误: Resolving Dependencies --> Running transaction check ---> :-.el6 ...

  7. ES6块级作用域及新变量声明(let)

    很多语言中都有块级作用域,但JS没有,它使用var声明变量,以function来划分作用域,大括号“{}” 却限定不了var的作用域.用var声明的变量具有变量提升(declaration hoist ...

  8. Mysql中使用find_in_set函数查找字符串

    mysql有个表的字段的存储是以逗号分隔的,如domain字段login.s01.yy.com,s01.yy.com,s02.yy.com.现在要查找s01.yy.com这个.我们用like查找好像不 ...

  9. Docker+OpenvSwitch搭建VxLAN实验环境

    一.概述                                                    1.环境:我这里是2台linux机器(host1和host2),发行版是kali2.0, ...

  10. Java报表FineReport在医院院长查询分析系统中有什么用

    1.医院院长查询系统的价值 目前,大中型医院的信息处理正从传统手工方式飞速向电脑信息化建设方案转变,一个大中型医院担负着繁重的医疗和科研任务,以及繁杂的事务性工作,院长必须时刻与各科室保持密切的连续, ...