分享几个原生javascript面向对象设计小游戏
一、序言
不知大家是不是和我一样,当初都有个梦想。学编程,就是想开发游戏。结果进入大学学习之后,才知道搞的是数据库应用程序开发!在此,本人就分享下业余时间做的几个小游戏吧!本打算想用winform或wpf做,可又考虑到运行需要.net环境,所以选择了js,为此特意去学了html5中canvas绘图!先上预览吧:(浏览器需支持html5,英文状态下输入法)
二、原理简单说明-需理解js基于面向对象编程(context:绘图上下文,定时器刷新重绘)
1、贪吃蛇:
绘制地图(GameController控制器类):(现在明白了,当时学hello world的时候,老师让我们控制台输出三角形,长方形等的用意了。没想到这里就用上了)
drawMap: function() {
for (var i = 0; i < 41; i++) {
for (var j = 0; j < 41; j++) {
this.context.lineWidth = 1;
this.context.strokeStyle = "#222";
this.context.strokeRect(i * 20, j * 20, 20, 20);
}
}
},
Parent类:Snake,Food的基类,包含他们的共同属性;继承主要使用call()/apply()这两个方法,其实就是改变Parent函数当中this的作用域,动态添加属性。
Snake类:把贪吃蛇的每一节看成一个Snake实例,保存在GameController实例的snakes数组中,便于管理。
贪吃蛇移动实现(GameController类refresh方法里面):从最后一个开始遍历数组snakes,第m节的坐标等于第m-1节的坐标,第一节移动;
for (var m = this.snakes.length - 1; m >= 0; m--) {
if (m === 0) {
this.checkSnakeHitFood(this.snakes[m].run());
} else {
this.snakes[m].x = this.snakes[m - 1].x;
this.snakes[m].y = this.snakes[m - 1].y;
this.snakes[m].direction = this.snakes[m - 1].direction;
this.checkSnakeHitFood(this.snakes[m].draw());
}
}
贪吃蛇吃到食物:碰撞检测,遍历判断每一节与食物的x,y坐标。
2、坦克:(和贪吃蛇差不多,都是绘图,刷新重绘)
GameController:游戏控制类,主要类,游戏碰撞,定时重绘等等。
Bullet:子弹类。
Bomb:炸弹类。
Tank:Hero,Enemy的基类,包含他们的共同属性;继承主要使用call()/apply()这两个方法。
Hero:英雄类,(绘图,移动根据四个方向分别改变x,y坐标)
Enemy:敌人类
3、打字游戏:(原理也差不多,只是逻辑稍复杂一点,这里只能做一个简单介绍了)
字母产生(Math.random() * (上限 - 下限+ 1) + 下限,产生{上限,下限}之间的一个随机数):刚好英文a-z对应的ascii码在{64,91}之间,
使用Math.random() * (64 - 91 + 1) + 91得到一个随机ascii码值,再利用String.fromCharCode(ascii码)(js爱好者,这个方法不知道的有没有?)获取对应的字母;
子弹跟踪(如下图):通过A,B在水平,垂直方向的距离计算出夹角,再根据速度和夹角分别计算A在x,y轴移动的坐标。(三角函数计算)

三:结束语
更具体的说明,表达不出来了,这大概就是只可意会不可言传吧!感兴趣的可以私下交流,共同进步!源码下载:html5games。
分享几个原生javascript面向对象设计小游戏的更多相关文章
- JavaScript面向对象编程小游戏---贪吃蛇
1 面向对象编程思想在程序项目中有着非常明显的优势: 1- 1 代码可读性高.由于继承的存在,即使改变需求,那么维护也只是在局部模块 1- 2 维护非常方便并且成本较低. 2 这个demo是采用了 ...
- 用原生javascript模拟经典FC游戏公路争霸
#用原生javascript模拟经典FC游戏公路争霸 前几天看了园子里面的随笔 [原生javascript开发仿微信打飞机小游戏](http://www.cnblogs.com/Mr-Nobody/p ...
- 分享10个原生JavaScript技巧
首先在这里要非常感谢无私分享作品的网友们,这些代码片段主要由网友们平时分享的作品代码里面和经常去逛网站然后查看源文件收集到的.把平时网站上常用的一些实用功能代码片段通通收集起来,方便网友们学习使用,利 ...
- JQuery&原生js ——实现剪刀石头布小游戏
前言 jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的JavaScript代码库( 或JavaScript框架).jQuery设计的宗旨是“write L ...
- HTML+CSS+JavaScript实现2048小游戏
相信很多人都玩过2048小游戏,规则易懂.操作简单,我曾经也“痴迷”于它,不到2048不罢休,最高成绩合成了4096,现在正好拿它来练练手. 我对于2048的实现,除了使用了现有2048小游戏的配色, ...
- JavaScript版拼图小游戏
慕课网上准备开个新的jQuery教程,花了3天空闲时间写了一个Javascript版的拼图小游戏,作为新教程配套的分析案例 拼图游戏网上有不少的实现案例了,但是此源码是我自己的实现,所以不做太多的比较 ...
- Javascript贪食蛇小游戏
试玩:http://hovertree.com/game/9/ 贪吃蛇是一种风靡全球的小游戏,就是一条小蛇,不停地在屏幕上游走,吃各个方向出现的蛋,越吃越长.只要蛇头碰到屏幕四周,或者碰到自己的身子, ...
- 一个简单用原生js实现的小游戏----FlappyBird
这是一个特别简单的用原生js实现的一个小鸟游戏,比较简单,适合新手练习 这是html结构 <!DOCTYPE html><html lang="en">&l ...
- 原生js做h5小游戏之打砖块
前言 首先,先说明一下做这个系列的目的:其实主要源于博主希望熟练使用 canvas 的相关 api ,同时对小游戏的实现逻辑比较感兴趣,所以希望通过这一系列的小游戏来提升自身编程能力:关于 es6 语 ...
随机推荐
- javascript笔记:javascript的关键所在---作用域链
javascript里的作用域是理解javascript语言的关键所在,正确使用作用域原理才能写出高效的javascript代码,很多javascript技巧也是围绕作用域进行的,今天我要总结一下关于 ...
- 辛巴学院-Unity-剑英陪你零基础学c#系列(一)Hello World
这不是草稿 辛巴学院:正大光明的不务正业.辛巴学院:攻城狮与荣耀石. 剑英陪你系列又来啦.剑英是一个有大爱的人,热爱每一个程序员,尤其是年轻漂亮的女程序.最近组织朋友们玩了一次即兴团体诗创作,无论怎么 ...
- [MFC] 梳理一个简单的图片处理桌面软件中用到的MFC控件技巧
前言 前些天应好友之拖,帮忙设计一个简单的图像处理的小软件.朋友把核心算法封装好了,但是是用openCV类似于console的编程环境,要我在此基础上改成MFC桌面程序.下图是做成之后的效果: 我是 ...
- DDD~我们应该知道的Model,DomainModel和ViewModel
回到目录 图在前 目前项目中可能出现的三种Model模式,对于我们现在开发的一个项目,我觉得使用DDD的思想来设计模型比较清晰,使用DDD的思想把模型model分成了如下三种: 下面是我微博中的截 ...
- [Spring框架]Spring开发实例: XML+注解.
前言: 本文为自己学习Spring记录所用, 文章内容包括Spring的概述已经简单开发, 主要涉及IOC相关知识, 希望能够对新入门Spring的同学有帮助, 也希望大家一起讨论相关的知识. 一. ...
- 让AngularJS的$http 服务像jQuery.ajax()一样工作
让AngularJS的$http 服务像jQuery.ajax()一样工作 $http的post . 请求默认的content-Type=application/json . 提交的是json对象的字 ...
- poj3342Party at Hali-Bula(树形dp)
/* 树形dp! 判重思路: 当dp[v][0]==dp[v][1]时,很自然,flag[u][0]必然是有两种方案的.flag[u][1]则不然, 因为它只和dp[v][0]有关系.而若flag[v ...
- 邻接表无向图(一)之 C语言详解
本章介绍邻接表无向图.在"图的理论基础"中已经对图进行了理论介绍,这里就不再对图的概念进行重复说明了.和以往一样,本文会先给出C语言的实现:后续再分别给出C++和Java版本的实现 ...
- GitHub入门教程 Hello World for GitHub
Intro 1.简介 What is GitHub? 2.什么是github? Create a Reposi ...
- 转载--How to Install VMware Tools on CentOS 6.3
源地址:http://www.ehowstuff.com/how-to-install-vmware-tools-on-centos-6-3/ VMware Tools is a group of u ...