シンプルで簡単な数字当てゲームを作ってみる

こんにちは。デザイン・システム室の濱口です。

今回は、勉強中のDockerとRubyを使って、簡単なゲームを作成してみました。作成にあたっては、「いかに小さくシンプルに仕上げるか」をコンセプトに設定し、その方針に沿って取り組みました。

ファイル構成について

.
└── guess-number/
    ├── Dockerfile
    └── guess-number.rb

シンプルに2ファイルのみの構成です。フレームワークのRailsやデータベースも使わないのでスッキリしており、compose.ymlやGemfileも作成しません。

Dockerfile

FROM ruby:3.3.5-alpine

WORKDIR /app

COPY . .

CMD ["ruby", "guess-number.rb"]

今回はなるべくコンセプトに沿って作成したいので、Linux-alpineのイメージを選択。
また、Rubyのバージョンも最新のものを選びました。

guess-number.rb

secret_number = rand(1..100)

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

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

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

ゲームの内容は有名な数字当てゲームにしました。0から100の数字をプレイヤーが当てるのという簡単なルールです。While文で処理をループさせて、設定された数字と入力値が一致すればbreakで抜け出すようにしています。

それではゲームを実行してみたいと思いますが、今回はDockerを使用しているのでビルドを実行してイメージの生成からスタートです。

ターミナル

docker build -t guess-number .

ビルドが始まると思いますが、軽量なのですぐにイメージの生成が完了するかと思います。
念の為、どのイメージを使ったか識別できるように-tオプションをつけてtagをつけています。

DockerDesktopでもイメージが作成されたのが確認できました!
最後にこのイメージを元にコンテナを立てゲームを実行して確認してみます。

docker run --rm -it guess-number

結果:無事に実行することができました!

hamaguchi@noMacBook-Pro guess-number % docker run -it --rm guess-number
数当てゲームスタート!
1から100までの数を当ててください。
あなたの予想を入力してください: 50
それより小さい数です。
あなたの予想を入力してください: 25
それより大きい数です。
あなたの予想を入力してください: 35
それより大きい数です。
あなたの予想を入力してください: 40
それより大きい数です。
あなたの予想を入力してください: 45
それより小さい数です。
あなたの予想を入力してください: 43
それより小さい数です。
あなたの予想を入力してください: 42
それより小さい数です。
あなたの予想を入力してください: 41
正解!秘密の数は41でした!

オプションとしてiとt、またrmを設定しています。iとtで入力可能と処理の結果の表示して、rmで処理が完了するとコンテナを自動でダウンするようにしています。

今後は、このゲームに新しいルールを追加したり、別の新しいゲームを作ってみるのも良いかもしれないと考えています。新しい技術や知識を習得することも大切ですが、たまにはこうした楽しみを通じて学ぶことも意義があると感じました。

参考文献:
https://chikinmasa.org/ruby_number-guessing-game/
https://qiita.com/Nagao-S/items/8c03b1996b2c27846937
https://hub.docker.com/_/ruby/tags
https://zenn.dev/swata_dev/articles/2f85a3f4b3022c
https://magazine.techacademy.jp/magazine/19573

さいごに

現在デザイン・システム室では、新しいメンバーを募集しています。少しでも興味を持たれた方は、ぜひご応募ください✨💻
皆様からのご応募、心よりお待ちしております。