Ruby 簡単システム その4

# 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

Ruby 簡単システム その3

グローバル変数を使いすぎだったのでメンバに変更しました
普通に$を消すとうまいこと動作しなかったんですが
それローカル変数ですねw
classを作ってそのメンバにして委譲したら上手くいきました
メンバなのでGCの対象にもなりそう
追記b:変数の名前をリファクタしました
追記c:デフォルトキーを設定しました
:改行出力の箇所を変更しました

# encoding: UTF-8
# 以下はサンプルプログラム
# SCENARIO_TEST_01c_R02.rb
# 追記b:変数の名前をリファクタしました
# 追記c:デフォルトキーを設定しました
# :改行出力の箇所を変更しました
# Ruby動作2.6で確認
 require 'io/console'
 class Sys_Vars
# ボタンが押された時にこれらの変数をselected_btnextに代入して
# メインルーチンにジャンプする
 attr_accessor :next_1
   attr_accessor :next_2
# これがtrueになると終了する
 attr_accessor :exit
# ボタンを押して選択される選択肢のID
 attr_accessor :selected_next
   def initialize()
     @next_1 = "a"
     @next_2 = "a"
     @exit = false
     @selected_next = "a"
     @def_push_key = "z"
   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"
         print("zキーかxキーを押してください\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 == @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:zキー")
         while 1
           tmp_ch = get_getc()
           if tmp_ch == @sv.get_def_push_key
             @sv.selected_next = @sv.next_1
             print("\n\n")
             break
           end
         end # end of while C
       when "ab" then
         @sv.next_1 = "a"
         print("あなたはxキーを押しましたね\n")
         print("NEXT:zキー")
         while 1
           tmp_ch = get_getc()
           if tmp_ch == @sv.get_def_push_key
             @sv.selected_next = @sv.next_1
             print("\n\n")
             break
           end
         end # end of while D
       end # end of case
     end # end of while A
   end # end of method
 end # end of class
 def get_getc
   $stdin.raw do |io|
     ch = io.getc
     print ch
     return ch
   end
 end
 m=Main.new()
 m.run_main

Ruby 簡単システム その2

PUSH KEY動作を二つから8個にしました

# encoding: UTF-8
#  以下はサンプルプログラム
# Ruby動作2.6で確認
# ボタンが押された時にこれらの変数をselected_btnextに代入して
# メインルーチンにジャンプする
 $btnext_1 = ""
 $btnext_2 = ""
 $btnext_3 = ""
 $btnext_4 = ""
 $btnext_5 = ""
 $btnext_6 = ""
 $btnext_7 = ""
 $btnext_8 = ""
# ボタンを押して選択される選択肢のID
 $selected_btnext = "a"
# これがtrueになると終了する
 $exit = false
 require 'io/console'
# ここからメインルーチン
 def bt_selected_gomain
   tmp_ch = "?"
   while 1
     if $exit == true then break end
     case $selected_btnext
     when "a" then
       $btnext_1 = "aa"
       $btnext_2 = "ab"
       $btnext_3 = "ac"
       $btnext_4 = "ad"
       $btnext_5 = "ae"
       $btnext_6 = "af"
       $btnext_7 = "ag"
       $btnext_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"
           $selected_btnext = $btnext_1
           break
         elsif tmp_ch == "x"
           $selected_btnext = $btnext_2
           break
         elsif tmp_ch == "c"
           $selected_btnext = $btnext_3
           break
         elsif tmp_ch == "v"
           $selected_btnext = $btnext_4
           break
         elsif tmp_ch == "a"
           $selected_btnext = $btnext_5
           break
         elsif tmp_ch == "s"
           $selected_btnext = $btnext_6
           break
         elsif tmp_ch == "d"
           $selected_btnext = $btnext_7
           break
         elsif tmp_ch == "f"
           $selected_btnext = $btnext_8
           break
         elsif tmp_ch=="q"
           $exit = true
           print("QUIT")
           tmp_ch = get_getc()
           break
         end
       end # end of while B
     when "aa" then
       $btnext_1 = "a"
       print("あなたはzキーを押しましたね\n")
       print("NEXT:spaceキー")
       space_push_next $btnext_1
     when "ab" then
       $btnext_1 = "a"
       print("あなたはxキーを押しましたね\n")
       print("NEXT:spaceキー")
       space_push_next $btnext_1
     when "ac" then
       $btnext_1 = "a"
       print("あなたはcキーを押しましたね\n")
       print("NEXT:spaceキー")
       space_push_next $btnext_1
     when "ad" then
       $btnext_1 = "a"
       print("あなたはvキーを押しましたね\n")
       print("NEXT:spaceキー")
       space_push_next $btnext_1
     when "ae" then
       $btnext_1 = "a"
       print("あなたはaキーを押しましたね\n")
       print("NEXT:spaceキー")
       space_push_next $btnext_1
     when "af" then
       $btnext_1 = "a"
       print("あなたはsキーを押しましたね\n")
       print("NEXT:spaceキー")
       space_push_next $btnext_1
     when "ag" then
       $btnext_1 = "a"
       print("あなたはdキーを押しましたね\n")
       print("NEXT:spaceキー")
       space_push_next $btnext_1
     when "ah" then
       $btnext_1 = "a"
       print("あなたはfキーを押しましたね\n")
       print("NEXT:spaceキー")
       space_push_next $btnext_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
     print "\n\n"
     return ch
   end
 end
 def z_push_next p_next
   while 1
     tmp_ch = get_getc()
     if tmp_ch == "z"
       $selected_btnext = p_next
       break
     end
   end # end of while
 end
 def space_push_next p_next
   while 1
     tmp_ch = get_getc()
     if tmp_ch == " "
       $selected_btnext = p_next
       break
     end
   end # end of while
 end
 bt_selected_gomain

練習問題。素数かcheck

練習問題です

# encoding: UTF-8
 print("素数かcheck\nPlease input NUM(int)\n")
 ch=gets
 _4check=100
 def prime?(num)
   _4check=num
   c=2
   while 1
     if c*c > _4check
       return 1
     end
     if ((_4check%c)==0)&&(_4check!=c)
       return 0
     end
     if c==2
       c+=1
     else
       c+=2
     end
   end
 end
 num=31
 result=prime? num
 if result==1
   print("#{num}は素数です\n")
 else
   print("#{num}は素数ではありません\n")
 end
 num=35
 result=prime? num
 if result==1
   print("#{num}は素数です\n")
 else
   print("#{num}は素数ではありません\n")
 end
 num=101
 result=prime? num
 if result==1
   print("#{num}は素数です\n")
 else
   print("#{num}は素数ではありません\n")
 end
 num=102
 result=prime? num
 if result==1
   print("#{num}は素数です\n")
 else
   print("#{num}は素数ではありません\n")
 end
 ch=gets

コインみたいな乱数

問題じゃないんですけど、なんか書きました

# encoding: UTF-8
 def rnd_coin
   r = Random.rand(2)
   if r==1
     r_s="表"
   elsif r==0
     r_s="裏"
   else
     r_s="nil"
   end
   return r_s
 end
 print ("coin rnd sample\n")
 ch=gets

コインを10回振ってその合計

# encoding: UTF-8
def rnd_coin_10
 sum=0
   for i in 1 .. 10
     r = Random.rand(2)
     if r==1
       r_s="表"
     elsif r==0
       r_s="裏"
     else
       r_s="nil"
     end
     sum+=r
     print ("#{i}:#{r_s}\n")
   end
   return sum
 end
 print ("coin rnd sample\n")
 ch=gets
 tmp_sum = rnd_coin_10
 print ("sum:#{tmp_sum}\n")
 ch=gets

練習問題。サイコロみたいなrnd

乱数でサイコロみたいな処理のメソッドを
記述しなさいみたいな問題でした

# encoding: UTF-8
 def dice
   r = Random.rand(6)
   r+=1
   return r
 end
 print ("rnd sample\n")
 ch=gets
 for i in 1 .. 8
   tmp_r = dice
   print ("#{i}:#{tmp_r}\n")
 end
 ch=gets

サイコロを10回振って合計を計算しなさいみたいな問題でした

# encoding: UTF-8
 def dice10
   sum=0
   for i in 1 .. 10
     r = Random.rand(6)
     r+=1
     sum+=r
     print ("#{i}:#{r}\n")
   end
   return sum
 end
 print ("rnd sample\n")
 ch=gets
 tmp_sum = dice10
 print ("sum:#{tmp_sum}\n")
 ch=gets

たのしいRubyの練習問題

せっかく解いたからUPしよーかなとw

# encoding: UTF-8
# 摂氏→華氏
 print("Please input 摂氏(int)\n")
 input=gets
 input=input.chomp!
 my=input.to_f
 you=(my*9)/5+32
 print ("result(華氏): #{you}")
 ch=gets
# encoding: UTF-8
#  華氏→摂氏
 print("Please input 華氏(int)\n")
 input=gets
 input=input.chomp!
 my=input.to_f
 you=((my-32)*5)/9
 print ("result(摂氏): #{you}")
 ch=gets