如何利用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 相关文章推荐
javascript重写alert方法的实例代码
Mar 29 Javascript
仿百度的关键词匹配搜索示例
Sep 25 Javascript
微信小程序 富文本转文本实例详解
Oct 24 Javascript
jQuery插件zTree实现更新根节点中第i个节点名称的方法示例
Mar 08 Javascript
Ionic3 UI组件之autocomplete详解
Jun 08 Javascript
angularjs手动识别字符串中的换行符方法
Oct 02 Javascript
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
Sep 23 Javascript
解决Vue 给mapState中定义的属性赋值报错的问题
Jun 22 Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
Jun 29 Javascript
uniapp与webview之间的相互传值的实现
Jun 29 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
Jul 21 Javascript
利用js实现简易红绿灯
Oct 15 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
索尼ICF-SW100收音机评测
2021/03/02 无线电
php文件操作相关类实例
2015/06/18 PHP
分享两个手机访问pc网站自动跳转手机端网站代码
2020/12/24 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
如何使用jquery修改css中带有!important的样式属性
2016/04/28 Javascript
xtemplate node.js 的使用方法实例解析
2016/08/22 Javascript
浅谈jquery.form.js的ajaxSubmit和ajaxForm的使用
2016/09/09 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
2016/09/23 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
快速使用node.js进行web开发详解
2017/04/26 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
Vue下拉框回显并默认选中随机问题
2018/09/06 Javascript
详解React中传入组件的props改变时更新组件的几种实现方法
2018/09/13 Javascript
一篇文章,教你学会Vue CLI 插件开发
2019/04/17 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
Js逆向实现滑动验证码图片还原的示例代码
2020/03/10 Javascript
微信小程序开发打开另一个小程序的实现方法
2020/05/17 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
python的dict,set,list,tuple应用详解
2014/07/24 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
python实现逆序输出一个数字的示例讲解
2018/06/25 Python
攻击者是如何将PHP Phar包伪装成图像以绕过文件类型检测的(推荐)
2018/10/11 Python
详解【python】str与json类型转换
2019/04/29 Python
Windows下Pycharm远程连接虚拟机中Centos下的Python环境(图文教程详解)
2020/03/19 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
如何在Python3中使用telnetlib模块连接网络设备
2020/09/21 Python
StubHub巴西:购买和出售您的门票
2016/07/22 全球购物
军训自我鉴定
2013/12/14 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
大学社团活动总结怎么写
2019/06/21 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
《好妈妈胜过好老师》:每个孩子的优秀都是有源头的
2020/01/03 职场文书
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers