「恋するプログラム」のMac向け読み替え その2
前回に続き、Macユーザーが恋するプログラム
を勉強する上で、読み替えや説明が必要だったことをメモして行く。
-
CHAPTER 6-1
サンプル(KOISURU_PROGRAM/sample/emotion)は、GUI絡みの変更のため、Macでは関係ない。 -
CHAPTER 6-3
サンプル(KOISURU_PROGRAM/sample/emotion2)に以下の変更を行った。-
GUIで使われる
bmps
フォルダ、noby.rb
およびnobycanvas.rb
は破棄する。 -
dics
フォルダにある2つの辞書をテキストエディタで開き、文字コードをUTF-8に、改行コードをLFに変換する。 -
dictionary.rb
は改行コードを変換する。 -
responder.rb
は文字コードと改行コードを変換する。 -
unmo.rb
は改行コードを変換、さらに以下の変更を行う。unmo.rb 1〜2行目
require 'responder' require 'dictionary'
を
require_relative 'responder' require_relative 'dictionary'
に書き換える。
-
前回のCHAPTER 3-2での読み替えで作成した
proto.rb
をコピーしておく。
-
GUIで使われる
-
CHAPTER 6-4
サンプル(KOISURU_PROGRAM/sample/emotion2)を動かすのは上記変更だが、番外編としてコードの理解に手間取ったことをメモしておく。-
dictionary.rb PatternItemクラス
- SEPARATORの正規表現の意味 – 後方参照
-
SEPARATOR = /^((-?\d+)##)?(.*)$/ # (2) # SEPARATORの正規表現の意味 # # 「^」は、行頭にマッチ # 「-?」は、-(マイナス)が1回あるか、ないケース # 「\d+」は、10進数が1回以上 # 「-?」と「\d+」を組み合わせて正負の10進数が1回以上を意味する # (-?\d+)で、それをキャプチャ($2)すると同時に、この()でグループ化 # ((-?\d+)##)で、「正負の10進数##」をキャプチャ($1)すると同時に、この()でグループ化 # その次の「?」で、((-?\d+)##)が1回あるか、ないケース # (.*)は任意の一文字「.」の0回以上の繰り返し「*」をキャプチャ($3)すると同時に、 # この()でグループ化 # 「$」は行末にマッチ # 最終的に行頭が「±a」で始まり、行末が「任意の文字列」で終わる「±a##任意の文字列」 # を意味し、「±a」「±a##」「任意の文字列」をキャプチャする。 # # $& =「±a##任意の文字列」*マッチした文字列 # $1 =「±a##」*マッチした部分文字列1 # $2 =「±a」*マッチした部分文字列2 # $3 = 「任意の文字列」*マッチした部分文字列3 # # $付きの文字で取得したもの=あとで利用するもの=後方参照
-
dictionary.rb PatternItemクラス initializeメソッド
- initializeメソッドの意味
-
# パターンは入力、フレーズは応答 def initialize(pattern, phrases) # SEPARATORでpatternをマッチング SEPARATOR =~ pattern # @modifyと@patternに$2を整数化したものと$3を代入(後方参照) @modify, @pattern = $2.to_i, $3 # 応答の処理。 @phrases = [] # 「|」で区切られた応答候補をバラし phrases.split('|').each do |phrase| # SEPARATORでphraseをマッチング SEPARATOR =~ phrase # 必要機嫌値と応答のハッシュに格納 @phrases.push({'need'=>$2.to_i, 'phrase'=>$3}) end end
-
dictionary.rb PatternItemクラス suitable?メソッド
- suitable?メソッドの意味
-
def suitable?(need, mood) # (8) return true if need == 0 if need > 0 # 戻り値はmoodがneedより大きいかを判定した結果の真偽値 return mood > need else # 戻り値はmoodがneedより小さいかを判定した結果の真偽値 return mood < need end end
-
今回は短いが、話の区切りの都合上ここまでとする。その3に続く。
この投稿へのトラックバック
トラックバックはありません。
- トラックバック URL
この投稿へのコメント