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

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 上贺茂润

[已经解决] 请教关于脚本读取文本里的数据

[复制链接]

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
 楼主| 发表于 2013-5-28 10:47:09 | 显示全部楼层
铃仙·优昙华院·因幡 发表于 2013-5-28 00:26
这个脚本只是演示, 不能当做正式的脚本来使用, 很多细节咱都没有处理好, 这里只能说抱歉.

这个错误的原 ...

传递了一个空的数值?为什么会发生这种情况呢?按脚本的顺序来说读取data数组里的数据都是有具体数值的,不应该会出现空的才对呀……如果是这样的话应该如何避免呢?
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
 楼主| 发表于 2013-5-28 11:41:06 | 显示全部楼层
八云紫 发表于 2013-5-26 16:38
已修复. 范例也微微的改进了那么一点点点带你.....

范例更新在楼上的楼上 ...
  1. class Scene_Subject < Scene_Base
  2.   
  3.   def initialize(subject_index)
  4.     @subject = [];
  5.     @index_subject = 0;
  6.     File.open("Subject#{subject_index}.txt","r") do |fp|
  7.       @subject = fp.readlines;
  8.     end
  9.     @subject.each_index do |index|
  10.       @subject[index].chomp!
  11.       @subject[index] = @subject[index].split("||");
  12.     end
  13.     @max_index        = @subject.size;          # 题目最大数量
  14.     @type             = 0;                      # 抽题类型
  15.     @answer           = [];                     # 答题卡
  16.     @title_index      = [];                     # 剩下的题目序号
  17.     for i in 0..@max_index
  18.       @title_index << i;
  19.     end
  20.     @subject_subindex = rand( @subject.size);                     # 题号
  21.   end
  22.   
复制代码
我在您的原有的脚本基础上添加了随机选题的功能,但是发现运行混乱,题目对错乱分:
最后那个题号的部分是产生随机数,请问是不是要在另一个地方也设置这个@subject.size,现在的情况是对错混乱。
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
231
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

发表于 2013-5-28 13:54:34 | 显示全部楼层
上贺茂润 发表于 2013-5-28 11:41
我在您的原有的脚本基础上添加了随机选题的功能,但是发现运行混乱,题目对错乱分:
最后那个题号的部分 ...

其实随机就好的办法是这样的:


  1. # 类似题库的作用
  2. @subjects = [];
  3. # 初始化题库
  4. for i  in  [email protected]
  5.   @subjects << i;
  6. end

  7. # 题库里随机一个题目出来
  8. index = rand(@subjects.size);
  9. # 为了防止重复取一道题, 所以把取得的题目从题库里删掉
  10. @subjects.delete_at(index);

复制代码
这样就很好的可以复制重复选择, 还有胡乱选择了.
回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
 楼主| 发表于 2013-5-28 21:49:55 | 显示全部楼层
铃仙·优昙华院·因幡 发表于 2013-5-28 13:54
其实随机就好的办法是这样的:这样就很好的可以复制重复选择, 还有胡乱选择了. ...

如果按这样运行的话原来的脚本应该修改哪些? 润的脚本转型能力太弱……
  1. #==============================================================================
  2. # ■ Scene_Subject
  3. #------------------------------------------------------------------------------
  4. #  考试类。
  5. #==============================================================================

  6. class Scene_Subject < Scene_Base
  7.   
  8.   def initialize(subject_index)
  9.     @subject = [];
  10.     @index_subject = 0;
  11.     File.open("Subject#{subject_index}.txt","r") do |fp|
  12.       @subject = fp.readlines;
  13.     end
  14.     @subject.each_index do |index|
  15.       
  16.       @subject[index].chomp!
  17.       @subject[index] = @subject[index].split("||");
  18.     end
  19.     @max_index        = @subject.size;          # 题目最大数量
  20.     @type             = 0;                      # 抽题类型
  21.     @answer           = [];                     # 答题卡
  22.     @title_index      = [];                     # 剩下的题目序号
  23.     for i in 0..@max_index
  24.       @title_index << i;
  25.     end
  26.    @subject_subindex = -1;                 # 题号
  27.   end
  28.     #--------------------------------------------------------------------------
  29.   # ● 开始处理
  30.   #    Subject_index  : 考题库
  31.   #    type           : 抽题类型, 0 按顺序, 1 随机
  32.   #--------------------------------------------------------------------------
  33.   def start
  34.     create_menu_background
  35.     next_subject
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 更新
  39.   #--------------------------------------------------------------------------
  40.   def update
  41.     super
  42.     update_menu_background
  43.     update_subject_window
  44.   end
  45.   #--------------------------------------------------------------------------
  46.   # ● 更新考卷
  47.   #--------------------------------------------------------------------------
  48.   def update_subject_window
  49.     @subject_window.update
  50.     if Input.trigger?(Input::C)
  51.       @answer.pushAnswer(@subject_subindex, @subject_window.index); # 填写答题卡, [题目序号, 答案]
  52.       next_subject;   # 下一题
  53.     end
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● 计算得分
  57.   #--------------------------------------------------------------------------
  58.   def hand_paper
  59.     code = 0;                            # 分数
  60.     @answer.each do |answers|
  61.       right_answer = @subject[answers[0]][1];
  62.       code += 1 if right_answer.to_i == answers[1] + 1;
  63.     end
  64.     $game_player.result = code == @answer.size ? 100.0 : code.to_f / @answer.size * 100
  65.     $scene = Scene_Map.new
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   # ● 结束处理
  69.   #--------------------------------------------------------------------------
  70.   def terminate
  71.     super
  72.     dispose_menu_background
  73.     @subject_window.dispose;
  74.   end
  75.   #--------------------------------------------------------------------------
  76.   # ● 下一题
  77.   #--------------------------------------------------------------------------
  78.   def next_subject
  79.     @index_subject += 1;
  80.     if @index_subject < 2
  81.       case @type
  82.       when 0
  83.         @subject_subindex += 1;  
  84.       end
  85.       @subject_window.dispose if @subject_window;
  86.       @subject_window = Window_Subject.new(@subject[@subject_subindex]);
  87.     else
  88.       hand_paper
  89.     end
  90.   end
  91. end
复制代码
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
231
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

发表于 2013-5-28 22:28:36 | 显示全部楼层
本帖最后由 铃仙·优昙华院·因幡 于 2013-5-28 22:52 编辑
  1. case @type
  2.       when 0
  3.         @subject_subindex += 1;  
  4.       end
复制代码
这里添加 when 1 什么的 随机取得 @subject_subindex 的值就好


其实一开始写这个脚本的时候有添加过随机选题, 不过由于很懒, 外加某播放器的问题就坑掉了. >_<
回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
 楼主| 发表于 2013-5-29 11:54:30 | 显示全部楼层
本帖最后由 上贺茂润 于 2013-5-29 11:56 编辑
铃仙·优昙华院·因幡 发表于 2013-5-28 22:28
这里添加 when 1 什么的 随机取得 @subject_subindex 的值就好


发生了返回空值错误 我对这个问答系统真的是……无力了……我还是尝试别看看……
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv1.梦旅人

狂気の月兔

梦石
0
星屑
231
在线时间
1245 小时
注册时间
2009-4-7
帖子
879

贵宾

发表于 2013-5-29 12:00:43 | 显示全部楼层
上贺茂润 发表于 2013-5-29 11:54
发生了返回空值错误  我对这个问答系统真的是……无力了……我还是尝试别看看…… ...

其实咱的脚本只是一个不完全的例子, 提供一个思路罢了.

如果真的要写一个完整的话, 可以参考咱的写法, 自己重新写一遍.

评分

参与人数 1梦石 +1 收起 理由
怪蜀黍 + 1 谢谢帮助LZ解惑

查看全部评分

回复 支持 反对

使用道具 举报

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
590
在线时间
899 小时
注册时间
2010-11-13
帖子
1023
发表于 2017-12-6 14:01:08 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2779
在线时间
613 小时
注册时间
2018-1-17
帖子
1293
发表于 2018-2-16 12:29:31 | 显示全部楼层
活抓大神萌新时期帖子一只~
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
4
在线时间
0 小时
注册时间
2018-4-10
帖子
3
发表于 2018-4-10 16:43:22 | 显示全部楼层
学习学习
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-18 16:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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