用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 ...
随机推荐
- 在项目中添加ReactiveCocoa #安装与配置
这是对官方教程的补充 To add RAC to your application: Add the ReactiveCocoa repository as a submodule of your a ...
- php emoji处理微信表情
使用 https://github.com/iamcal/php-emoji 添加下面的函数到代码中 function utf8_bytes($cp){ if ($cp > 0x10000){ ...
- 关于Ajax load页面中js部分$(function(){})的执行顺序
<script type="text/javascript"> console.error(11111); $(function(){ console.error(22 ...
- h5弹框去掉ip地址
<script> window.alert = function(name){ var iframe = document.createElement("IFRAME" ...
- 【python】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
# encoding:utf-8 # p001_1234threeNums.py def threeNums(): '''题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多 ...
- vertx简单客户端创建
import java.util.HashMap;import java.util.Map; import com.yunva.vertx.test.vertproject.util.JsonUtil ...
- 如何让电脑公司Win7系统自动关闭停止响应的程序
在注册表编辑器窗口左侧,依次展开HKEY_CURRENT_USER\ControlPanel\Desktop,选中Desktop,在右边的窗口中选择AutoEndTasks,双击打开AutoEndTa ...
- 数字与字母 随机数小demo
public String generateRandomId(){ String chars = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHI ...
- [C#.net] SendMessage
函数功能:该函数将指定的消息发送到一个或多个窗口.此函数为指定的窗口调用窗口程序,直到窗口程序处理完消息再返回.该函数是应用程序和应用程序之间进行消息传递的主要手段之一. 函数原型:LRESU ...
- android六大框架
-LinearLayout线性布局 垂直排序,每行仅包含一个界面元素 水平排序,每列仅包含一个界面元素 orientation,Layout-weight,Layout-margin(外边距,与屏幕) ...