# 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