如何利用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 相关文章推荐
让人印象深刻的10个jQuery手风琴效果应用
May 08 Javascript
javascript:history.go()和History.back()的区别及应用
Nov 25 Javascript
JS检测图片大小的实例
Aug 21 Javascript
JavaScript插件化开发教程 (一)
Jan 27 Javascript
node.js 使用ejs模板引擎时后缀换成.html
Apr 22 Javascript
浅谈JavaScript中的字符编码转换问题
Jul 07 Javascript
js实现页面a向页面b传参的方法
May 29 Javascript
js替换字符串中所有指定的字符(实现代码)
Aug 17 Javascript
完美解决input[type=number]无法显示非数字字符的问题
Feb 28 Javascript
Javascript中字符串相关常用的使用方法总结
Mar 13 Javascript
AngularJS 霸道的过滤器小结
Apr 26 Javascript
jQuery EasyUI开发技巧总结
Sep 26 jQuery
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 静态变量与自定义常量的使用方法
2010/01/26 PHP
PHP中数组的分组排序实例
2014/06/01 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
2018/10/15 PHP
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
js中点击空白区域时文本框与隐藏层的显示与影藏问题
2013/08/26 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
angularjs学习笔记之完整的项目结构
2015/09/26 Javascript
javascript滚轮控制模拟滚动条
2016/10/19 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
2018/01/09 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
JavaScript之Blob对象类型的具体使用方法
2019/11/29 Javascript
javascript实现简单留言板案例
2021/02/09 Javascript
[04:49]2014DOTA2国际邀请赛 Newbee顺利挺进总决赛 ImbaTV独家专访
2014/07/19 DOTA
跟老齐学Python之集合的关系
2014/09/24 Python
详解python3中socket套接字的编码问题解决
2017/07/01 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
Django页面数据的缓存与使用的具体方法
2019/04/23 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
JAVA中运算符的分类及举例
2015/09/12 面试题
初级Java程序员面试题
2016/03/03 面试题
总经理助理岗位职责
2013/11/08 职场文书
质检部职责
2013/12/28 职场文书
十周年庆典策划方案
2014/06/03 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
2015年重阳节慰问信
2015/03/23 职场文书
离婚被告代理词
2015/05/23 职场文书
难以忽视的真相观后感
2015/06/05 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
餐饮行业关注的9大营销策略
2019/08/26 职场文书
python 实现体质指数BMI计算
2021/05/26 Python