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

Project1

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

[已经解决] 数组如何加入新单元

[复制链接]

Lv1.梦旅人

矿工

梦石
0
星屑
134
在线时间
898 小时
注册时间
2012-10-5
帖子
1535
跳转到指定楼层
1
发表于 2013-10-5 15:33:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
我用数组做了个任务系统,加第二个任务时就出现了TypeError,我想,可能是数组加入新单元方法不对。
脚本:
  1.   #--------------------------------------------------------------------------
  2.   # ● 生成新任务(在Scene_Task的内部使用)
  3.   #--------------------------------------------------------------------------
  4.   def new_task(name, help, difficulty = 1, gold = 0, items = nil, weapons = nil, armors = nil, item_num = 1, weapon_num = 1, armor_num = 1)
  5.     # 实例变量的改变
  6.     @new_task_name = name
  7.     @new_task_help = help
  8.     @new_task_gold = gold
  9.     @new_task_items = items
  10.     @new_task_weapons = weapons
  11.     @new_task_armors = armors
  12.     @new_task_item_num = item_num
  13.     @new_task_weapon_num = weapon_num
  14.     @new_task_armor_num = armor_num
  15.     @new_task_difficulty = difficulty
  16.     $game_taskdata.tasks += 1
  17.     # 保存数据(载入数组)
  18.     if $game_taskdata.task_name[0] == ""
  19.       $game_taskdata.task_name = [@new_task_name]
  20.       $game_taskdata.task_command_name = [@new_task_name]
  21.       $game_taskdata.task_help = [@new_task_help]
  22.       $game_taskdata.task_gold = [@new_task_gold]
  23.       $game_taskdata.task_items = [@new_task_items]
  24.       $game_taskdata.task_weapons = [@new_task_weapons]
  25.       $game_taskdata.task_armors = [@new_task_armors]
  26.       $game_taskdata.task_item_num = [@new_task_item_num]
  27.       $game_taskdata.task_weapon_num = [@new_task_weapon_num]
  28.       $game_taskdata.task_armor_num = [@new_task_armor_num]
  29.       $game_taskdata.task_difficulty = [@new_task_difficulty]
  30.     else
  31.       $game_taskdata.task_name[$game_taskdata.tasks] = @new_task_name
  32.       $game_taskdata.task_command_name[$game_taskdata.tasks] = @new_task_name
  33.       $game_taskdata.task_help[$game_taskdata.tasks] = @new_task_help
  34.       $game_taskdata.task_gold[$game_taskdata.tasks] = @new_task_gold
  35.       $game_taskdata.task_items[$game_taskdata.tasks] = @new_task_items
  36.       $game_taskdata.task_weapons[$game_taskdata.tasks] = @new_task_weapons
  37.       $game_taskdata.task_armors[$game_taskdata.tasks] = @new_task_armors
  38.       $game_taskdata.task_item_num[$game_taskdata.tasks] = @new_task_item_num
  39.       $game_taskdata.task_weapon_num[$game_taskdata.tasks] = @new_task_weapon_num
  40.       $game_taskdata.task_armor_num[$game_taskdata.tasks] = @new_task_armor_num
  41.       $game_taskdata.task_difficulty[$game_taskdata.tasks] = @new_task_difficulty
  42.     end                     
  43.   end
复制代码
  1. class Game_TaskData
  2.   attr_accessor :task_name
  3.   attr_accessor :task_command_name
  4.   attr_accessor :task_help
  5.   attr_accessor :task_gold
  6.   attr_accessor :task_items
  7.   attr_accessor :task_weapons
  8.   attr_accessor :task_armors
  9.   attr_accessor :task_item_num
  10.   attr_accessor :task_weapon_num
  11.   attr_accessor :task_armor_num
  12.   attr_accessor :task_difficulty
  13.   attr_accessor :tasks
  14.   def initialize
  15.     @task_name = [""]
  16.     @task_command_name = [""]
  17.     @task_help = [""]
  18.     @task_gold = [0]
  19.     @task_items = [nil]
  20.     @task_weapons = [nil]
  21.     @task_armors = [nil]
  22.     @task_item_num = [0]
  23.     @task_weapon_num = [0]
  24.     @task_armor_num = [0]
  25.     @task_difficulty = [1]
  26.     @tasks = 0
  27.   end
  28. end
复制代码
思路不变,让它保留过去的任务就只能这种思路了,但是总会出错。数组如何加入新单元?
呃,发糖贴好冷清呀!

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
2
发表于 2013-10-5 16:52:01 | 只看该作者
我没看脚本只说方法
a = []
a[0] = "123"
a[3] = "456"
p a # 现在a是["123", nil, nil, "456"]


b = []
b << "123" << "456"
p b # 现在b是["123", "456"]
回复 支持 反对

使用道具 举报

Lv1.梦旅人

矿工

梦石
0
星屑
134
在线时间
898 小时
注册时间
2012-10-5
帖子
1535
3
 楼主| 发表于 2013-10-5 17:09:19 | 只看该作者
恋′挂机 发表于 2013-10-5 16:52
我没看脚本只说方法
a = []
a[0] = "123"

因为那是任务系统,所以框内不是恒量,而是变量,但是总是TypeError。
呃,发糖贴好冷清呀!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
4
发表于 2013-10-5 19:20:39 | 只看该作者
本帖最后由 恋′挂机 于 2013-10-5 19:23 编辑

@xxxx1 = "123"

改为@xxxx1 = "123"
  1. class Game_Temp
  2. attr_accessor :xxxx1
  3. attr_accessor :xxxx2
  4. attr_accessor :xxxx3
  5. alias initialize_old initialize
  6. def initialize
  7.   [url=home.php?mod=space&uid=349002]@xxxx1[/url] = "123"
  8. @xxxx2 = "234"
  9. @xxxx3 = "345"
  10. initialize_old
  11. end
  12. end
  13. array = [$game_temp.xxxx1, $game_temp.xxxx2, $game_temp.xxxx3]
  14. p array # => ["123", "234", "345"]
  15. $game_temp.xxxx1 = "000"
  16. $game_temp.xxxx2 = "111"
  17. $game_temp.xxxx3 = "222"
  18. array = [$game_temp.xxxx1, $game_temp.xxxx2, $game_temp.xxxx3]
  19. p array # => ["000", "111", "222"]

  20. # 场景中
  21. # (命令窗口)字符123,234,345
  22. class Game_Temp
  23. attr_accessor :xxxx1
  24. attr_accessor :xxxx2
  25. attr_accessor :xxxx3
  26. alias initialize_old initialize
  27. def initialize
  28. @xxxx1 = "123"
  29. @xxxx2 = "234"
  30. @xxxx3 = "345"
  31. initialize_old
  32. end
  33. end
  34. class Xxxx
  35.   def main
  36.     array = [$game_temp.xxxx1, $game_temp.xxxx2, $game_temp.xxxx3]
  37.     @command = Window_Command.new(160, array)
  38.     Graphics.transition
  39.     loop do
  40.       Graphics.update
  41.       Input.update
  42.       update
  43.       if $scene != self
  44.         break
  45.       end
  46.     end
  47.     Graphics.freeze
  48.     @command.dispose
  49.   end
  50.   def update
  51.    @command.update
  52.     if @command.active
  53.      update_command
  54.      return
  55.     end
  56.   end
  57. end

  58. # -------

  59. $game_temp.xxxx1 = "000"
  60. $game_temp.xxxx2 = "111"
  61. $game_temp.xxxx3 = "222"
  62. # 再次 $scene = xxx

  63. $scene = Xxxx.new

  64. # (命令窗口)字符000,111,222
复制代码

评分

参与人数 1星屑 +30 收起 理由
myownroc + 30 塞糖

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

矿工

梦石
0
星屑
134
在线时间
898 小时
注册时间
2012-10-5
帖子
1535
5
 楼主| 发表于 2013-10-5 19:31:53 | 只看该作者
恋′挂机 发表于 2013-10-5 19:20
@xxxx1 = "123"

改为@xxxx1 = "123"

我估计这样行不通的……实在不明白什么意思……思路又完全变了……

点评

没变只是具体解释了下“方法”(不是def)  发表于 2013-10-5 19:32
呃,发糖贴好冷清呀!
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
6
发表于 2013-10-5 21:51:03 | 只看该作者
1.请详细的给出报错信息
2.您这个方法我只能表示呵呵,好高级的方法,本来还想改一下后来发现真是a waste of time
3.请不要这样随便的玩坏类,玩坏数组,玩坏了也请不要赖在他们身上
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3570
在线时间
3064 小时
注册时间
2011-11-17
帖子
980
7
发表于 2013-10-6 00:40:31 | 只看该作者
$game_taskdata.task_name = [@new_task_name] 这是神马奇怪的写法 你既然已经申明了 task_name是个数组 你又给他 重新换了个新数组?
数组里加新元素 用push就行了
Game_TaskData里 @task_name = [""] 你给首地址弄个空字符串做啥  你只要申明这是个数组就行了 RUBY是弱类型语言  @task_name =[]这样足矣
然后$game_taskdata.task_name.push @new_task_name 其他地方不解释了 反正就按这思路

评分

参与人数 2星屑 +90 收起 理由
myownroc + 75 认可答案
876加几 + 15 push成功了,但是坐标不对,我回去修改下….

查看全部评分

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

8
发表于 2013-10-6 08:24:05 | 只看该作者
$game_taskdata.task_name = []
$game_taskdata.task_name.push(@new_task_name)#里面可以加", @其他变量......"
p $game_taskdata.task_name
【无关】数字君什么时候开始钻研脚本的

点评

876君可是一直都有在钻研脚本哟,没准将来就是大触呢。  发表于 2013-10-6 11:51

  -fk: -azogi:
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-30 03:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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