请选择 进入手机版 | 继续访问电脑版

js写的一款前端小游戏

[复制链接]
盛夏丨光年丶 发表于 2020-12-31 18:56:23 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
拖延症晚期的我原本计划趁着周末写个年末总结,但是一直没有什么思路,想来想去也没想到要写啥就胡乱写了这么一个小东西。
一直比力痴迷游戏行业,大概我不太适合做前端,应该去学C++…

首先固然是选择一张配景图,作为整个场景中的地图,而且要大要高清。结构到页面中。

然后通过可视区值展示这张图片的一小部门。我这里用的是宽600,高420的,超出直接隐藏掉。
  1. width: 600px;height: 420px;
复制代码

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

现在脚色有了,地图也有了,我们应该让人物动起来了,我的做法是让人物固定在窗口的中心位置,当人物移动的时候通过移动配景来让人物看起来有动的效果。
所以我这里在监听键盘事件的时候做了两件事,第一是更换人物的贴图,让人物有动起来的姿势,第二是改变配景图的位置,看起来确实就是在跑。

  1. 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地点分享给各人,感兴趣的同学可以自己写写,还挺有意思的,真的是越写越停不下来,我这是什么弊端。
自取链接

来源:https://blog.csdn.net/xuzhijia1991/article/details/111959379
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题

专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )