拖延症晚期的我原本计划趁着周末写个年终总结,但是一直没有什么思路,想来想去也没想到要写啥就胡乱写了这么一个小东西。

一直比较痴迷游戏行业,可能我不太适合做前端,应该去学C++…

首先当然是选择一张背景图,作为整个场景中的地图,而且要大要高清。布局到页面中。

然后通过可视区值展示这张图片的一小部分。我这里用的是宽600,高420的,超出直接隐藏掉。

width: 600px;
height: 420px;

这样一个简单的场景就写好了,接着我们需要在这个场景中加入我们的人物。也就是游戏中的角色。不过游戏贴图实在是太难了,我也没有时间自己去设计,所以直接在网上找了火柴人的gif好像是DNF的技能图,通过PS的处理,截取其中的几个重要动作,加入的到页面中。

现在角色有了,地图也有了,我们应该让人物动起来了,我的做法是让人物固定在窗口的中心位置,当人物移动的时候通过移动背景来让人物看起来有动的效果。

所以我这里在监听键盘事件的时候做了两件事,第一是更换人物的贴图,让人物有动起来的姿势,第二是改变背景图的位置,看起来确实就是在跑。

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); // 切换人物动作}
})

不同的按键给人物不同的动作,其实都是通过贴图来完成的。

然后这里加入血槽等级,人物名称,血量值。

人物这里是一个class类,可以通过实例化的方式创建很多个人物,然后让他们满屏幕的乱跑,我这里通过实例化的时候判断人物是否是机器人,通过随机数的方式定义人物自己的动作。

技能就比较难看了,也是网上随便找的效果图,看淡了,有就行要求别那么高。

打斗也很简单,就是角色在放技能的时候计算周边其他的角色的距离,从而判定是否击中,然后让血量降低。公告系统,这些都有写,不过定时器太多造成了内存泄露我还得想想怎么优化一下。

github地址分享给大家,感兴趣的同学可以自己写写,还挺有意思的,真的是越写越停不下来,我这是什么毛病。

自取链接

js写的一款前端小游戏相关推荐

  1. vue.js写一个DOTA2卡尔练习小游戏

    卡尔亡还是卡尔王? 一个纯前端小游戏,后续会加上后端代码来记录各位大佬的手速.如果喜欢欢迎star. 游戏主界面: 支持改键以及传统键位切换: github链接 https://github.com/ ...

  2. 用JS写一个《俄罗斯方块》小游戏

    前言 最近网上上映一部名叫<俄罗斯方块>电影,想起自己学习JS时,编写<俄罗斯方块>小游戏程序作为练习,现在分享一下,看能不能蹭一下热度.: ) 效果图 按键说明 ↑:旋转方块 ...

  3. 利用js写一个类似打地鼠的小游戏

    代码仅供参考 css代码; *{margin: 0;padding: 0; } a{text-decoration: none; }.root{width: 320px;height: 480px;b ...

  4. 前端小游戏2048(一步步详解附带源代码,源码上传到csdn,可以免费下载)

    2048小游戏 2048是前端开发必经的一个小游戏,2048小游戏包含了HTML,CSS和JavaScript. 简介 <2048>,是一款益智小游戏,这款游戏是由年仅19岁的意大利程序员 ...

  5. 原生html小游戏,原生JS实现别踩白块小游戏(一)

    对于前端开发人员来说,闲暇之余自己开发个小游戏打发时间,也是对自己基础技术的一种应用考验.那么别踩白块小游戏,相信大家并不陌生,这个小游戏我们可以通过原生js来实现,即便是前端初学者也可以轻松完成. ...

  6. 我的小白同事接触白鹭引擎4天,成功做了一款足球小游戏

    写在前面:我的同事"熊猫少女"刚刚入职白鹭,之前从未接触过白鹭引擎,也从未做过游戏,经过4天时间的学习,他成功做了一款足球小游戏,这篇文章主要是记录他的开发过程: 正文如下: 在接 ...

  7. html小游戏代码_研发实践:Mozilla分享如何开发一款WebVR小游戏

    文章相关引用及参考:mozvr 本文来自Mozilla的Josh Marinacci (映维网 2019年02月06日)在倡导新技术时,我总是尝试采用现实世界开发者的方式,而对于WebVR,开发一款游 ...

  8. html5 | 前端小游戏 | 2048 益智游戏

    游戏截图 游戏说明 2048网页版游戏,移动方向键,让相同数字组合争取获得最高分数. 项目结构 iindex.html代码 <!DOCTYPE html> <html>< ...

  9. 利用random 的randint 方法写一个猜数字的小游戏

    学习python第二天,编写的一款数字小游戏 昨天学习完条件语句和while循环,老师留下的作业:利用random 的randint 方法写一个猜数字的小游戏. 第一次在CSDN上记录,小白一枚.希望 ...

最新文章

  1. 我的Python分析成长之路8
  2. android检测本地是否安装,在本地测试模块的安装
  3. C#入门篇5-6:流程控制语句 foreach
  4. 揭开webRTC媒体服务器的神秘面纱——WebRTC媒体服务器开源项目介绍
  5. 活动 | 5G万物智联下互联网通信技术升级之路
  6. java 8流自定义收集器_Java 8编写自定义收集器简介
  7. 深入理解DOM节点类型第六篇——特性节点Attribute
  8. iis php mysql 集成_如何在IIS上集成php(iis+mysql+php+zend)
  9. Memstore数据刷写与阻塞机制深入剖析及参数优化
  10. Java基础知识之数组的初始化和基本操作
  11. c语言2维动态数组,如何创建一个动态2维数组?
  12. Linux学习一周初体验
  13. Karoly Nyisztor
  14. jfinal中使用freemarker
  15. InnoDB undo tablespace使用及原理
  16. 怎么解锁blockinput锁定的键盘_“键盘云”--锐角云母公司(Acute angle)又一款矿渣神器...
  17. html 自动关机程序,Windows 自动关机/定时关机 命令 shuntdown
  18. K2P 潘多拉固件PandoraBox
  19. 教你如何轻松玩转自媒体淘客,赚大钱!
  20. php中说的接口是什么意思,micin是什么接口

热门文章

  1. 主数据管理(MDM)与元数据管理
  2. ADGUARD——去除广告利器
  3. 《十周成为数据分析师》笔记——业务线 第六节 以数据分析为导向的运营体系搭建
  4. 一个从业(非正品)奢侈品十年从业者的经验和历程。
  5. 游戏服务器的那些事儿
  6. 模仿猫眼电影App一个动画效果
  7. 数据分析算法-决策树(上)-课堂学习笔记
  8. 将矩阵的行列互换得到的新矩阵称为转置矩阵
  9. 应用程序“Parallels Desktop“无法打开MAC电脑打不开
  10. java 封装类_java的基本类型和对应的封装类