koheitakahashiのブログ

2020.07.01にプログラマーとして生を受けた私が学んだことや、日常について徒然に書いていきます。

超初歩的なあっち向いてホイゲーム作りました

はじめに

今日は、入門 Sinatraと、Webを支える技術を読み進めていました。

入門 SinatraのWebアプリケーションの簡単な導入として、じゃんけんゲームが紹介されておりました。

今日はSinatraの基本を学んだということで、それを少し変えて超初歩的なあっち向いてホイゲームをアウトプットとして作ってみました。

その始まりから完成までをまとめてみたいと思います。

手順

1. bundle initから始まる

まずは、適当なディレクトリを作成します。

❯ mkdir sinatra_output_game
❯ cd sinatra_output_game

そしたら、bundle initを行います。これでGemfileを作成してくれます。

実行すると以下のようになるはずです。

❯ bundle init
Writing new Gemfile to Desktop/fjordbootcamp/sinatra_output_game/Gemfile

2. 使用したいGemをGemfileに記述する

Gemfileを開き、以下の2つのGemを記述します。sinatraは言わずもがなですが、sinatra-contribは後述するbundleを一々再起動させなくても自動で修正を行わせるために必要なGemです。

gem "sinatra"
gem "sinatra-contrib"

記述したら、bundle installを行います。これで記述したGemがインストールされます。

❯ bundle install --path vendor_bundle
Fetching gem metadata from https://rubygems.org/..........
Bundled gems are installed into `./vendor_bundle`

3. game.rbファイルを作成し、コードを書く

記述したコードは以下のようになります。

require "sinatra"
require "sinatra/reloader"

# ルート処理をする前にプレイヤーとコンピューターが出す手の配列を作成します。
before do
  content_type :txt
  @direction = ["right", "left", "up", "down"]
end

# point/の後にプレイヤーは指す方向を入力します。
get "/point/*" do |direction|
  player_point = direction

# もし、有効でない方向を指したら以下のような文が出ます。
  if !@direction.include?(player_point)
    halt 403, "You must throw one of the following: #{@direction}"
  end

# コンピュータが向く方向は有効な方向からランダムに選ばれます。
  computar_look = @direction.sample

# プレイヤーの指した方向とコンピュータの向いた方向が一致したならプレイヤーの勝利です!!
  if player_point == computar_look
    "You Win!!"
  else
    "Computer looked #{computar_look}. Try again!!"
  end
end

4. bundle execで実行してみます。

以下のように実行してみます。

❯ bundle exec ruby game.rb 

そして、 http://localhost:4567/point/up にアクセスしてみると・・・

f:id:NMP300:20190926195345p:plain
外してしまった🤔

残念、外してしまいました💦

最後に

以上のように、入門 Sinatraで紹介されていた、じゃんけんゲームを少し変えて、超初歩的なあっち向いてホイゲームを作ってみました。

このアウトプットを通して、ルーティングというものがどういうものなのか、どのように行えば良いかが少し分かり始めたような気がします。 明日もSinatra課題に取り組んでいきたいと思います🔥

参考文献

入門 Sinatra

SinatraでとりあえずWebアプリを立ち上げてみる - Qiita