设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: aasll
打印 上一主题 下一主题

[原创发布] 【请大家移步新教程,20220201】基于RPGMakerMV的JavaScript基础

  [复制链接]

Lv1.梦旅人

梦石
0
星屑
220
在线时间
161 小时
注册时间
2015-11-23
帖子
92
21
 楼主| 发表于 2017-5-7 09:17:37 | 显示全部楼层
chainliu 发表于 2017-5-7 00:39
1、代码文件命名为RandomWeapon.js,放的位置是Project1\js\plugins里面
2、在地图上新建一个事件EV001, ...

你是不是没有开启插件?
在MV里面开启插件,选中自己的这个RandomWeapon.js
自天地未辟混沌未开时就已经开始装逼的神奇人物
MV的魔塔模板::托管在github上的游戏,可以直接运行
基于RPGMakerMV的JavaScript基础
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
220
在线时间
161 小时
注册时间
2015-11-23
帖子
92
22
 楼主| 发表于 2017-5-7 10:41:40 | 显示全部楼层

https://rpg.blue/forum.php?mod=r ... 487&pid=2694027
把11楼这个附件下载下来,用里面的RandomWeapon试试
看看好不好用
自天地未辟混沌未开时就已经开始装逼的神奇人物
MV的魔塔模板::托管在github上的游戏,可以直接运行
基于RPGMakerMV的JavaScript基础
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
220
在线时间
161 小时
注册时间
2015-11-23
帖子
92
23
 楼主| 发表于 2017-5-7 12:34:58 | 显示全部楼层
chainliu 发表于 2017-5-7 11:30
用你的脚本替换我写的了,就可以了
现在可以确定是代码的问题了,对比下你我的代码,看有什么不同,才导 ...

qq的话,我的论坛资料里面应该是有的
另外,推荐加群515860452
自天地未辟混沌未开时就已经开始装逼的神奇人物
MV的魔塔模板::托管在github上的游戏,可以直接运行
基于RPGMakerMV的JavaScript基础
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
220
在线时间
161 小时
注册时间
2015-11-23
帖子
92
24
 楼主| 发表于 2017-7-19 10:49:23 | 显示全部楼层
第六章        动态操作事件

第一节        扫雷游戏

扫雷游戏是一种比较简单而有趣的游戏,实现起来也简单。
据说有纯事件的实现,然而我们这次再装一个小逼,要实现通过脚本动态的对事件进行操作。
首先是我们的思路:
由js脚本完成逻辑层,即整个扫雷的实现完全由js脚本实现,而地图上的事件仅仅用来做显示和交互(点击)用。
并且,对于地图上的事件变化的控制,也应当由脚本来决定,包括动态生成事件(即根据设定来动态决定格子的数量和雷的数量)。
先准备一张图再说,我们要用行走图的不同方向来表示不同的数字?或者小旗子,然后通过控制事件的方向来改变显示的数字,如图6-1所示。



图6-1

研究Game_Event可知,其显示的图片由_direction和_originalPattern两个属性决定,关系如下表:

→_originalPattern
↓_direction
0 1 2
2 空地 旗子 地雷
4 0(空地) 1 2
6 3 4 5
8 6 7 8


第二节        系统设计

首先还是老套路,来个命名空间MineSweeping,接下来我们再多添加一个debug用的标志Debug,方便我们区分调试和正式的内容。


接下来是区域的宽度和高度,以及地雷的数量。还有记录地雷分布的数组MineMap(这个数值将在后面被变成二维数组,后面几个也一样),记录玩家清扫过的地雷的记录(即显示在屏幕上的数据的记录)的数组FoundMap,还有将动态生成的事件引用过来保存起来的数组EventMap。
记录游戏状态,方便交互的State,还有左上角第一个事件,也是copy的原型事件的位置。
这些都可以在游戏中用事件里面的脚本控制。如图6-2。


游戏状态的改变我们用Start,Lost,Win三个方法封装起来。如图6-3。



游戏开始后,首先初始化地雷分布,由Math.Random()函数来确定出随机生成的地雷的位置。
接下来,需要写好点击一下(或者叫扫雷一下,对着空白的格子点一下)的方法,即Click(原谅我起名字捉急)。如果点中了雷,那么直接游戏失败,否则,统计一下周围一圈的雷的数量,然后把这个数字记录到FoundMap里面。
这里需要注意的是,如果周围都没有雷,那么我们需要把四周都自动点击(Click)一遍,这是一个递归用法。
然后,是标记(画小旗子,记录一下这里有雷)的方法,即Sign。这个方法比较简单,只需要对于白方块改变状态为被标记状态就好,当然还需要把小旗子标志取消后恢复为白方块。
之后,是扫过一圈,通常用在这个数字旁边插够了小旗子,然后程序帮助你把这个数字周围都点击一遍,即Sweep。以上这几个方法如同6-4。



图6-2

图6-3

图6-4

最后是将扫雷的逻辑操作跟MV的事件绑定在一起,让游戏的图形界面发挥功能。如图6-5,我们用Binding,Recheck和Refresh来完成。
Binding方法将根据设定好的地图大小(扫雷区域的宽和高)复制那个样板事件,并且移动到对应的位置,这里复制事件用的函数来自汪神的思路(我只是大自然的搬运工,以及感谢汪神)。另外还要将生成的事件引用存到我们的EventMap数组里面,方便我们的使用。
之后就是对事件的显示的图像进行操作了,这就是Recheck方法的功能,检测i,j位置处的FoundMap的值,即游戏中地块的状态。然后将对应的EventMap中的事件的_direction和_originalPattern两个属性做出相应的改变。
最终就是Refresh方法,要使得事件的图像跟FoundMap的值一一对应起来,关键在于不断的进行同步,即不断的执行Recheck方法,这就是Refresh方法的功能,显然这需要异步方法进行实现,这里为了方便,就将这个方法放到了MV的并行事件中去执行了。如图6-6。



图6-5

图6-6

这就是整个游戏程序的思路,当然具体实现还要看具体的代码。



第三节        事件调用

插件的代码部分设计好后,我们就要在MV的事件里面调用它了。
由于模仿单击,右击还有左右键同时按比较困难,我们就用一个MV变量来决定到底用什么击。



图6-7

像这样,旁边放三个事件,分别使得MV变量0001的值变为0,1,2,分别用作单击,标记,还有扫一大片。如图6-7


然后是设置好地块事件,在运行时会复制此地块,如图6-8。在此事件中,由确定键触发,即点击鼠标触发,触发后,先获取玩家的位置x,y,然后将其依据操作类型进行处理,并将玩家的位置MV地图的x,y值转化为扫雷数组的x,y,再调用对应的操作的方法。


然后是游戏的初始化,即设置好地图的起始点,地图的宽高,雷的数量,复制地块等操作,如图6-9。


最后是游戏的重新开始,如图6-10。


至此,一个简单的扫雷小游戏就完成了。



图6-8


图6-9



图6-10

自天地未辟混沌未开时就已经开始装逼的神奇人物
MV的魔塔模板::托管在github上的游戏,可以直接运行
基于RPGMakerMV的JavaScript基础
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
220
在线时间
161 小时
注册时间
2015-11-23
帖子
92
25
 楼主| 发表于 2017-7-19 10:54:47 | 显示全部楼层
附上,第六章的js,地图,以及,图片。
MIneSweeping.7z (60.26 KB, 下载次数: 176)
自天地未辟混沌未开时就已经开始装逼的神奇人物
MV的魔塔模板::托管在github上的游戏,可以直接运行
基于RPGMakerMV的JavaScript基础
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
220
在线时间
161 小时
注册时间
2015-11-23
帖子
92
26
 楼主| 发表于 2017-7-24 16:17:21 | 显示全部楼层

感觉就像吃了果酱。。。但我还是爱miaobiao
自天地未辟混沌未开时就已经开始装逼的神奇人物
MV的魔塔模板::托管在github上的游戏,可以直接运行
基于RPGMakerMV的JavaScript基础
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
220
在线时间
161 小时
注册时间
2015-11-23
帖子
92
27
 楼主| 发表于 2018-1-13 23:08:24 | 显示全部楼层
Marte 发表于 2017-12-21 14:06
楼主,你真的很厉害,我也是码农,但是你的讲解真的很精彩,虽然很多东西我一看就懂,但是还是很愿意细致的 ...

大家爱看我也很高兴啊。
自天地未辟混沌未开时就已经开始装逼的神奇人物
MV的魔塔模板::托管在github上的游戏,可以直接运行
基于RPGMakerMV的JavaScript基础
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
220
在线时间
161 小时
注册时间
2015-11-23
帖子
92
28
 楼主| 发表于 2018-1-13 23:09:10 | 显示全部楼层
king 发表于 2017-12-21 17:00
加油!这两天交作业!

努力努力,加油加油
自天地未辟混沌未开时就已经开始装逼的神奇人物
MV的魔塔模板::托管在github上的游戏,可以直接运行
基于RPGMakerMV的JavaScript基础
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
220
在线时间
161 小时
注册时间
2015-11-23
帖子
92
29
 楼主| 发表于 2018-1-13 23:09:57 | 显示全部楼层
yanzqvip 发表于 2018-1-3 23:04
认真学习,楼主真的讲的很棒,java部分比一般网络课讲的都浅显易懂。

感谢大家的支持。
自天地未辟混沌未开时就已经开始装逼的神奇人物
MV的魔塔模板::托管在github上的游戏,可以直接运行
基于RPGMakerMV的JavaScript基础
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
220
在线时间
161 小时
注册时间
2015-11-23
帖子
92
30
 楼主| 发表于 2018-1-13 23:10:49 | 显示全部楼层

大家一起加油,时隔小半年,本人凭实力回归论坛了。
自天地未辟混沌未开时就已经开始装逼的神奇人物
MV的魔塔模板::托管在github上的游戏,可以直接运行
基于RPGMakerMV的JavaScript基础
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-5 01:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表