Rubyで学ぶ!初心者が作れるミニゲーム作成方法5選

初心者がRubyで作るミニゲーム5選 Ruby
この記事は約11分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

あなたがこれを読んでいるということは、Rubyを学び始め、自分自身のミニゲームを作りたいと思っている可能性が高いです。

そして、そんなあなたのためにこの記事を書いています。

Rubyを使って初心者でも楽しみながらミニゲームを作るための具体的な方法を5つ紹介します。

各ゲームのサンプルコードも一緒に説明しますので、一緒に学び、作り、遊びましょう!

●Rubyとは

Rubyは、1995年に日本のまつもとゆきひろさんによって開発されたプログラミング言語です。

彼の目指したところは、プログラミングの楽しさを体験できる言語を作ることでした。

その結果、Rubyはシンプルで分かりやすい構文を持ち、直感的にコードを書くことができます。

○Rubyの基本

Rubyの基本は変数、配列、ハッシュ、メソッドなどです。

これらの基本的な概念を理解することで、あなたはRubyでプログラムを書くための土台を築くことができます。

●Rubyで作るミニゲーム作り方

さて、それではRubyを使ってミニゲームを作る方法について見ていきましょう。

5つのミニゲームのサンプルコードを表し、その後で詳しく解説します。

○サンプルコード1:石取りゲーム

石取りゲームは、プレイヤーが交互に石を取り、最後の石を取った人が勝つというシンプルなゲームです。

puts "石取りゲームスタート!"
stones = 20
players = %w[あなた コンピュータ]

while stones > 0
  players.each do |player|
    puts "残りの石: #{stones}個"
    if player == "あなた"
      puts "1~3個の石を取ってください:"
      taken = gets.chomp.to_i
    else
      taken = rand(1..3)
      puts "コンピュータは#{taken}個の石を取りました"
    end
    stones -= taken
    if stones <= 0
      puts "#{player}の勝ち!"
      exit
    end
  end
end

このコードでは、最初に20個の石を用意し、プレイヤー(あなたとコンピュータ)が交互に1~3個の石を取っていきます。

人間のプレイヤーはキーボードから取る石の数を入力し、コンピュータはランダムに石を取ります。

石がなくなったら、最後に石を取ったプレイヤーが勝ちとなります。

実行結果は次のようになります。

石取りゲームスタート!
残りの石: 20個
1~3個の石を取ってください:
2
残りの石: 18個
コンピュータは3個の石を取りました
(中略)
コンピュータの勝ち!

○サンプルコード2:じゃんけんゲーム

次に、じゃんけんゲームをRubyで作ってみましょう。

このゲームではプレイヤーとコンピュータがグー、チョキ、パーのいずれかを出し合い、勝敗を決めます。

hand = {0 => 'グー', 1 => 'チョキ', 2 => 'パー'}

puts "じゃんけんゲームスタート!"
puts "0: グー, 1: チョキ, 2: パー"
print "あなたの手を選んでください: "
player_hand = gets.chomp.to_i

computer_hand = rand(3)
puts "コンピュータの手: #{hand[computer_hand]}"

if player_hand == computer_hand
  puts "引き分けです"
elsif (player_hand - computer_hand + 3) % 3 == 2
  puts "あなたの勝ちです"
else
  puts "あなたの負けです"
end

このコードでは、最初にじゃんけんの手を定義しています。

次に、プレイヤーが自分の手を選び、それとは別にコンピュータがランダムに手を選びます。

最後に、プレイヤーの手とコンピュータの手を比較して勝敗を判定します。

実行結果は次のようになります。

じゃんけんゲームスタート!
0: グー, 1: チョキ, 2: パー
あなたの手を選んでください: 0
コンピュータの手: チョキ
あなたの勝ちです

○サンプルコード3:数当てゲーム

Rubyを使って数当てゲームを作成してみましょう。

このゲームは、コンピュータが1から100までの秘密の数をランダムに選び、プレイヤーがその数を当てるというシンプルなゲームです。

secret_number = rand(1..100)

puts "数当てゲームスタート!"
puts "1から100までの数を当ててください。"

while true
  print "あなたの予想を入力してください: "
  player_guess = gets.chomp.to_i

  if player_guess == secret_number
    puts "正解!秘密の数は#{secret_number}でした!"
    break
  elsif player_guess > secret_number
    puts "それより小さい数です。"
  else
    puts "それより大きい数です。"
  end
end

このコードでは、まず秘密の数をランダムに選び、プレイヤーに予想を入力させます。

プレイヤーの予想が秘密の数と一致したら、正解としてゲームを終了します。

予想が秘密の数より大きかった場合や小さかった場合には、そのヒントを出力し、プレイヤーに再度予想を入力させます。

このコードを実行すると、次のような結果になります。

数当てゲームスタート!
1から100までの数を当ててください。
あなたの予想を入力してください: 50
それより大きい数です。
あなたの予想を入力してください: 75
それより小さい数です。
あなたの予想を入力してください: 62
正解!秘密の数は62でした!

○サンプルコード4:テキスト冒険ゲーム

次に、Rubyを使ってテキスト冒険ゲームを作成してみましょう。

このゲームでは、プレイヤーが異なるシナリオを選ぶことで物語が進行します。

def start_game
  puts "あなたは森の中にいます。北に進みますか、それとも南に進みますか?"
  choice = gets.chomp

  if choice == "北"
    puts "あなたは北へ進み、深い穴に落ちてしまいました。ゲームオーバーです。"
  elsif choice == "南"
    puts "あなたは南へ進み、宝箱を見つけました。勇者への道を進みましょう。"
  else
    puts "理解できない選択肢です。ゲームをやり直してください。"
  end
end

start_game

このコードでは、まずプレイヤーに方向を選ぶように促します。

プレイヤーが「北」を選択すればゲームオーバー、’南’を選択すれば次のレベルへ進むというシナリオが進行します。

他の選択肢が入力された場合には、エラーメッセージを表示します。

このコードを実行すると次のような結果が得られます。

あなたは森の中にいます。北に進みますか、それとも南に進みますか?
> 南
あなたは南へ進み、宝箱を見つけました。勇者への道を進みましょう。

このように、プレイヤーの選択によってゲームの進行が変わります。

シナリオを増やすことで、より複雑なゲームを作ることができます。

○サンプルコード5:フレームワークを使ったシンプルな2Dゲーム

次にご紹介するのは、フレームワークを使ったシンプルな2Dゲームの作り方です。

この作成方法では、「Gosu」というRubyの2Dゲーム開発ライブラリを使用します。

gem install gosu

Gosuを使用すると、簡単な2DゲームをRubyで作成できます。

require 'gosu'

class GameWindow < Gosu::Window
  def initialize
    super 640, 480
    self.caption = "Gosu Tutorial Game"
    @player = Gosu::Image.new("player.png")
    @x = @y = @vel_x = @vel_y = @angle = 0.0
  end

  def update
    if Gosu.button_down? Gosu::KB_LEFT or Gosu::button_down? Gosu::GP_LEFT
      @vel_x -= 0.5
    end
    if Gosu.button_down? Gosu::KB_RIGHT or Gosu::button_down? Gosu::GP_RIGHT
      @vel_x += 0.5
    end
    @x += @vel_x
    @y += @vel_y
    @vel_x *= 0.95
    @vel_y *= 0.95
  end

  def draw
    @player.draw_rot(@x, @y, 1, @angle)
  end
end

window = GameWindow.new
window.show

このコードではGosuのウィンドウを作り、簡単な2Dゲームのプレーヤーを制御します。

プレーヤーは左右のキー操作で移動し、キーを離すと自然と停止します。

この例ではplayer.pngという名前の画像ファイルがプレーヤーのアバターとして必要になります。

このファイルはゲームのメインディレクトリ内に配置してください。

このコードを実行すると、640×480ピクセルのウィンドウが開き、プレーヤーがキーボードの左右キーに反応して移動します。

このサンプルコードを基に、敵キャラクターやアイテムなどを追加して、自分だけのオリジナルゲームを作り上げてみてください。

●Rubyコーディングのポイントと注意点

Rubyでのコーディングには、いくつかのポイントと注意点があります。

ここでは、その一部を解説します。

①変数の命名

Rubyでは変数の命名にスネークケース(単語をアンダースコアでつなぐ形式)を使用します。例えば、「player_score」のようにします。

可読性を保つために、変数名は具体的で明確な名前をつけることが推奨されます。

②インデント

Rubyのコードブロック(例えばif文やdef文内)では、通常、インデント(字下げ)を2つのスペース分行います。

これによりコードの可読性が向上します。

③コメント

コードにはなるべくコメントを残し、コードの動作を説明することが推奨されます。

Rubyでは、’#’記号に続けてコメントを書きます。

④メソッドの定義

Rubyのメソッドは ‘def’キーワードで定義します。

メソッド名も変数と同様、スネークケースを使用します。

⑤メソッドの終了

Rubyのメソッドは、’end’キーワードで終了します。

これはPythonのようなインデントによるブロックの終了とは異なります。

●Rubyの学習方法とリソース

Rubyを学ぶ方法は様々ですが、主な学習方法と有用なリソースを紹介します。

①オンラインチュートリアル

インターネット上には多数の無料チュートリアルがあります。

例えば、”Ruby in Twenty Minutes”や”Learn Ruby the Hard Way”は、Ruby初心者に対して基本概念から徹底的に解説しています。

さらに、これらのチュートリアルは互いに補完的な内容となっており、Rubyの様々な側面を学ぶことができます。

②オンラインコース

CourseraやUdemyなどのオンライン学習プラットフォームでは、Rubyに関するコースが提供されています。

ビデオレクチャーや実際のプロジェクトを通じて、より深くRubyを学ぶことができます。

③書籍

プログラミングの基本を学ぶためには、書籍も依然として有効なリソースです。

例えば、”Programming Ruby”や”The Well-Grounded Rubyist”は、Rubyの基本から高度なトピックまで網羅しています。

④コミュニティ

Rubyには活発なコミュニティがあり、初心者から上級者まで幅広いユーザーが情報交換や質問をしています。

Stack OverflowやRubyの公式フォーラムなどを活用し、自分の問題に対する解答を探すとともに、他の人の質問に答えることで自身の理解を深めることも可能です。

⑤実践的なプロジェクト

チュートリアルやコース、書籍から学んだ知識を実際のプロジェクトに適用することは、学習を定着させるために不可欠です。

例えば、この記事で紹介したミニゲームの作成は、Rubyの学習における実践的なプロジェクトとなるでしょう。

まとめ

この記事では、Rubyを使ったミニゲームの作成方法を5つ紹介しました。

各ゲームの作成過程では、Rubyの基本的な文法や構造、オブジェクト指向といったプログラミングの基本概念が詳しく解説されています。

これらの理解は、より大きなプロジェクトを成功させるための基盤となります。

また、Rubyのコーディングに際してのポイントと注意点も紹介しました。

これらを意識することで、コードの品質を向上させ、より良いプログラムを作成することができます

エラーとの適切な向き合い方やテストの重要性を理解することで、開発の効率を高めることができます。

さらに、Rubyの学習方法とリソースについても触れました。

自分の学習スタイルに合った方法を選択し、Rubyの知識と技術を深めていくことをお勧めします。

初心者から上級者まで、Rubyのコミュニティは非常に活発で、質問や疑問に対する回答を得られます。

この記事を通じて、Rubyを学び、自分だけのミニゲームを作る楽しさを感じて頂ければと思います。

プログラミングは、論理的思考を鍛え、創造力を発揮する素晴らしいフィールドです。

Rubyはその学習を始めるのに最適な言語の一つです。

挑戦して、新たな可能性を見つけてみてください。