読んで欲しい人
- rubyでプログラムを作ってみたい人
- 過去の自分
動作環境
- ruby 3.3.3
アプリについて
ファイル構造
.
├── pokemon.rb
├── pokemon.csv
ソースコード
pokemon.rb
# ファイル内でcsvライブラリ(モジュール)を使用するための記述
require 'csv'
# CSVファイルを読み込む
def load_pokemon_from_csv(file_path)
pokemon_data = []
# foreachにheaders: trueをすると、keyとvalueをいい感じに扱ってくれる
CSV.foreach(file_path, headers: true).each_with_index do |row, _i|
pokemon_data << row.to_hash
break if _i == 150
end
pokemon_data
end
def main
file_path = 'pokemon.csv'
pokemon_data = load_pokemon_from_csv(file_path)
# sampleは配列からランダムに1つ返してくれる
random_pokemon = pokemon_data.sample
puts "#{random_pokemon['name']}は日本語では何と呼ばれますか?"
japanese_name_input = gets.chomp.downcase
correct_japanese_name = random_pokemon['japanese_name'].downcase.gsub(/[a-z]/, '')
if japanese_name_input.include?(correct_japanese_name)
puts '正解!'
else
puts "残念!正解は#{random_pokemon['japanese_name']}でした!"
end
# 例外時の処理
rescue StandardError => e
puts "エラー: #{e.message}"
end
main
csvファイル
ポケモンの情報が載っているCSVファイル
↑
めっちゃ細かく記述してあります。びっくり
pokemon.csv
pokedex_number,name,japanese_name,base_total,attack,defense,sp_attack,sp_defense,speed,hp,capture_rate,experience_growth,type1,type2,classification,generation,is_legendary,x,y
1,Bulbasaur,Fushigidaneフシギダネ,318,49,49,65,65,45,45,45,1059860,grass,poison,Seed Pokémon,1,0,2.0027124881744385,-23.850000381469727
2,Ivysaur,Fushigisouフシギソウ,405,62,63,80,80,60,60,45,1059860,grass,poison,Seed Pokémon,1,0,-4.191871643066406,-1.011356234550476
3,Venusaur,Fushigibanaフシギバナ,625,100,123,122,120,80,80,45,1059860,grass,poison,Seed Pokémon,1,0,16.135290145874023,25.56937026977539
...
めっちゃ続く
学び・感想
- RubyでCSVの扱い方を知れました
- RailsをやるにはRubyの基礎を〜と言うことで、Rubyもどんどん書かないとなぁ
参考記事