FakerGemで作るポケモンGo


経緯

プログラミング学習を進める過程で様々な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から作ることは大いに学びになる。「捕獲率の変動」や「街の移動」など色々とオプションの余地もあるため、時間を見つけて遊んでいこう。