用canvas制作酷炫射击游戏--part1

好久没写博客了,因为过年后一直在学游戏制作方面的知识。学得差不多后又花了3个月时间做了个作品出来,现在正拿着这个作品找工作。
作品地址:https://betasu.github.io/Crimonland/new/
这个游戏差不多有3000行代码,实现了基本的游戏引擎、碰撞检测并基于canvas绘制。等回过头来看自己前面写的很多东西已经记不清了,为了巩固一下学过的知识并给有需要的朋友一些帮助,在此记录下整个游戏的制作过程。
接下来的讲解将围绕源码进行,需要的朋友可以自行下载并跟着我的步骤一步步来。今天开篇主要介绍下源码文件的构成,下一篇将结合文件讲讲游戏的实现原理
游戏源码:https://github.com/BetaSu/Crimonland/tree/master/new
整个程序一共包括4个文件夹和一个页面。
images 文件夹用于存储游戏过程中要用到的图片,值得一提的是其中的sprite.png文件,这个文件储存了所有人物以及怪物的每一帧动作(术语叫“精灵表”),也就是说怪物每走一步的动作都来源于这个文件。然后每个动作相对于sprite.png的位置坐标保存在js文件夹下的data.js文件。
这就是精灵表

sounds 文件夹用于存储游戏的音效。
css 文件夹存储所有样式。
index.html不用多说。
js文件夹重点说一下,这其中data.js主要存储游戏的一些信息以及动画的坐标。
dom.js主要处理dom操作。
game-loop.js 用一个函数封装了游戏循环,也就是说每次调用这个函数就会重启一次新游戏。为什么要把整个游戏过程封装到一个函数里?这是因为你必须保证每次开始新的游戏所有东西都是新的(玩家的血量得是满的,不能游戏刚开始玩家就残血是吧)。
game-engine.js 是整个游戏的心脏----引擎。他构建了整个游戏的底层架构以及所有游戏都可以复用的部分。也就是说这个js文件配合不同种类的game-loop.js可以实现不同类型的游戏(射击类,棋牌类,rpg······)。
简单的介绍完文件构成,下一篇将会介绍制作游戏的基本原理。
用canvas制作酷炫射击游戏--part1的更多相关文章
- 用canvas制作酷炫射击游戏--part3
今天介绍下 游戏中的sprite模块,也就是构建玩家及怪物的模块.有了这个模块,就可以在咱们的游戏里加入人物了. 想必用过css的朋友都知道sprite,一种将需要加载的图片拼接在一张图里以减少请求的 ...
- 用canvas制作酷炫射击游戏--part2
今天这一部分主要讲游戏的实现原理与游戏循环的代码实现. 先说原理,大家都看过动画吧.在我看来,游戏就是玩家能人为控制动画剧情发展方向的动画.所以,我们的游戏引擎其实说白了就是个动画引擎再加上鼠标事件. ...
- html5+Canvas实现酷炫的小游戏
最近除了做业务,也在尝试学习h5和移动端,在这个过程中,学到了很多,利用h5和canvas做了一个爱心鱼的小游戏.点这里去玩一下 PS: 貌似有点闪屏,亲测多刷新两下就好了==.代码在本地跑都不会闪, ...
- 怎样用HTML5 Canvas制作一个简单的游戏
原文连接: How To Make A Simple HTML5 Canvas Game 自从我制作了一些HTML5游戏(例如Crypt Run)后,我收到了很多建议,要求我写一篇关于怎样利用HTML ...
- [译]怎样用HTML5 Canvas制作一个简单的游戏
这是我翻译自LostDecadeGames主页的一篇文章,原文地址:How To Make A Simple HTML5 Canvas Game. 下面是正文: 自从我制作了一些HTML5游戏(例如C ...
- canvas实现酷炫气泡效果
canvas实现动画主要是靠设置定时器(setinterval())和定时清除画布里的元素实现,canvas动画上手很简单,今天可以自己动手来实现一个酷炫气泡效果. 气泡炸裂效果(类似水面波纹) 代码 ...
- 教你使用Python制作酷炫二维码
这篇文章讲的是如何利用python制作狂拽酷炫吊炸天的二维码,非常有趣哦! 可能你见过的二维码大多长这样: 普普通通,平平凡凡,没什么特色... 但,如果二维码长这样呢! 或者 这样! 是不是炒鸡好看 ...
- Unity3D游戏开发从零单排(三) - 极速创建狂拽酷炫的游戏地形
提要 在Unity工作流程内,地形是一个必不可少的重要元素.不论是游戏或虚拟现实都会使用到各种类型的地形效果,在这个教学中我们须要了解到地形的制作基本概念与,当中对于Unity的地形操作部分须要大量的 ...
- 腾讯AlloyTeam正式发布pasition - 制作酷炫Path过渡动画
pasition Pasition - Path Transition with little JS code, render to anywhere - 超小尺寸的Path过渡动画类库 Github ...
随机推荐
- form表单提交路径action="" 时的一种特殊情况
一.说明: 当页面的form表达的action=""时,表示表单会提交到当前页面,但是如果当前页面的URL里已经带有一个参数了,每次提交表达时这个参数依然存在,不管form表单里有 ...
- div水平垂直居中
我们平时常用的定高,top:50%:left:50%和margin-left负一半宽度margin-top负一半高度的居中方式暂不考虑,因为这种方式大家都会. 第一种绝对定位(absolute cen ...
- hihocoder SAM基础概念
后缀自动机一·基本概念 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi:今天我们来学习一个强大的字符串处理工具:后缀自动机(Suffix Automaton,简称 ...
- Python:线程
Python中创建线程有两种方式:函数或者用类来创建线程对象. 函数式:调用 _thread 模块中的start_new_thread()函数来产生新线程. 类:创建threading.Thread的 ...
- 关于python的requests库抓取源文件中文乱码的情况
import requests html=requests.get('http://www.12306.cn/mormhweb/') print html.text 刚开始是这么写的,运行时一直弹出错 ...
- 刨一刨内核container_of()的设计精髓
新年第一帖,总得拿出点干货才行,虽然这篇水分还是有点大,大家可以晒干了温水冲服.这段时间一直在整理内核学习的基础知识点,期间又碰到了container_of()这个宏,当然还包括一个叫做offseto ...
- vim的撤销和恢复操作以及匹配当前单词操作
今天顺便看了一下vim的一点命令,记录一下 1.撤销上一次操作和恢复上一次操作: u → undo <C-r> → redo 2.搜索上一个单词和下一个单词 * 和 #: 匹配光标当前所在 ...
- 不一样的角度 解读微信小程序
不一样的角度 解读微信小程序 七月在夏天· 2 天前 前段时间看完了雨果奖中短篇获奖小说<北京折叠>.很有意思的是,张小龙最近也要把应用折叠到微信里,这些应用被他称为:小程序. 含着金钥匙 ...
- ServiceStack.OrmLite中的一些"陷阱"(3)
前文说到如果使用多数据库(不同SQL方言)时要如何开发?其实前文(第二篇)也有“透露”到.就是直接使用库提供的OrmLiteConnection 及OrmLiteConnectionFactory(I ...
- Unity 编辑器的 界面布局 保存方法
在软件界面的右上角(关闭按钮的下方),点击 layout (界面)的下拉箭头. 弹出选项中的 save layout....(保存界面选项),输入命名,就可以生成这个界面的布局. (软件本身也有 ...