好久没写博客了,因为过年后一直在学游戏制作方面的知识。学得差不多后又花了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的更多相关文章

  1. 用canvas制作酷炫射击游戏--part3

    今天介绍下 游戏中的sprite模块,也就是构建玩家及怪物的模块.有了这个模块,就可以在咱们的游戏里加入人物了. 想必用过css的朋友都知道sprite,一种将需要加载的图片拼接在一张图里以减少请求的 ...

  2. 用canvas制作酷炫射击游戏--part2

    今天这一部分主要讲游戏的实现原理与游戏循环的代码实现. 先说原理,大家都看过动画吧.在我看来,游戏就是玩家能人为控制动画剧情发展方向的动画.所以,我们的游戏引擎其实说白了就是个动画引擎再加上鼠标事件. ...

  3. html5+Canvas实现酷炫的小游戏

    最近除了做业务,也在尝试学习h5和移动端,在这个过程中,学到了很多,利用h5和canvas做了一个爱心鱼的小游戏.点这里去玩一下 PS: 貌似有点闪屏,亲测多刷新两下就好了==.代码在本地跑都不会闪, ...

  4. 怎样用HTML5 Canvas制作一个简单的游戏

    原文连接: How To Make A Simple HTML5 Canvas Game 自从我制作了一些HTML5游戏(例如Crypt Run)后,我收到了很多建议,要求我写一篇关于怎样利用HTML ...

  5. [译]怎样用HTML5 Canvas制作一个简单的游戏

    这是我翻译自LostDecadeGames主页的一篇文章,原文地址:How To Make A Simple HTML5 Canvas Game. 下面是正文: 自从我制作了一些HTML5游戏(例如C ...

  6. canvas实现酷炫气泡效果

    canvas实现动画主要是靠设置定时器(setinterval())和定时清除画布里的元素实现,canvas动画上手很简单,今天可以自己动手来实现一个酷炫气泡效果. 气泡炸裂效果(类似水面波纹) 代码 ...

  7. 教你使用Python制作酷炫二维码

    这篇文章讲的是如何利用python制作狂拽酷炫吊炸天的二维码,非常有趣哦! 可能你见过的二维码大多长这样: 普普通通,平平凡凡,没什么特色... 但,如果二维码长这样呢! 或者 这样! 是不是炒鸡好看 ...

  8. Unity3D游戏开发从零单排(三) - 极速创建狂拽酷炫的游戏地形

    提要 在Unity工作流程内,地形是一个必不可少的重要元素.不论是游戏或虚拟现实都会使用到各种类型的地形效果,在这个教学中我们须要了解到地形的制作基本概念与,当中对于Unity的地形操作部分须要大量的 ...

  9. 腾讯AlloyTeam正式发布pasition - 制作酷炫Path过渡动画

    pasition Pasition - Path Transition with little JS code, render to anywhere - 超小尺寸的Path过渡动画类库 Github ...

随机推荐

  1. hashchange事件的认识

    写过路由的同学都知道其原理是通过URL的改变,由导航信息来决定页面信息...表述的好像有点不准确 这么说吧,只要URL参数列表只要变化就会调用hashchange事件,此时event对象包括oldUR ...

  2. ios第三方库和工具类

    下面的是使用苹果电脑后,自己的一下积累吧.有好用的第三方库和工具,肯定会第一时间和大家分享的. 自己平时写的一些分类和工具库 SSTools已经在github上面开始更新了,欢迎大家来指正和补充 一. ...

  3. [题解]UVa 11082 Matrix Decompressing

    开始眨眼一看怎么也不像是网络流的一道题,再怎么看也觉得像是搜索.不过虽然这道题数据范围很小,但也不至于搜索也是可以随随便便就可以过的.(不过这道题应该是special judge,因为一题可以多解而且 ...

  4. 技术英文单词贴--M

    M mention 提到,提及,说起 merge 合并,融入 multiple 多重的,复杂的

  5. C# winform key value型数据如何绑定ComBox (hashtable,keyvaluepair,dictionary )

    cbUserAgent是一个combox ArrayList list = new ArrayList(); Dictionary<string, string> useragents = ...

  6. android百度地图相关

    1.如果有报错Multiple dex files define Lcom/baidu/android/bbalbs/common/a/a一般是有重复jar包.    2.百度地图开发调试的应用程序正 ...

  7. 2-3. Using Type Deduction

    Type Deduction 发生在编译时期 可以对一般类型,自定义类型进行类型自推导 下面有两个例子: 1. Using auto with a class #include <iostrea ...

  8. Daily Scrum 12.14

    今日完成任务: 优化了问题页面显示问题的算法:两名开发人员有CCF考试,今天没有完成任务,任务顺延到明天. 明日任务: 黎柱金 解决资源显示全部为同一个PDF的BUG 晏旭瑞 资源搜索问题 孙思权 做 ...

  9. Java初学随笔

    背景 狡兔三窟,在使用了近7-8年的C#后,考虑到云化的到来,还是要面向更多的语言与技术,近期决定学习scala,先从Java为跳板,最后达到学会并熟练 使用scala的目的. <核心技术> ...

  10. sed笔记

    sed是stream editor缩写,表示流编辑器,它是一款文本处理工具,可以配合正则表达式进行文本替换. 1.使用正则表达式匹配并进行文本中的字符串替换 *使用-i选项可以直接将替换结果应用到源文 ...