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

Project1

 找回密码
 注册会员
搜索

请教关于脚本读取文本里的数据

查看数: 4383 | 评论数: 19 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2013-5-25 11:23

正文摘要:

基于一个问答系统,也就是NPC提出问题,显示选项,玩家选择,对错和对话,每个问题包涵以下几个部分: 1-问题 2-选项 3-答案 对错可以用分歧来写 这样的话就能在TXT或者Excel里用表格的形式批量录入题目了,请教 ...

回复

xieritian 发表于 2018-4-10 16:43:22
学习学习
2256538860 发表于 2018-2-16 12:29:31
活抓大神萌新时期帖子一只~
574656549 发表于 2017-12-6 14:01:08
提示: 作者被禁止或删除 内容自动屏蔽
铃仙·优昙华院·因幡 发表于 2013-5-29 12:00:43
上贺茂润 发表于 2013-5-29 11:54
发生了返回空值错误  我对这个问答系统真的是……无力了……我还是尝试别看看…… ...

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

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

评分

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

查看全部评分

上贺茂润 发表于 2013-5-29 11:54:30
本帖最后由 上贺茂润 于 2013-5-29 11:56 编辑
铃仙·优昙华院·因幡 发表于 2013-5-28 22:28
这里添加 when 1 什么的 随机取得 @subject_subindex 的值就好


发生了返回空值错误 我对这个问答系统真的是……无力了……我还是尝试别看看……
铃仙·优昙华院·因幡 发表于 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 的值就好


其实一开始写这个脚本的时候有添加过随机选题, 不过由于很懒, 外加某播放器的问题就坑掉了. >_<
上贺茂润 发表于 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
复制代码
铃仙·优昙华院·因幡 发表于 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);

复制代码
这样就很好的可以复制重复选择, 还有胡乱选择了.
上贺茂润 发表于 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,现在的情况是对错混乱。
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-5-14 16:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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