Project1
标题: 答题系统 [打印本页]
作者: 300英雄    时间: 2019-2-22 20:41
标题: 答题系统
 本帖最后由 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 => ["过去","现代","未来","逢魔之日"],
}
下面附上脚本
#encoding:utf-8
#==============================================================================
# ■ Module Question
#答题系统模组
#==============================================================================
 
module Question
 
 
Question = {
1 => "你是好人吗",
2 => "LOL技能快捷键不包括",
3 => "假面骑士KIKAI是哪一年的",
 
 
}
 
 
 
QuestionA = {
1 => "A",
2 => "C",
3 => "D",
 
 
 
}
 
 
QuestionO = {
1 => ["是","不是","看着办","你猜啊"],
2 => ["1","2","3"],
3 => ["2120","2020","2021","2121"],
 
 
}
 
 
QuestionE = {
0 => "A",
1 => "B",
2 => "C",
3 => "D",
}
 
end
#encoding:utf-8
#==============================================================================
# ■ Module Question
#答题系统模组
#==============================================================================
 
module Question
 
 
Question = {
1 => "你是好人吗",
2 => "LOL技能快捷键不包括",
3 => "假面骑士KIKAI是哪一年的",
 
 
}
 
 
 
QuestionA = {
1 => "A",
2 => "C",
3 => "D",
 
 
 
}
 
 
QuestionO = {
1 => ["是","不是","看着办","你猜啊"],
2 => ["1","2","3"],
3 => ["2120","2020","2021","2121"],
 
 
}
 
 
QuestionE = {
0 => "A",
1 => "B",
2 => "C",
3 => "D",
}
 
end
#encoding:utf-8
#==============================================================================
# ■ Window_dati
#答题的选项窗口
#==============================================================================
 
class Window_dati < Window_Command
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  def initialize
    @has_command = []
    super(0, 248)
  end
  #--------------------------------------------------------------------------
  # ● 生成指令列表
  #--------------------------------------------------------------------------
  def make_command_list
    Question::QuestionO[$问题ID][0] = "" if Question::QuestionO[$问题ID][0] == nil
    Question::QuestionO[$问题ID][1] = "" if Question::QuestionO[$问题ID][1] == nil
    Question::QuestionO[$问题ID][2] = "" if Question::QuestionO[$问题ID][2] == nil
    Question::QuestionO[$问题ID][3] = "" if Question::QuestionO[$问题ID][3] == nil
    add_command("A."+Question::QuestionO[$问题ID][0],  :xz,   Question::QuestionO[$问题ID][0]!="",)
    add_command("B."+Question::QuestionO[$问题ID][1],  :xz,  Question::QuestionO[$问题ID][1]!="",)
    add_command("C."+Question::QuestionO[$问题ID][2],  :xz,   Question::QuestionO[$问题ID][2]!="",)
    add_command("D."+Question::QuestionO[$问题ID][3],  :xz,   Question::QuestionO[$问题ID][3]!="",)
    add_command("确定",  :确定,   true)
#~     add_command("选项3",  :third,  true) unless @has_command.include?(:third)
    add_command("退出",  :退出,  true)
  end
    #--------------------------------------------------------------------------
  # ● 获取显示行数
  #--------------------------------------------------------------------------
  def visible_line_number
    3
  end
 
   #--------------------------------------------------------------------------
  # ● 获取列数
  #--------------------------------------------------------------------------
  def col_max
    return 2
  end
 
    def item_width
    320
  end
 
#~  def item_width
#~    return 24*3+30
#~    end
    def window_width
    return 640
  end
 
  #--------------------------------------------------------------------------
  # ● 加入选择的选项
  #--------------------------------------------------------------------------
  def push(symbol)
    @has_command.push(symbol) unless @has_command.include?(symbol)
  end
end
#encoding:utf-8
#==============================================================================
# ■ Window_dati
#答题的选项窗口
#==============================================================================
 
class Window_dati < Window_Command
  #--------------------------------------------------------------------------
  # ● 初始化对象
  #--------------------------------------------------------------------------
  def initialize
    @has_command = []
    super(0, 248)
  end
  #--------------------------------------------------------------------------
  # ● 生成指令列表
  #--------------------------------------------------------------------------
  def make_command_list
    Question::QuestionO[$问题ID][0] = "" if Question::QuestionO[$问题ID][0] == nil
    Question::QuestionO[$问题ID][1] = "" if Question::QuestionO[$问题ID][1] == nil
    Question::QuestionO[$问题ID][2] = "" if Question::QuestionO[$问题ID][2] == nil
    Question::QuestionO[$问题ID][3] = "" if Question::QuestionO[$问题ID][3] == nil
    add_command("A."+Question::QuestionO[$问题ID][0],  :xz,   Question::QuestionO[$问题ID][0]!="",)
    add_command("B."+Question::QuestionO[$问题ID][1],  :xz,  Question::QuestionO[$问题ID][1]!="",)
    add_command("C."+Question::QuestionO[$问题ID][2],  :xz,   Question::QuestionO[$问题ID][2]!="",)
    add_command("D."+Question::QuestionO[$问题ID][3],  :xz,   Question::QuestionO[$问题ID][3]!="",)
    add_command("确定",  :确定,   true)
#~     add_command("选项3",  :third,  true) unless @has_command.include?(:third)
    add_command("退出",  :退出,  true)
  end
    #--------------------------------------------------------------------------
  # ● 获取显示行数
  #--------------------------------------------------------------------------
  def visible_line_number
    3
  end
 
   #--------------------------------------------------------------------------
  # ● 获取列数
  #--------------------------------------------------------------------------
  def col_max
    return 2
  end
 
    def item_width
    320
  end
 
#~  def item_width
#~    return 24*3+30
#~    end
    def window_width
    return 640
  end
 
  #--------------------------------------------------------------------------
  # ● 加入选择的选项
  #--------------------------------------------------------------------------
  def push(symbol)
    @has_command.push(symbol) unless @has_command.include?(symbol)
  end
end
#encoding:utf-8
#==============================================================================
# ■ Scene_D答题
#------------------------------------------------------------------------------
#  答题画面
#==============================================================================
 
class D答题 < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 开始处理
  #--------------------------------------------------------------------------
  def start
    super
    create_command_window
  end
  #--------------------------------------------------------------------------
  # ● 生成指令窗口
  #--------------------------------------------------------------------------
  def create_command_window
    $问题ID = Question::Question.keys.sample
#~     Question::QuestionID = Question::Question.keys.sample
    @command_window = Window_dati.new
    @问题标题 = Window_Base.new(0,0,640,48)
    @问题标题.contents.clear
    @问题标题.draw_text_ex(320-24,0,"问题")
    @command_help = Window_Base.new(0,48,640,200)
    @command_help.contents.clear
    @command_help.draw_text_ex(0,0,"#{Question::Question[$问题ID]}")
    $预选答案 = "无"
    $选择答案 = "无"
    @预选答案 = Window_Base.new(0,360,640,60)
    @选择答案 = Window_Base.new(0,420,640,60)
    @预选答案.contents.clear
    @预选答案.draw_text_ex(0,0,"目前预选答案为:#{$预选答案}")
    @选择答案.contents.clear
    @选择答案.draw_text_ex(0,0,"目前选择答案为:#{$选择答案}")
    @command_window.set_handler(:xz, method(:xuanze))
    @command_window.set_handler(:确定, method(:queding))
    @command_window.set_handler(:退出, method(:return_map))
  end
 
 
 
 
 
  def xuanze
   $预选答案 = @command_window.command_name(@command_window.index)
   $预选答案顺序 = @command_window.index
    @预选答案.contents.clear
    @预选答案.draw_text_ex(0,0,"目前预选答案为:#{$预选答案}")
#~     @command_window.index
 
 
    command_end
    end
 
 
 
 
  def queding
    $选择答案 = Question::QuestionE[$预选答案顺序]
     #你选的ABCD
    if $选择答案 == Question::QuestionA[$问题ID]
      正确 = "正确"
    else
      正确 = "错误"
      end
    @选择答案.contents.clear
    @选择答案.draw_text_ex(0,0,"您的答案为:#{$选择答案},#{正确}")
    @command_window.select(0)
    $问题ID = Question::QuestionO.keys.sample
    @command_window.command_gname(0,Question::QuestionO[$问题ID][0])
    @command_window.command_gname(1,Question::QuestionO[$问题ID][1])
    @command_window.command_gname(2,Question::QuestionO[$问题ID][2])
    @command_window.command_gname(3,Question::QuestionO[$问题ID][3])
    @command_help.contents.clear
    @command_help.draw_text_ex(0,0,"#{Question::Question[$问题ID]}")
 
    command_end
    end
 
 
 
 
 
 
 
def update
    super
 
    SceneManager.goto(Scene_Map) if KeyBoard.press?(VK_X) or KeyBoard.press?(VK_ESCAPE)
    Sound.play_ok if KeyBoard.press?(VK_X) or KeyBoard.press?(VK_ESCAPE)
 
  end
########
 
 
 
 
 
  #--------------------------------------------------------------------------
  # ● 选择后刷新
  #--------------------------------------------------------------------------
  def command_end
    @command_window.refresh
    @command_window.active = true
  end
end
#encoding:utf-8
#==============================================================================
# ■ Scene_D答题
#------------------------------------------------------------------------------
#  答题画面
#==============================================================================
 
class D答题 < Scene_MenuBase
  #--------------------------------------------------------------------------
  # ● 开始处理
  #--------------------------------------------------------------------------
  def start
    super
    create_command_window
  end
  #--------------------------------------------------------------------------
  # ● 生成指令窗口
  #--------------------------------------------------------------------------
  def create_command_window
    $问题ID = Question::Question.keys.sample
#~     Question::QuestionID = Question::Question.keys.sample
    @command_window = Window_dati.new
    @问题标题 = Window_Base.new(0,0,640,48)
    @问题标题.contents.clear
    @问题标题.draw_text_ex(320-24,0,"问题")
    @command_help = Window_Base.new(0,48,640,200)
    @command_help.contents.clear
    @command_help.draw_text_ex(0,0,"#{Question::Question[$问题ID]}")
    $预选答案 = "无"
    $选择答案 = "无"
    @预选答案 = Window_Base.new(0,360,640,60)
    @选择答案 = Window_Base.new(0,420,640,60)
    @预选答案.contents.clear
    @预选答案.draw_text_ex(0,0,"目前预选答案为:#{$预选答案}")
    @选择答案.contents.clear
    @选择答案.draw_text_ex(0,0,"目前选择答案为:#{$选择答案}")
    @command_window.set_handler(:xz, method(:xuanze))
    @command_window.set_handler(:确定, method(:queding))
    @command_window.set_handler(:退出, method(:return_map))
  end
 
 
 
 
 
  def xuanze
   $预选答案 = @command_window.command_name(@command_window.index)
   $预选答案顺序 = @command_window.index
    @预选答案.contents.clear
    @预选答案.draw_text_ex(0,0,"目前预选答案为:#{$预选答案}")
#~     @command_window.index
 
 
    command_end
    end
 
 
 
 
  def queding
    $选择答案 = Question::QuestionE[$预选答案顺序]
     #你选的ABCD
    if $选择答案 == Question::QuestionA[$问题ID]
      正确 = "正确"
    else
      正确 = "错误"
      end
    @选择答案.contents.clear
    @选择答案.draw_text_ex(0,0,"您的答案为:#{$选择答案},#{正确}")
    @command_window.select(0)
    $问题ID = Question::QuestionO.keys.sample
    @command_window.command_gname(0,Question::QuestionO[$问题ID][0])
    @command_window.command_gname(1,Question::QuestionO[$问题ID][1])
    @command_window.command_gname(2,Question::QuestionO[$问题ID][2])
    @command_window.command_gname(3,Question::QuestionO[$问题ID][3])
    @command_help.contents.clear
    @command_help.draw_text_ex(0,0,"#{Question::Question[$问题ID]}")
 
    command_end
    end
 
 
 
 
 
 
 
def update
    super
 
    SceneManager.goto(Scene_Map) if KeyBoard.press?(VK_X) or KeyBoard.press?(VK_ESCAPE)
    Sound.play_ok if KeyBoard.press?(VK_X) or KeyBoard.press?(VK_ESCAPE)
 
  end
########
 
 
 
 
 
  #--------------------------------------------------------------------------
  # ● 选择后刷新
  #--------------------------------------------------------------------------
  def command_end
    @command_window.refresh
    @command_window.active = true
  end
end
 
| 欢迎光临 Project1 (https://rpg.blue/) | 
Powered by Discuz! X3.1 |