前言

  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. Maven基础使用

    常用命令 mvn clean:清除maven的编译结果 mvn compile:编译 mvn package:编译.打包 mvn install:编译.打包.部署 –DskipTests:编译测试用例 ...

  2. 自定义日志阅读器——包括了一个load取Tomcat日志的分析器

    最近在写往公司产品里添加Tomcat适配器,以支持Tomcat.有一些功能需要摘取到Tomcat的部分日志.没有合适的工具,也不想去网上找了,就自己写了一个. 简单的画了一下设计方案: 下面直接上代码 ...

  3. Maven 打包涉及证书文件问题

    当使用maven-assembly-plugin或者maven-shade-plugin打包时,如果涉及到证书文件,一定设置过滤,否则证书文件会被做修改.报异常: java.io.IOExceptio ...

  4. windows下socket学习(一)

    关于socket的文章,园子里面有很多,其实无非就是 WSAStartup.socket.bind.listen.accept.recv.send(服务端),WSAStartup.socket.con ...

  5. IE6-9不支持Textarea的maxlength属性

    给textarea标签添加一个maxlength=200,测试工程师提bug说IE9没起作用.后一测试,发现IE10一下的浏览器均不支持 <textarea maxlength="20 ...

  6. devtmpfs文件系统创建设备节点

    分类: LINUX 原文地址:devtmpfs文件系统创建设备节点 作者:wangbaolin719 http://blog.chinaunix.net/uid-27097876-id-4334356 ...

  7. JQuery入门——进度条

    越来越觉得常规javascript已经跟不上节奏了,打算学点进阶的,从JQuery学起. JQuery是一个Javascript库,可以从JQuery.com下载,放到本地,用 <script ...

  8. MySQL Database on Azure 参数设置

    在使用MySQL过程中,经常会根据需要对MySQL的参数进行一些设置和调整.作为PaaS版本的MySQL,MySQL Database on Azure在参数设置方面有一些限制,客户不能像使用on-p ...

  9. 一个优秀的Unity3d开发者必备的几种设计模式

    Unity脚本编程 众所周知,unity的编程属于脚本化,脚本没有一个具体的概念跟架构, 导致在项目过程中,经常出现哪里需要实现什么功能,就随便添加脚本, 结果,就造成了一片混乱,不好管理. 更有甚者 ...

  10. Linux混杂设备驱动学习

    Linux混杂设备是字符设备的一类,主要是混杂设备拥有相同的主设备号(10),但是次设备号是不同的.所有的混杂设备行程一个链表,对设备访问时内核更据次设备号查找到相应的混杂设备. 混杂设备用struc ...