查看: 2907|回复: 0

[原创发布] 答题系统

[复制链接]
梦石
0
星屑
1345
在线时间
378 小时
注册时间
2015-6-16
回帖
526
发表于 2019-2-22 20:41:49 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 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 => ["过去","现代","未来","逢魔之日"],

}




下面附上脚本


[pre lang="ruby"]#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[/pre]

[pre lang="ruby"]#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
[/pre]

[pre lang="ruby"]#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
[/pre]
P1不太上了,有问题加个Q1286124843,不管是脚本还是游戏问题都可以来找我
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部