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

Project1

 找回密码
 注册会员
搜索
查看: 2910|回复: 10
打印 上一主题 下一主题

[已经解决] 关于数组里的数组调用,有没有更简便的写法

[复制链接]

Lv4.逐梦者

梦石
8
星屑
3943
在线时间
396 小时
注册时间
2017-10-11
帖子
154
跳转到指定楼层
1
发表于 2017-11-27 13:57:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
好比以下,建一个数组,然后设定一连串坐标,让某事件随机移动到设定的坐标
$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)就显得累赘了

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
23201
在线时间
2387 小时
注册时间
2005-10-15
帖子
1166

开拓者

2
发表于 2017-11-27 14:46:19 | 只看该作者
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

评分

参与人数 3星屑 +50 +2 收起 理由
RyanBern + 50 这猫姐
酋长的图腾 + 1 我很赞同
SixRC + 1

查看全部评分

SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23999
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

3
发表于 2017-11-27 18:27:52 手机端发表。 | 只看该作者
$game_map.events[2].moveto(*$wz[z])

评分

参与人数 5星屑 +50 +4 收起 理由
RyanBern + 50 这猫叔
chd114 + 1 骚操作···
CCD0645 + 1 认可答案
酋长的图腾 + 1 我很赞同
SixRC + 1 学到了

查看全部评分

回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
33490
在线时间
5108 小时
注册时间
2012-11-19
帖子
4878

开拓者

4
发表于 2017-11-27 19:12:14 | 只看该作者
随机移动事件,不一定要数组啊,比如下面这样:
  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)
复制代码

当然,如果移动到四周都不能通行的地方,角色进不去了,就不要找我。
xp vx va mv  va mz 各类型脚本/插件定制
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
8
星屑
3943
在线时间
396 小时
注册时间
2017-10-11
帖子
154
5
 楼主| 发表于 2017-11-27 21:27:45 | 只看该作者
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)

点评

ruby2.4是可以  发表于 2017-11-28 14:58
*a 插在中间似乎不行? * 得放在最后 method( *["", 0, *a]+[100,100,255,0] )  发表于 2017-11-27 23:21
把x, y替换成*a就行,其中a = [x, y]  发表于 2017-11-27 22:13
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
8
星屑
3943
在线时间
396 小时
注册时间
2017-10-11
帖子
154
6
 楼主| 发表于 2017-11-28 10:57:10 | 只看该作者
CCD0645 发表于 2017-11-27 21:27
如果是显示图片中间,x,y为 $wz[z]呢,这个夹在中间的怎么写?
$game_screen.pictures[1].show("", 0, x, ...

还有一个问题,比如判断条件分歧时
if x,y ==  $wz[z] 这个正确写法是怎样的,前面加*似乎也不行

点评

* 用于参数传递 数组里面 或者值定义的时候 (等?) if 判断里面 你就把前面的 x, y 加个 [] 变成 [x, y] 就好啦  发表于 2017-11-28 11:36
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

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

数组判断完全相等的情况是这样的
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 22:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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