如何利用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 相关文章推荐
JQERY limittext 插件0.2版(长内容限制显示)
Aug 27 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
Mar 10 Javascript
jQuery实现点击图片翻页展示效果的方法
Feb 16 Javascript
js实现可旋转的立方体模型
Oct 16 Javascript
使用node.js实现微信小程序实时聊天功能
Aug 13 Javascript
Vue CLI3搭建的项目中路径相关问题的解决
Sep 17 Javascript
Vue.js 中 axios 跨域访问错误问题及解决方法
Nov 21 Javascript
手把手带你封装一个vue component第三方库
Feb 14 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
Sep 06 Javascript
Node对CommonJS的模块规范
Nov 06 Javascript
Vue父子传递实例讲解
Feb 14 Javascript
Vue全局使用less样式,组件使用全局样式文件中定义的变量操作
Oct 21 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中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
简单的cookie计数器实现源码
2013/06/07 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
深入解析WordPress中加载模板的get_template_part函数
2016/01/11 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
Javascript 匿名函数及其代码模式原理
2010/03/19 Javascript
js 剪切板应用clipboardData详细解析
2013/12/17 Javascript
jQuery获取和设置表单元素的方法
2014/02/14 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
浅谈angularJS 作用域
2015/07/05 Javascript
jQuery实现监控页面所有ajax请求的方法
2015/12/10 Javascript
jQuery+css实现的换页标签栏效果
2016/01/27 Javascript
Bootstrap框架下下拉框select搜索功能
2020/03/26 Javascript
nodejs6下使用koa2框架实例
2017/05/18 NodeJs
微信小程序实现折叠面板
2018/01/31 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
js实现打字小游戏
2019/12/17 Javascript
Vue切换div显示隐藏,多选,单选代码解析
2020/07/14 Javascript
python使用正则表达式提取网页URL的方法
2015/05/26 Python
使用Python编写简单的端口扫描器的实例分享
2015/12/18 Python
Python实现利用最大公约数求三个正整数的最小公倍数示例
2017/09/30 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
Python线程指南分享
2019/11/19 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
Django实现简单的分页功能
2021/02/22 Python
DNA基因检测和分析:23andMe
2019/05/01 全球购物
汽车技术服务与营销专业在籍生自荐信
2013/09/28 职场文书
财务会计专业个人求职信范本
2014/01/08 职场文书
艺人经纪人岗位职责
2014/04/15 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
python字符串的一些常见实用操作
2022/04/06 Python