如何利用JavaScript编写一个格斗小游戏


Posted in Javascript onJanuary 06, 2021

拖延症晚期的我原本计划趁着周末写个年终总结,但是一直没有什么思路,想来想去也没想到要写啥就胡乱写了这么一个小东西。

一直比较痴迷游戏行业,可能我不太适合做前端,应该去学C++....

如何利用JavaScript编写一个格斗小游戏

首先当然是选择一张背景图,作为整个场景中的地图,而且要大要高清。布局到页面中。

如何利用JavaScript编写一个格斗小游戏

然后通过可视区值展示这张图片的一小部分。我这里用的是宽600,高420的,超出直接隐藏掉。

width: 600px;
height: 420px;

如何利用JavaScript编写一个格斗小游戏

这样一个简单的场景就写好了,接着我们需要在这个场景中加入我们的人物。也就是游戏中的角色。不过游戏贴图实在是太难了,我也没有时间自己去设计,所以直接在网上找了火柴人的gif好像是DNF的技能图,通过PS的处理,截取其中的几个重要动作,加入的到页面中。

如何利用JavaScript编写一个格斗小游戏

现在角色有了,地图也有了,我们应该让人物动起来了,我的做法是让人物固定在窗口的中心位置,当人物移动的时候通过移动背景来让人物看起来有动的效果。

所以我这里在监听键盘事件的时候做了两件事,第一是更换人物的贴图,让人物有动起来的姿势,第二是改变背景图的位置,看起来确实就是在跑。

如何利用JavaScript编写一个格斗小游戏

import Scene from './components/Scene';
import Games from './components/Games';
import Person from './components/Person';

const direct = { // 有效按键
 87: 'up',
 65: 'left',
 83: 'down',
 68: 'right',
 74: 'j',
 75: 'k',
 76: 'l',
 13: 'enter',
 27: 'esc'
}

const keys = []; // 当前按键

// 初始化窗口
const App = new Games();
const client = App.getEle();
// 初始化场景, 场景要放在窗口中
const scene = new Scene(bgi, client);
// 初始化人物,人物也要放在窗口中
const person = new Person({
 name: '隐冬',
 level: 1,
}, client)

// 监听按键
window.addEventListener('keydown', (e) => {
 const key = direct[e.keyCode];
 if (!keys.includes(key) && key) { // 有效按键
 keys.push(key);
 scene.move(keys); // 执行场景变换
 person.action(keys); // 切换人物动作
 }
})
// 监听按键
window.addEventListener('keyup', (e) => {
 const key = direct[e.keyCode];
 const idx = keys.indexOf(key);
 if (idx >= 0 && key) { // 有效按键
 keys.splice(idx, 1);
 scene.move(keys); // 执行场景变换
 person.action(keys); // 切换人物动作
 }
})

如何利用JavaScript编写一个格斗小游戏

然后这里加入血槽等级,人物名称,血量值。

如何利用JavaScript编写一个格斗小游戏

人物这里是一个class类,可以通过实例化的方式创建很多个人物,然后让他们满屏幕的乱跑,我这里通过实例化的时候判断人物是否是机器人,通过随机数的方式定义人物自己的动作。

如何利用JavaScript编写一个格斗小游戏

技能就比较难看了,也是网上随便找的效果图,看淡了,有就行要求别那么高。

如何利用JavaScript编写一个格斗小游戏

打斗也很简单,就是角色在放技能的时候计算周边其他的角色的距离,从而判定是否击中,然后让血量降低。公告系统,这些都有写,不过定时器太多造成了内存泄露我还得想想怎么优化一下。

如何利用JavaScript编写一个格斗小游戏

github地址分享给大家,感兴趣的同学可以自己写写,还挺有意思的,真的是越写越停不下来,我这是什么毛病。

自取链接

到此这篇关于如何利用JavaScript编写一个格斗小游戏的文章就介绍到这了,更多相关JavaScript写格斗小游戏内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
解决FireFox下[使用event很麻烦]的问题
Nov 26 Javascript
jquery+json 通用三级联动下拉列表
Apr 19 Javascript
基于Jquery的文字自动截取(提供源代码)
Aug 09 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
Nov 12 Javascript
JavaScript 获取任一float型小数点后两位的小数
Jun 30 Javascript
微信小程序 Canvas增强组件实例详解及源码分享
Jan 04 Javascript
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 jQuery
React 父子组件通信的实现方法
Dec 05 Javascript
JS实现按比例缩小图片宽高
Aug 24 Javascript
vue实现单一筛选、删除筛选条件
Oct 26 Javascript
夯基础之手撕javascript继承详解
Nov 09 Javascript
JS中如何优雅的使用async await详解
Oct 05 Javascript
vuex的使用步骤
Jan 06 #Vue.js
一篇文章看懂JavaScript中的回调
Jan 05 #Javascript
原生js中运算符及流程控制示例详解
Jan 05 #Javascript
vue3.0中友好使用antdv示例详解
Jan 05 #Vue.js
基于Vue2实现移动端图片上传、压缩、拖拽排序、拖拽删除功能
Jan 05 #Vue.js
在Angular项目使用socket.io实现通信的方法
Jan 05 #Javascript
利用JavaScript为句子加标题的3种方法示例
Jan 05 #Javascript
You might like
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
使用PHP编写发红包程序
2015/07/22 PHP
php基于Fleaphp框架实现cvs数据导入MySQL的方法
2016/02/23 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
js+html5实现canvas绘制网页时钟的方法
2016/05/21 Javascript
jquery html5 视频播放控制代码
2016/11/06 Javascript
在JS中如何把毫秒转换成规定的日期时间格式实例
2017/05/11 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
JavaScript定义函数_动力节点Java学院整理
2017/06/27 Javascript
Angular 1.x个人使用的经验小结
2017/07/19 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
Vue 仿QQ左滑删除组件功能
2018/03/12 Javascript
三分钟教你用Node做一个微信哄女友(基友)神器(面向小白)
2019/06/21 Javascript
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
JS如何在不同平台实现多语言方式
2020/07/16 Javascript
VUE UPLOAD 通过ACTION返回上传结果操作
2020/09/07 Javascript
python 基础学习第二弹 类属性和实例属性
2012/08/27 Python
使用Python的urllib和urllib2模块制作爬虫的实例教程
2016/01/20 Python
python中print的不换行即时输出的快速解决方法
2016/07/20 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
Python 类的特殊成员解析
2018/06/20 Python
对python sklearn one-hot编码详解
2018/07/10 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
深入理解Python 多线程
2020/06/16 Python
python 如何实现遗传算法
2020/09/22 Python
python编程的核心知识点总结
2021/02/08 Python
纯CSS3实现漂亮的input输入框动画样式库(Text input love)
2018/12/29 HTML / CSS
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
总经理秘书工作职责
2013/12/26 职场文书
交通事故检查书范文
2014/01/30 职场文书
机关门卫制度
2014/02/01 职场文书
大学生先进事迹材料
2014/02/16 职场文书
MySQL之DML语言
2021/04/05 MySQL