単語リストの作成も開始したのでTzijonikプログラムを更新。とは言っても今回は改悪みたいなものだけど。挨拶の後にリストにある4つの単語の内一つを答えとして用いる仕様。本にならってRubyで継承も使ってみた。結果、ファイルは3つ。
まずはTzijonik.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
require './Kotzij' def prompt(kotzij) return kotzij.responder_name + '> ' end puts('Tzijonik: Version 1.1 (20170505)') currentTime = Time.now #get the current time hour = currentTime.hour if hour > 3 && hour < 12 then saludo = 'Saqarik' elsif hour >= 12 && hour < 18 then saludo = 'Xe\'q\'ij' else saludo = 'Xokaq\'ab\'' end flor = Kotzij.new puts(prompt(flor) + saludo) puts(prompt(flor) + 'In al Kotz\'ij') while true print('> ') input = gets input.chomp! break if input == '' response = flor.dialogue(input) puts(prompt(flor) + response) end |
次にKotzij.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
require './Responder' class Kotzij def initialize @responder = RandomResponder.new('Random') end def dialogue(input) return @responder.response(input) end def responder_name return @responder.name end end |
最後にResponder.rb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
class Responder def initialize(name) @name = name end def response(input) return '' end def name return @name end end class WhatResponder < Responder def response(input) "Jas #{input}?" end end class RandomResponder < Responder def initialize(name) super @responses = ['Pix', 'Inup', 'Powi\'', 'Xpa\'ch'] end def response(input) return @responses[rand(@responses.size)] end end |
しかしRubyの継承のやり方はJavaと比べると不安になる位シンプルだなぁと思う。