# encoding: UTF-8 # 以下はサンプルプログラム # SCENARIO_TEST_02b_R02.rb # 追記b:変数の名前をリファクタしました # :デフォルトキーを設定しました # 追記c:改行出力の箇所を変更しました # Ruby動作2.6で確認 require 'io/console' class Sys_Vars # ボタンが押された時にこれらの変数をselected_nextに代入して # メインルーチンにジャンプする attr_accessor :next_1 attr_accessor :next_2 attr_accessor :next_3 attr_accessor :next_4 attr_accessor :next_5 attr_accessor :next_6 attr_accessor :next_7 attr_accessor :next_8 # これがtrueになると終了する attr_accessor :exit # ボタンを押して選択される選択肢のID attr_accessor :selected_next def initialize() @next_1 = "a" @next_2 = "a" @next_3 = "a" @next_4 = "a" @next_5 = "a" @next_6 = "a" @next_7 = "a" @next_8 = "a" @exit = false @selected_next = "a" @def_push_key = " " end def set_def_push_key arg @def_push_key = arg end def get_def_push_key arg = nil if arg == nil return @def_push_key end return arg end end # ここからメインルーチン class Main def initialize() @sv = Sys_Vars.new() end def run_main tmp_ch = "?" while 1 if @sv.exit == true then break end case @sv.selected_next when "a" then @sv.next_1 = "aa" @sv.next_2 = "ab" @sv.next_3 = "ac" @sv.next_4 = "ad" @sv.next_5 = "ae" @sv.next_6 = "af" @sv.next_7 = "ag" @sv.next_8 = "ah" print("zキーかxキーかcキーかvキーか\n") print("aキーかsキーかdキーかfキーを押してください\n") print("終了:qキー") while 1 tmp_ch = get_getc() if tmp_ch == "z" @sv.selected_next = @sv.next_1 print("\n\n") break elsif tmp_ch == "x" @sv.selected_next = @sv.next_2 print("\n\n") break elsif tmp_ch == "c" @sv.selected_next = @sv.next_3 print("\n\n") break elsif tmp_ch == "v" @sv.selected_next = @sv.next_4 print("\n\n") break elsif tmp_ch == "a" @sv.selected_next = @sv.next_5 print("\n\n") break elsif tmp_ch == "s" @sv.selected_next = @sv.next_6 print("\n\n") break elsif tmp_ch == "d" @sv.selected_next = @sv.next_7 print("\n\n") break elsif tmp_ch == "f" @sv.selected_next = @sv.next_8 print("\n\n") break elsif tmp_ch == @sv.get_def_push_key("q") @sv.exit = true print("\n\n") print("QUIT") tmp_ch = get_getc() break end end # end of while B when "aa" then @sv.next_1 = "a" print("あなたはzキーを押しましたね\n") print("NEXT:spaceキー") key_push_next @sv.next_1 when "ab" then @sv.next_1 = "a" print("あなたはxキーを押しましたね\n") print("NEXT:spaceキー") key_push_next @sv.next_1 when "ac" then @sv.next_1 = "a" print("あなたはcキーを押しましたね\n") print("NEXT:spaceキー") key_push_next @sv.next_1 when "ad" then @sv.next_1 = "a" print("あなたはvキーを押しましたね\n") print("NEXT:spaceキー") key_push_next @sv.next_1 when "ae" then @sv.next_1 = "a" print("あなたはaキーを押しましたね\n") print("NEXT:spaceキー") key_push_next @sv.next_1 when "af" then @sv.next_1 = "a" print("あなたはsキーを押しましたね\n") print("NEXT:spaceキー") key_push_next @sv.next_1 when "ag" then @sv.next_1 = "a" print("あなたはdキーを押しましたね\n") print("NEXT:spaceキー") key_push_next @sv.next_1 when "ah" then @sv.next_1 = "a" print("あなたはfキーを押しましたね\n") print("NEXT:spaceキー") key_push_next @sv.next_1 end # end of case end # end of while A end # end of method def get_getc $stdin.raw do |io| ch = io.getc print ch return ch end end def key_push_next p_next while 1 tmp_ch = get_getc() if tmp_ch == @sv.get_def_push_key @sv.selected_next = p_next print("\n\n") break end end # end of while end end m=Main.new() m.run_main