今回は関数を使ったプログラムをガリガリ書いていきたいと思います。
早速ですが、次のプログラムを作って観てください
- 演算子と2つの数値を引数にして、計算結果を返す関数を作成してください。
こんな感じのプログラムです。
- プロンプトで「グー、チョキ、バー」を入力してもらい、コンピュータとじゃんけんをする
プログラムを作成してください。
引数はユーザの入力、戻り値はじゃんけん結果とします。
ランダム値 | コンピュータのだした手 |
1 | グー |
2 | チョキ |
3 | パー |
つまり、ユーザが(1)「グー」を入力した場合、コンピュータのでランダム値が
「2」(チョキ)の場合ユーザの勝利です。
こんな感じ。
ちょっと難しいかもしれないので、以降にヒントを書いていきます。
みないで作れたら最高ですね!
第1ヒント:javascriptでランダムな数値を得る方法
- 1-3までのランダムな数値は次のコードで得ることができます。
123var random = Math.random()*3+1var random = Math.floor(random)console.log(random)ちなみにMath.random()は0以上1未満のランダムな数値を出力します。
このランダム数値を利用して1-3までのランダム数値を生成しています。 - 入力データと出力データを明確にする。
実際遊んでもらったと思うので、入力値はわかりますね?そうです。
1~3の数字を入れてもらいます。プロンプトが必要ですね。
出力はジャンケン結果と自分が出した手とコンピュータが出した手です。 - 必要なものはなんでしょう。
・ユーザの1~3の入力値を受ける機能が必要!
・コンピュータが出す手を決める必要がありますね。。
・ユーザが出す手とコンピュータの出す手からどっちが勝利したか判定
する必要がありますね。
・ユーザの入力値、1~3は結果を出すときにそれぞれグー、チョキ、パーにす
必要がありますね。
第2ヒント:機能ごとに関数を作成する
今回は関数を使って書いてもらうのですが、関数の作り方は自由です。
ちょっと思いつかない、という場合は一つの例として下の関数を作ってみてください。
・コンピュータの手を作る関数
・コンピュータ出した手とユーザの出した手を引数として結果を返す関数。
・数字の1~3をそれぞれグー、チョキ、パー、に変換する関数。
第3ヒントというかオプション
勝利判定について、もちろん全パターンをif,switch文で書いてもいいですが、
もうちょっと良い方法がないか考えてみましょう。
2人でジャンケンする場合で、グーが1、チョキが2、パーが3とすると
発生するパターンは下記のようになります。
同じ手の場合は0になるってことは、、、お互いの手を引いて0ならあいこ。。。
何か規則性が!
ユーザの手 | PCの手 | 差 | 結果 |
1 :グー | 1:グー | 0 | あいこ |
1 :グー | 2:チョキ | -1 | 勝ち |
1 :グー | 3:パー | -2 | 負け |
2:チョキ | 1 :グー | 1 | 負け |
2:チョキ | 2:チョキ | 0 | あいこ |
2:チョキ | 3:パー | -1 | 勝ち |
3:パー | 1 :グー | 2 | 勝ち |
3:パー | 2:チョキ | 1 | 負け |
3:パー | 3:パー | 0 | あいこ |