如何利用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 相关文章推荐
ASP.NET jQuery 实例15 通过控件CustomValidator验证CheckBoxList
Feb 03 Javascript
JS特殊函数(Function()构造函数、函数直接量)区别介绍
May 19 Javascript
Javascript实现滚动图片新闻的实例代码
Nov 27 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
May 23 Javascript
jQuery增加与删除table列的方法
Mar 01 Javascript
限制复选框最多选择项的实现代码
May 30 Javascript
jQuery Easyui datagrid editor为combobox时指定数据源实例
Dec 19 Javascript
浅谈Angular.js中使用$watch监听模型变化
Jan 10 Javascript
VUE使用vuex解决模块间传值问题的方法
Jun 01 Javascript
Angularjs实现数组随机排序的方法
Oct 02 Javascript
node.js制作一个简单的登录拦截器
Feb 10 Javascript
js重写alert事件(避免alert弹框标题出现网址)
Dec 04 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
PHP 分页原理分析,大家可以看看
2009/12/21 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
统计PHP目录中的文件数方法
2019/03/05 PHP
php设计模式之职责链模式定义与用法经典示例
2019/09/19 PHP
Hutia 的 JS 代码集
2006/10/24 Javascript
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
基于jquery的文本框与autocomplete结合使用(asp.net+json)
2012/05/30 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
简介JavaScript中substring()方法的使用
2015/06/06 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
javascript实现在线客服效果
2015/07/15 Javascript
详解Node.js:events事件模块
2016/11/24 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
node安装--linux下的快速安装教程
2017/03/21 Javascript
AngularJS中的promise用法分析
2017/05/19 Javascript
如何在AngularJs中调用第三方插件库
2017/05/21 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
Angularjs实现多图片上传预览功能
2018/07/18 Javascript
关于NodeJS中的循环引用详解
2019/07/23 NodeJs
js实现多张图片每隔一秒切换一张图片
2019/07/29 Javascript
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
python 运算符 供重载参考
2009/06/11 Python
教你学会使用Python正则表达式
2017/09/07 Python
Python数据结构与算法之常见的分配排序法示例【桶排序与基数排序】
2017/12/15 Python
浅谈Python中re.match()和re.search()的使用及区别
2020/04/14 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
Python3与fastdfs分布式文件系统如何实现交互
2020/06/23 Python
html5自带表单验证体验优化及提示气泡修改功能
2017/09/12 HTML / CSS
Collection和Collections的区别
2016/05/02 面试题
什么是SQL Server的确定性函数和不确定性函数
2016/08/04 面试题
装饰工程师岗位职责
2014/06/08 职场文书
初中思想品德教学反思
2016/02/24 职场文书
导游词之镜泊湖
2019/12/09 职场文书
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL
利用Python实时获取steam特惠游戏数据
2022/06/25 Python