如何利用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数组插入一条记录的代码
Aug 30 Javascript
使用JQUERY Tabs插件宿主IFRAMES
Jan 01 Javascript
jQuery 第二课 操作包装集元素代码
Mar 14 Javascript
jQuery表单域选择器用法分析
Feb 10 Javascript
JQuery实现的图文自动轮播效果插件
Jun 19 Javascript
使用vue编写一个点击数字计时小游戏
Aug 31 Javascript
JavaScript实现256色转灰度图
Feb 22 Javascript
详细讲解vue2+vuex+axios
May 27 Javascript
vue.js项目nginx部署教程
Apr 05 Javascript
详解JS中统计函数执行次数与执行时间
Sep 04 Javascript
Vue中axios拦截器如何单独配置token
Dec 27 Javascript
vue实现PC端分辨率适配操作
Aug 03 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用数组返回无限分类的列表数据的代码
2010/08/08 PHP
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
JS 学习笔记 防止发生命名冲突
2009/07/30 Javascript
Mootools 1.2教程(21)——类(二)
2009/09/15 Javascript
javascript动态加载实现方法一
2012/08/22 Javascript
js 输出内容到新窗口具体实现代码
2013/05/31 Javascript
用jQuery模拟select下拉框的简单示例代码
2014/01/26 Javascript
Javascript正则控制文本框只能输入整数或浮点数
2014/09/02 Javascript
js中函数声明与函数表达式
2015/06/03 Javascript
基于jQuery实现的向下滑动二级菜单效果代码
2015/08/31 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
基于BootStarp的Dailog
2016/04/28 Javascript
简单的JS轮播图代码
2016/07/18 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
js函数柯里化的方法和作用实例分析
2020/04/11 Javascript
在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)
2020/09/11 Javascript
python基于queue和threading实现多线程下载实例
2014/10/08 Python
Python中模拟enum枚举类型的5种方法分享
2014/11/22 Python
Django的数据模型访问多对多键值的方法
2015/07/21 Python
python实现备份目录的方法
2015/08/03 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
对Python 简单串口收发GUI界面的实例详解
2019/06/12 Python
简单了解Python变量作用域正确使用方法
2020/06/12 Python
Python Pandas数据分析工具用法实例
2020/11/05 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
2020/12/04 Python
html5使用html2canvas实现浏览器截图的示例
2017/08/31 HTML / CSS
HTML5 表单验证失败的提示语问题
2017/07/13 HTML / CSS
全球最大的瓷器、水晶和银器零售商:Replacements
2020/06/15 全球购物
一些Solaris面试题
2015/12/22 面试题
大学应届生求职简历的自我评价
2013/10/08 职场文书
计算机网络专业推荐信
2013/11/24 职场文书
我们的节日元宵活动方案
2014/08/23 职场文书
中秋节寄语2015
2015/03/24 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技