経緯
プログラミング学習を進める過程で様々なGemを使う。Gemの理解を深めるためにGitHub上の元データを眺めていると、面白いものが見つかった。
Faker::Games::Pokemon
Faker::Games::Pokemon.name #=> "Pikachu"
Faker::Games::Pokemon.location #=> "Pallet Town"
Faker::Games::Pokemon.move #=> "Thunder Shock"
なんとポケモンの名前をランダム表示する機能がある。FakerGemを理解するなら、使ってみるのが一番!ということで、ポケモンの遭遇と捕獲を行うアプリケーションを作成してみた。
コード
application.rb
# FakerGemの読み込みと日本語設定
require "Faker"
Faker::Config.locale = :ja
# ポケモンクラスとプレイヤークラスのファイル読み込み
require "./pokemon"
require "./player"
# ポケモンを生成
pokemon_name = Faker::Games::Pokemon.name
pokemon = Pokemon.new(pokemon_name)
# プレイヤーを生成
player = Player.new()
# ポケモンが出現!
pokemon.appear
# プレイヤーの行動
player.command(pokemon_name)
pokemon.rb
class Pokemon
def initialize(name)
@name = name
end
def appear
puts "あっ!野生の#{@name}がとびだしてきた!"
end
end
player.rb
class Player
def command(pokemon)
puts "あなたはどうする?"
puts "[0]モンスターボールを投げる\n[1]逃げる"
input = gets.to_i
if input == 0
puts"やったー!#{pokemon}をつかまえたぞ!"
elsif input == 1
puts "うまくにげきれた!"
else
puts "番号が間違っています"
end
end
end
まとめ
出現するポケモンがランダムのため、「予測できない楽しさ」がある。
FakerGemはもちろんのこと、「オブジェクト指向」や「メソッドの考え方」など、少量のコードでも0から作ることは大いに学びになる。「捕獲率の変動」や「街の移動」など色々とオプションの余地もあるため、時間を見つけて遊んでいこう。