Project1

标题: 萌新提问【点灯游戏】 [打印本页]

作者: 小破刀    时间: 2017-1-1 18:49
标题: 萌新提问【点灯游戏】
萌新一只,长话短说
RPGMaker基础教程中有一篇叫事件进阶篇:点灯游戏
其中的实现方法感觉并不是简单易懂啊 ,所以我换了种方法

1、将4盏灯赋值为1                                                                                                            (x,y+1)
2、每次触发一盏灯时,将当前事件与其相邻两事件的变量*-1                             (x+1,y)(x,y)(x-1,y)
3、当变量和为-4时,触发奖励                                                                                            (x,y-1)

现在问题如下:
1、我已经取得了当前事件的xy值,如何实现通过坐标值或事件id触发该事件?
2、如何实现变量相加?

{:4_96:}
作者: RaidenInfinity    时间: 2017-1-1 20:03
本帖最后由 RaidenInfinity 于 2017-1-1 20:05 编辑

在这里附上一个以非常猥琐的方式达成效果的点灯游戏范例。

主要原理是用事件脚本指令反转独立开关的原理来达成效果。
在范例里有16盏灯,ID是1到16。在脚本内会有判定ID范围的部分,改成对应的就行了。
如果你想要更进一步地学习,我可以追加详细的原理解释。
还有就是,坐标的判定和地图配置有关,如果你无法成功在你的工程里实现,那请提供谜题配置的截图(如果不想破梗剧透可以私信)。

事件的所有指令毕竟最终还是得靠脚本来处理的。脚本指令如果能学会的话,可以免去很多很多的麻烦。
如果出现找不到VLGothic字体而无法运行的问题,请先储存一下工程才运行游戏。

点灯范例.rar

1.42 MB, 下载次数: 662


作者: 小破刀    时间: 2017-1-1 20:43
RaidenInfinity 发表于 2017-1-1 20:03
在这里附上一个以非常猥琐的方式达成效果的点灯游戏范例。

主要原理是用事件脚本指令和反转独立开关的原理 ...

脚本意思明白了,简单粗暴。
唯一的问题就是不明白其中的|k,v|,include?(k)是什么东西。这个是ruby么?
作者: RaidenInfinity    时间: 2017-1-1 20:54
本帖最后由 RaidenInfinity 于 2017-1-1 20:57 编辑

$game_map.events.each{|k,v|   }

$game_map.events就是当前地图内的事件.它是一个Hash(哈希表/键值表),就像每层(值)都有写名字(键)的柜子。
each是“每个”的意思,就是把这个“柜子”的每一层(键值配对)都拿出来一个个处理
|k,v| 的话,就是指键值配对的键(key)与值(value),将它们代入变量。一般我的习惯是用 |k, v|,当然用什么 |i, j| 也是行的,只要有2个就对了。
那么{ |k,v| 和 }之间的 就是要循环的内容了。

next if !(1..16).include?(k)
这句的意思是,如果(if) 1到16(包含16)之间的数字中(1..16) 包括(include?)k这个变量的值,那就直接跳到下一个循环(next)。

作者: 小破刀    时间: 2017-1-1 21:10
RaidenInfinity 发表于 2017-1-1 20:54
$game_map.events.each{|k,v|   }

$game_map.events就是当前地图内的事件.它是一个Hash(哈希表/键值表) ...

明白了,非常感谢




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1