開発環境
エディター / 実行環境
GuthubCodeSpaces (https://github.co.jp/features/codespaces)
※特に動作環境に縛りはありません。
Rubyのインストールは終わっているものとして進めます。
Rubyがインストールされているかわからないなら、ターミナルやコマンドプロンプト(Windows)で、以下のコマンドを実行し、エラーが出なければインストールされています
ruby -v
作るものの流れ
1, プレイヤーがじゃんけんで出す手をプログラムに入力する
2, CPUがランダムに出す手を決める
3, CPUとプレイヤーの出した手を判定し、勝ち、負け、あいこを判定する
4, 結果を出力する
1, プレイヤーがじゃんけんで出す手をプログラムに入力
Rubyでプログラムに何かを渡すには、実行する時に引数を渡すことで実現できます。例えば、
Ruby main.rb Test Test2
#(このコードは例ですので、実行できません。)
のように、main.rbを実行する際にTestという引数(オプション)と、Test2という引数(オプション)を設定することができます。
では、プログラム側でこの引数を受け取るにはどうするかというと、ARGV[]という配列を使えば引数を幾つでも取得できます。
配列の使い方
配列の使い方
配列の定義
list = []
これでlistという名前の、何も入っていない配列とを定義できます。
また、
list2 = [0,1,2,3,4,5,6,7,8,9]
とすれば、0から9の数字が入っているlist2という名前の配列を定義することができます。配列の中に入るのは数字とは限りませんので、
list3 = ["a","b","c","d"]
のように文字の配列を定義することもできます。
配列の取得
配列を取得するには、 リスト名[インデックス] とします。具体的には、
list[0]
#このプログラムは例ですので、動作しません。
のようにすると、listという名前のリストの1番目を取得できます。
なぜ1番目の取得に1ではなく0を用いるのかというと、プログラミングでは、インデックスは0から始めるという決まりがあるからです。言語によって変わりますが、大体の言語は0で始めます。
そのため、
list = [0,1,2]
puts list[3]
を実行しても、何も出力されません。これは、listの4番目を取得しようとしているけどlistには3番目までしか定義されていないため、4番目には何も存在しないからです。
配列の追加や削除に関しては、今回は使わないので割愛します。
プログラムに渡された引数を取得する
今回のプログラムでは、プレイヤーの出す手だけを引数とした渡せば良いので、
player = ARGV[0]
とすれば、playerという変数にプログラムに渡された1つ目の引数を代入できます。
ここで一度、正常に渡されているか確認しましょう。以下のプログラムをCodeSpacesに入力して、ターミナルで以下のコマンドを実行してください。
※main.rbのところは、自身の作ったファイルに置き換えてください
player = ARGV[0]
puts player
Ruby main.rb "Test"
うまく実行されたでしょうか、実行できたら、ターミナルに、Testと表示されているはずです。Testを他の文字列に変えると、出力も変わりますが、""で囲うのを忘れないでください。
2,CPUがランダムに出す手を決める
Rubyには、配列の中からランダムに一つ取り出すという便利な関数が標準で存在します。それをうまく利用して、CPUにランダムな手を選ばせましょう。
出す手の定義
まずは、CPUが出すことのできる手を配列で管理します。Main.rbを以下のように更新してください。
player = ARGV[0] #プレイヤーの手を取得
cpu = ["グー","チョキ","パー"] #出すことのできる手を定義
cpu_hand = cpu.sample #今回出す手を決める
Rubyでは、
list.sample
#(このコードは例ですので、実行できません。)
と記述すると、listからランダムに一つ取り出すことができます。今回のコードだと、グー、チョキ、パーの3つからランダムに取り出すという動作になります。ここで、本当にランダムに取り出されているのかを検証しましょう。
cpu = ["グー","チョキ","パー"] #出すことのできる手を定義
cpu_hand = cpu.sample #今回出す手を決める
puts cpu_hand
これを実行すると、実行するたびにグー、チョキ、パーのどれかが出力されるはずです。