一个js小游戏----总结
花了大概一天左右的功夫实现了一个js小游戏的基本功能,类似于“雷电”那样的小游戏,实现了随即怪物发生器,碰撞检测,运动等等都实现了,下一个功能是子弹轨迹,还有其他一些扩展功能,没有用库,也没有用webGl之类的,单纯的逻辑+对DOM的操作,算是一次试手吧,之所以没有继续去完善,是因为想要整合一下,各个模块要更清晰,大体的设计是按MVC来的,但是对控制器那一块还不满意,设计过程中比较得意的是碰撞检测吧,因为我用了一个数组来维护怪物的生灭,怪物产生则数组push,怪物消失则用splice来从数组中删除,要注意要用splice而不要用delete,有些人可能图省事用delete,那就错了,会造成稀疏数组,浪费很多性能,而且数组的长度也是有限的,数组太长很吃性能。每一个怪物都是一个对象,带有id(total),表示它是从游戏开始至今的第几只怪,这个id也就是dom中怪物元素的Id,方便我们使用document.getElementById来选择它然后控制,操作dom应该只在更新视图的时候操作,可是碰撞检测也需要怪物的位置,所以这个对象中还维护有怪物的横纵坐标,这样可以使得逻辑更清晰。接着就是运动,dom中的运动就是不停的改变像素点,这里我用setInterval来进行的,一共有两个set,分别对应怪物的移动和怪物的产生。
原理大概就是这样。下面说说这里有一些坑,当然,首先要说的是,你操作dom时用document.getElementById("").style.cssText得到的是一个类似于“192px“的字符串,而你要修改的是192,然后还要把它改成字符串重新赋值回去,来达到修改的目的,当然,你也可以传个数字回去,浏览器会自动帮你改成字符串,不过这不是很一定,例如你使用document.getElementById("").style.top,这就会出现错误。
还有这只是个小游戏,所以我样式表直接写在style标签之间的,如果你使用link去的话那么修改样式则要注意修改外部样式表的js函数在各个浏览器并不一致,我会在随后的库里面封装。
关于上面刚刚说的将”192px“这个字符串变为数字,除了用数组的方法其实使用parseInt最好了,以前只把parseInt做进制转换,这种用法还是最近刚注意到
在js改变或者生成dom元素时,如果是块级元素要特别注意它的position,设置错了,可能视图看起来会很异常
下面说说要改进的地方,第一个,就是要更加模块化
第二,控制移动在例如前进突然向上,这个切换不是很流畅,这个暂时还没有什么好的思路去改进
第三,试着考虑代码的复用
第四,增加功能
一个js小游戏----总结的更多相关文章
- 用Python设计一个经典小游戏
这是关于Python的第9篇文章,介绍如何用Python设计一个经典小游戏:猜大小. 在这个游戏中,将用到前面我介绍过的所有内容:变量的使用.参数传递.函数设计.条件控制和循环等,做个整体的总结和复习 ...
- 如何在CentOS上安装一个2048小游戏
如何在centos上安装一个2048小游戏 最近在学习CentOS系统,就琢磨着玩点什么,然后我看到有人在玩2048小游戏,所有我就在想,为啥不装一个2048小游戏搞一下嘞,于是乎,我就开始工作啦 由 ...
- 制作一个 JavaScript 小游戏
简评: 作者学习了编程两个月,边学边做了一个 JavaScript 小游戏,在文中总结了自己在这个过程中的一些体会,希望能给其他初学者一些帮助. 对于很多想学编程但一直没下定决心的同学来说,最大的问题 ...
- “倔驴”一个h5小游戏的实现和思考(码易直播)——总结与整理
3月23日晚上8点半(中国队火拼韩国的时候),做了一期直播分享.15年做的一个小游戏,把核心代码拿出来,现场讲写了一遍,结果后面翻车了,写错了两个地方,导致运行效果有点问题,直播边说话边写代码还真不一 ...
- js小游戏:五子棋
使用纯js的小游戏,五子棋 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 50行代码写的一个插件,破解一个H5小游戏
小游戏链接:测测你的眼睛对色差的辨识度http://www.webhek.com/post/color-test.html?from=timeline 废话不多说,先放代码: window.onloa ...
- JS小游戏-蓝色拼图
// a[href=#viewSource]"); //查看源代码标签 viewSourceArr.attr("title", "查看源代码"); v ...
- JS小游戏:贪吃蛇(附源码)
javascript小游戏:贪吃蛇 此小游戏采用的是面向对象的思想,将蛇,食物,和游戏引擎分为3个对象来写的. 为方便下载,我把js写在了html中, 源码中暂时没有注释,等有空我在添加点注释吧. 游 ...
- js小游戏---智力游戏
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD ...
随机推荐
- android 股票K线图
现在在手上的是一个证券资讯类型的app,其中有涉及到股票行情界面,行情中有K线图等,看到网上很多人在求这方面的资料,所以我特地写了一个demo在此处给大家分享一下. 下面是做出来的效果图: 这个 界面 ...
- java实现Quartz定时功能
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/49975443 最近在学习定时相关的技术.当前,几乎所有的互 ...
- Hbase问题
Q: .meta.和root表是否要分裂? A: meta表和root表不会分裂,代码中有所判断. Q: 如果不分裂,那么都只有1个region? A: ... (查看代码后)A: meta和root ...
- DB Query Analyzer has been downloaded more than 100,000 times
DB Query Analyzer has been downloaded more than 100,000 times Today I am very ...
- LeetCode(64)- Min Stack
题目: Design a stack that supports push, pop, top, and retrieving the minimum element in constant time ...
- javascript、ruby和C性能一瞥(2)
好吧,最后让我们用C来实现,看看再能榨取多少性能.注意我没有改变算法,C的算法和之前的3种都是基本相同的: #include <stdio.h> #include <stdlib.h ...
- Github上的原文XMPP环境搭建步骤,英语能力差不多的可以看看
Getting started using XMPPFramework on iOS Here is a post on StackOverflow describing how to install ...
- 用js来实现那些数据结构15(图01)
其实在上一篇介绍树结构的时候,已经有了一些算法的相关内容介入.而在图这种数据结构下,会有更多有关图的算法,比如广度优先搜索,深度优先搜索最短路径算法等等.这是我们要介绍的最后一个数据结构.同时也是本系 ...
- jquery作业
1. 通过jquery动态的创建一个表格,随机生成(id自增,name随机2-3个中文汉字(10个姓,20个名字),age随机100以内整数)大于50小于100行的数据(用户对象:id,name,ag ...
- 手把手教你用Jenkins自动发布dotnet core程序
Jenkins部分 首先,我们要有个Jenkins咯,下载链接:https://jenkins.io/download/ 我们安装官网教程安装好jenkins,安装教程略.... 嗯?不是说好手把手么 ...