Project1

标题: 关于数组里的数组调用,有没有更简便的写法 [打印本页]

作者: CCD0645    时间: 2017-11-27 13:57
标题: 关于数组里的数组调用,有没有更简便的写法
好比以下,建一个数组,然后设定一连串坐标,让某事件随机移动到设定的坐标
$wz = [[5,5],[6,6]]
z = rand(2)
$game_map.events[2].moveto($wz[z]) #原本想着这样写,但这写法是错误的,有没有类似的正确写法,一个数组代表两个数或多个数?
已知可以写成 $game_map.events[2].moveto($wz[z][0],$wz[z][1]) 但这样还是复杂了,这里只有X,Y所以显得没那么复杂,一但更为复杂的,如$game_screen.pictures[1].show("", , , , 100, 100, 255, 0)就显得累赘了
作者: SailCat    时间: 2017-11-27 14:46
class Game_Character
alias free_moveto moveto
def moveto(*args)
  return free_moveto(args[0], args[1]) if args.size == 2
  return free_moveto(args[0][0], args[0][1]) if args.size == 1 and args[0].is_a?(Array)
  raise "Wrong number of arguments (#{args.size} of 2)"
end

作者: guoxiaomi    时间: 2017-11-27 18:27
$game_map.events[2].moveto(*$wz[z])
作者: 芯☆淡茹水    时间: 2017-11-27 19:12
随机移动事件,不一定要数组啊,比如下面这样:
  1. x = rand $game_map.width
  2. y = rand $game_map.height
  3. while !$game_map.events[2].passable?(x, y, 0)
  4.   x = rand $game_map.width
  5.   y = rand $game_map.height
  6. end
  7. $game_map.events[2].moveto(x, y)
复制代码

当然,如果移动到四周都不能通行的地方,角色进不去了,就不要找我。
作者: CCD0645    时间: 2017-11-27 21:27
guoxiaomi 发表于 2017-11-27 18:27
$game_map.events[2].moveto(*$wz[z])

如果是显示图片中间,x,y为 $wz[z]呢,这个夹在中间的怎么写?
$game_screen.pictures[1].show("", 0, x, y, 100, 100, 255, 0)
作者: CCD0645    时间: 2017-11-28 10:57
CCD0645 发表于 2017-11-27 21:27
如果是显示图片中间,x,y为 $wz[z]呢,这个夹在中间的怎么写?
$game_screen.pictures[1].show("", 0, x, ...

还有一个问题,比如判断条件分歧时
if x,y ==  $wz[z] 这个正确写法是怎样的,前面加*似乎也不行
作者: chd114    时间: 2017-11-28 14:16
CCD0645 发表于 2017-11-28 10:57
还有一个问题,比如判断条件分歧时
if x,y ==  $wz[z] 这个正确写法是怎样的,前面加*似乎也不行 ...
  1. if [x,y] ==  $wz[z]
复制代码

数组判断完全相等的情况是这样的




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