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

Project1

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

[原创发布] 答题系统

[复制链接]

Lv3.寻梦者

梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
帖子
571
跳转到指定楼层
1
发表于 2019-2-22 20:41:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 300英雄 于 2019-2-22 20:48 编辑

本系统为本作者自己游戏需要制作的,最近以游戏内容为主,做一个看玩家对本游戏理解程度为目的系统。支持多选项,看对于QuestionO的讲解就行了

先讲解一下怎么用,你需要改动三个变量,在答题系统脚本写上你要的内容,以新增第四个问题为例子
1.Question
格式: ID => "问题",
Question = {
1 => "你是好人吗",
2 => "LOL技能快捷键不包括",
3 => "假面骑士KIKAI是哪一年的",
4 => "假面骑士WOZ是哪个时代来的",

}


2.QuestionA,有问题当然有答案了,A代表第一个选项,B代表第二个,C和D同理,只能填ABCD,填别的必定是错误答案,只会判定你选的ABCD,你填了别的肯定是false错误。
格式:ID => "答案",
"答案"改成"A","B","C","D"的一个
QuestionA = {
1 => "A",
2 => "C",
3 => "D",
4 => "D",


}

3.QuestionO
QuestionO支持多选项,只要你删除选项即可。
格式:ID => ["A","B","C","D"],
讲解注意点
1.问题的最大上限是4个,所以选项最多状态是["a","b","c","d"]这样,多写无用,不读取,不生效。
2.问题答案以从左到右为ABCD。
例子:
1号问题是四个选项,ABCD都可以选择。
2号只有三个选项,所以是ABC有效,D为无法选择,所以2的选项答案不能用D,否则无法选取导致你答案必定错误(233)。
3号A选项是"",所以本题只能选BCD
若答案为""(英文状态的双引号,打两个")则此选项无法选择,可以皮一波只能选ABD ACD,这种操作哈哈,这也是本系统的一个彩蛋功能

QuestionO = {
1 => ["是","不是","看着办","你猜啊"],
2 => ["1","2","3"],
3 => ["","2020","2021","2121"],
4 => ["过去","现代","未来","逢魔之日"],

}




下面附上脚本


RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Module Question
  4. #答题系统模组
  5. #==============================================================================
  6.  
  7. module Question
  8.  
  9.  
  10. Question = {
  11. 1 => "你是好人吗",
  12. 2 => "LOL技能快捷键不包括",
  13. 3 => "假面骑士KIKAI是哪一年的",
  14.  
  15.  
  16. }
  17.  
  18.  
  19.  
  20. QuestionA = {
  21. 1 => "A",
  22. 2 => "C",
  23. 3 => "D",
  24.  
  25.  
  26.  
  27. }
  28.  
  29.  
  30. QuestionO = {
  31. 1 => ["是","不是","看着办","你猜啊"],
  32. 2 => ["1","2","3"],
  33. 3 => ["2120","2020","2021","2121"],
  34.  
  35.  
  36. }
  37.  
  38.  
  39. QuestionE = {
  40. 0 => "A",
  41. 1 => "B",
  42. 2 => "C",
  43. 3 => "D",
  44. }
  45.  
  46. end


RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Window_dati
  4. #答题的选项窗口
  5. #==============================================================================
  6.  
  7. class Window_dati < Window_Command
  8.   #--------------------------------------------------------------------------
  9.   # ● 初始化对象
  10.   #--------------------------------------------------------------------------
  11.   def initialize
  12.     @has_command = []
  13.     super(0, 248)
  14.   end
  15.   #--------------------------------------------------------------------------
  16.   # ● 生成指令列表
  17.   #--------------------------------------------------------------------------
  18.   def make_command_list
  19.     Question::QuestionO[$问题ID][0] = "" if Question::QuestionO[$问题ID][0] == nil
  20.     Question::QuestionO[$问题ID][1] = "" if Question::QuestionO[$问题ID][1] == nil
  21.     Question::QuestionO[$问题ID][2] = "" if Question::QuestionO[$问题ID][2] == nil
  22.     Question::QuestionO[$问题ID][3] = "" if Question::QuestionO[$问题ID][3] == nil
  23.     add_command("A."+Question::QuestionO[$问题ID][0],  :xz,   Question::QuestionO[$问题ID][0]!="",)
  24.     add_command("B."+Question::QuestionO[$问题ID][1],  :xz,  Question::QuestionO[$问题ID][1]!="",)
  25.     add_command("C."+Question::QuestionO[$问题ID][2],  :xz,   Question::QuestionO[$问题ID][2]!="",)
  26.     add_command("D."+Question::QuestionO[$问题ID][3],  :xz,   Question::QuestionO[$问题ID][3]!="",)
  27.     add_command("确定",  :确定,   true)
  28. #~     add_command("选项3",  :third,  true) unless @has_command.include?(:third)
  29.     add_command("退出",  :退出,  true)
  30.   end
  31.     #--------------------------------------------------------------------------
  32.   # ● 获取显示行数
  33.   #--------------------------------------------------------------------------
  34.   def visible_line_number
  35.     3
  36.   end
  37.  
  38.    #--------------------------------------------------------------------------
  39.   # ● 获取列数
  40.   #--------------------------------------------------------------------------
  41.   def col_max
  42.     return 2
  43.   end
  44.  
  45.     def item_width
  46.     320
  47.   end
  48.  
  49. #~  def item_width
  50. #~    return 24*3+30
  51. #~    end
  52.     def window_width
  53.     return 640
  54.   end
  55.  
  56.   #--------------------------------------------------------------------------
  57.   # ● 加入选择的选项
  58.   #--------------------------------------------------------------------------
  59.   def push(symbol)
  60.     @has_command.push(symbol) unless @has_command.include?(symbol)
  61.   end
  62. end


RUBY 代码复制
  1. #encoding:utf-8
  2. #==============================================================================
  3. # ■ Scene_D答题
  4. #------------------------------------------------------------------------------
  5. #  答题画面
  6. #==============================================================================
  7.  
  8. class D答题 < Scene_MenuBase
  9.   #--------------------------------------------------------------------------
  10.   # ● 开始处理
  11.   #--------------------------------------------------------------------------
  12.   def start
  13.     super
  14.     create_command_window
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● 生成指令窗口
  18.   #--------------------------------------------------------------------------
  19.   def create_command_window
  20.     $问题ID = Question::Question.keys.sample
  21. #~     Question::QuestionID = Question::Question.keys.sample
  22.     @command_window = Window_dati.new
  23.     @问题标题 = Window_Base.new(0,0,640,48)
  24.     @问题标题.contents.clear
  25.     @问题标题.draw_text_ex(320-24,0,"问题")
  26.     @command_help = Window_Base.new(0,48,640,200)
  27.     @command_help.contents.clear
  28.     @command_help.draw_text_ex(0,0,"#{Question::Question[$问题ID]}")
  29.     $预选答案 = "无"
  30.     $选择答案 = "无"
  31.     @预选答案 = Window_Base.new(0,360,640,60)
  32.     @选择答案 = Window_Base.new(0,420,640,60)
  33.     @预选答案.contents.clear
  34.     @预选答案.draw_text_ex(0,0,"目前预选答案为:#{$预选答案}")
  35.     @选择答案.contents.clear
  36.     @选择答案.draw_text_ex(0,0,"目前选择答案为:#{$选择答案}")
  37.     @command_window.set_handler(:xz, method(:xuanze))
  38.     @command_window.set_handler(:确定, method(:queding))
  39.     @command_window.set_handler(:退出, method(:return_map))
  40.   end
  41.  
  42.  
  43.  
  44.  
  45.  
  46.   def xuanze
  47.    $预选答案 = @command_window.command_name(@command_window.index)
  48.    $预选答案顺序 = @command_window.index
  49.     @预选答案.contents.clear
  50.     @预选答案.draw_text_ex(0,0,"目前预选答案为:#{$预选答案}")
  51. #~     @command_window.index
  52.  
  53.  
  54.     command_end
  55.     end
  56.  
  57.  
  58.  
  59.  
  60.   def queding
  61.     $选择答案 = Question::QuestionE[$预选答案顺序]
  62.      #你选的ABCD
  63.     if $选择答案 == Question::QuestionA[$问题ID]
  64.       正确 = "正确"
  65.     else
  66.       正确 = "错误"
  67.       end
  68.     @选择答案.contents.clear
  69.     @选择答案.draw_text_ex(0,0,"您的答案为:#{$选择答案},#{正确}")
  70.     @command_window.select(0)
  71.     $问题ID = Question::QuestionO.keys.sample
  72.     @command_window.command_gname(0,Question::QuestionO[$问题ID][0])
  73.     @command_window.command_gname(1,Question::QuestionO[$问题ID][1])
  74.     @command_window.command_gname(2,Question::QuestionO[$问题ID][2])
  75.     @command_window.command_gname(3,Question::QuestionO[$问题ID][3])
  76.     @command_help.contents.clear
  77.     @command_help.draw_text_ex(0,0,"#{Question::Question[$问题ID]}")
  78.  
  79.     command_end
  80.     end
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88. def update
  89.     super
  90.  
  91.     SceneManager.goto(Scene_Map) if KeyBoard.press?(VK_X) or KeyBoard.press?(VK_ESCAPE)
  92.     Sound.play_ok if KeyBoard.press?(VK_X) or KeyBoard.press?(VK_ESCAPE)
  93.  
  94.   end
  95. ########
  96.  
  97.  
  98.  
  99.  
  100.  
  101.   #--------------------------------------------------------------------------
  102.   # ● 选择后刷新
  103.   #--------------------------------------------------------------------------
  104.   def command_end
  105.     @command_window.refresh
  106.     @command_window.active = true
  107.   end
  108. end
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-11-17 03:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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