Rubyでポケモンウィークネスファインダーを作りました。たくさんの言葉が必要です。 このコードを書くのに少し素敵で洗練されたものを提案してもらえますか?
メニューは以下の通りです。
puts "Which type of Pokemon do you want to know weaknesses?
Menu
1 Normal
2 Fire
3 Water
4 Electric
5 Grass
6 Ice
7 Fighting
8 Poison
9 Ground
10 Flying
11 Psychic
12 Bug
13 Rock
14 Ghost
15 Dragon
16 Dark
17 Steel
18 Fairy
次に、ユーザーの応答を取得し、ユーザーの選択に対する弱点を出力します。
type = gets.to_i
case type
when 1 #Normal
puts "Fighting"
when 2 #Fire
puts "Ground, Rock, Water"
when 3 #water
puts "Fire, Ground, Rock"
when 4 #Electric
puts "Ground"
when 5 #Grass
puts "Bug, Fire, Flying, Ice, Poison"
when 6 #Ice
puts "Fighting, Fire, Rock, Steel"
when 7 #Fighting
puts "Fairy, Flying, Psychic"
when 8 #Poison
puts "Ground, Psychic"
when 9 #Ground
puts "Grass, Ice, Water"
when 10 #Flying
puts "Electric, Ice, Rock"
when 11 #Psychic
puts "Bug, Dark, Ghost"
when 12 #Bug
puts "Fire, Flying, Rock"
when 13 #Rock
puts "Fighting, Grass, Ground, Steel, Water"
when 14 #Ghost
puts "Dark, Ghost"
when 15 #Dragon
puts "Dragon, Fairy, Ice"
when 16 #Dark
puts "Bug, Fairy, Fighting"
when 17 #Steel
puts "Fighting, Fire, Ground"
when 18 #Fairy
puts "Poison, Steel"
else
puts "Error"
end
ゲームデータの構造化から始めることができると思います。
game_data = {
1 => ["Normal", "Fighting" ],
2 => ["Fire", "Ground, Rock, Water"],
3 => ["Water", "Fire, Ground, Rock"],
4 => ["Electric", "Ground"],
5 => ["Grass", "Bug, Fire, Flying, Ice, Poison"],
6 => ["Ice", "Fighting, Fire, Rock, Steel"],
7 => ["Fighting", "Fairy, Flying, Psychic"],
8 => ["Poison", "Ground, Psychic"],
9 => ["Ground", "Grass, Ice, Water"],
10 => ["Flying", "Electric, Ice, Rock"],
11 => ["Psychic", "Bug, Dark, Ghost"],
12 => ["Bug", "Fire, Flying, Rock"],
13 => ["Rock", "Fighting, Grass, Ground, Steel, Water"],
14 => ["Ghost", "Dark, Ghost"],
15 => ["Dragon", "Dragon, Fairy, Ice" ],
16 => ["Dark", "Bug, Fairy, Fighting"],
17 => ["Steel", "Fighting, Fire, Ground"],
18 => ["Fairy", "Poison, Steel" ]
}
これで作業できるようになりました。
puts "Which type of Pokemon do you want to know weaknesses?\nMenu"
game_data.each { |point, data| puts "#{point} #{data.first}" }
type = gets.to_i
return "Error" unless game_data.has_key?(type)
puts game_data[type].last
今後の推奨事項。case ステートメントが大きくなりすぎる場合は、ハッシュの使用を検討することをお勧めします。