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

Project1

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

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

  [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2017-5-18
帖子
8
71
发表于 2017-5-18 18:32:01 | 只看该作者
厉害了 正需要
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
85
在线时间
31 小时
注册时间
2016-6-12
帖子
21
72
发表于 2017-5-25 12:19:18 | 只看该作者
先马克下,不然这帖子又不知道跑哪去了

点评

正该多顶两下,要不然就不见了。。。  发表于 2017-5-25 16:59
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
3 小时
注册时间
2017-5-25
帖子
1
73
发表于 2017-5-27 23:35:35 | 只看该作者
讲的真好,简单明了,为了看完你这篇我才注册的账号啊
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
95
在线时间
85 小时
注册时间
2012-5-18
帖子
2
74
发表于 2017-5-30 15:40:19 | 只看该作者
感谢楼主!作为新人也可以当作是JS的入门了~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
9 小时
注册时间
2010-9-11
帖子
8
75
发表于 2017-7-4 11:32:10 | 只看该作者
你问我滋瓷不滋瓷,当然是滋瓷的啦!!

当老师是楼主的天赋啊,不能浪费了。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
70
在线时间
47 小时
注册时间
2015-3-5
帖子
12
76
发表于 2017-7-13 13:37:03 | 只看该作者
谢谢谢谢!!这个对我很有帮助!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
5 小时
注册时间
2017-1-16
帖子
4
77
发表于 2017-7-13 16:24:23 | 只看该作者
这个对我这样一窍不通的新人很有帮助啊,做个游戏好难
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
4 小时
注册时间
2016-10-17
帖子
1
78
发表于 2017-7-13 17:06:59 | 只看该作者
新人的福音啊,最近才开始研究MV
回复 支持 反对

使用道具 举报

Lv1.梦旅人

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

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-27 09:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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