これは奇妙な問題のように思えます。入力文字列を受け取り、 and を使用scan
して特定の値を抽出するこのビットの Ruby コードがあります。ステートメントでflatten
その値を操作することを望んでいますが、問題があります。if...then
私の入力文字列は、その地域の「危険生物」の数を表しています。危険なクリーチャーが存在しない、または 2 体以上のクリーチャーを表す文字列は、常に次のような標準的なものです。
「そのエリアに危険な生き物はいない」または「危険な生き物が 1 匹...」など。
これを使用して、クリーチャーの数を表す単語を「いいえ」、「1 つ」、「2 つ」などとしてフェッチし、後でこれらを数値に変換することを期待しています - 「いいえ」= 0、「1 つ」 " = 1 など
これを行うには、次を使用します。
crittercount = strcheck.scan(/a*(no|one|two|three|four|five|six|seven|eight|nine|ten)a*/)
次にif then
、変数crittercount
に対して次のように実行します。
if crittercount == "no"
critters = 0
... exit and go do something with the var...
end
これをそれぞれにしています。(この問題を理解したら、使用しますif..elsif..end
)
if crittercount == "one"
critters = 1
... exit and go do something with the var...
end
...
crittercount == "ten"
私はちょうど使用した後
if crittercount == "ten"
critters = 10
else
critters = 99
end
maxcreatures
ここに問題があります: equal toという変数があります10
。strcheck
たとえば、「その地域に危険な生き物はいない」という値を取得し、正確な文字列を返す値を出力します。次に、crittercount 変数を出力します。この例では、「いいえ」と表示されます。
ただし、ステートメントを理解したらif..then..
、次を使用して何をすべきかを評価します。
if critters > maxcreatures
print "Maximum Creatures " + critters.to_s + " and maximum is #{maxcreatures}. Lets Bail"
else
print "Critter count " + critters.to_s + " is less than #{maxcritters} Keep going."
end
私が得ているあらゆる状況で99
、私はすべてを試したことを誓います。.flatten
正規表現の最後で使ってみたり、var で使って.strip
みたりcrittercount
。誰かがこれを見て、「まあ、これを試してみてください」と言ってくれることを願っています。
リクエストに応じて、ここにすべてのコードがあります。ここには、意味をなさない可能性のある他の関数への呼び出しがあります...
maxcritters = 2
critters = 0
put "count critter"
strcheck = matchfind "You notice ?"
crittercount = strcheck.scan(/a*(no|one|two|three|four|five|six|seven|eight|nine|ten)a*/)
echo strcheck
echo crittercount
crittercount = crittercount.strip
if crittercount == "no"
critters = 0
goto "roundup"
end
if crittercount == "one"
critters = 1
goto "roundup"
end
if crittercount == "two"
critters = 2
goto "roundup"
end
if crittercount == "three"
critters = 3
goto "roundup"
end
if crittercount == "four"
critters = 4
goto "roundup"
end
if crittercount == "five"
critters = 5
goto "roundup"
end
if crittercount == "six"
critters = 6
goto "roundup"
end
if crittercount == "seven"
critters = 7
else
critters = 99
end
roundup:
if critters > maxcritters
echo "Maximum Creatures " + critters.to_s + " and maximum is #{maxcritters}. Lets Bail"
critters == nil
fput "retreat"
else
echo "Critter count " + critters.to_s + " is below maximum of #{maxcritters} - We're cool. Keep going."
critters == nil
goto "combatcheck"
end