プログラム関係の備忘録。技術系記事1000記事以上を目指すブログ

【JavaScript 1-5】 ジャンケンゲームを作る

  • 2017年4月26日
  • 2019年5月10日
  • JavaScript
  • 2096view
  • 3件

プログラム

js/app/js

// ジャンケンの手の番号を設定
var GU = 1;
var CHOKI = 2;
var PA = 3;

// ジャンケンの入力ダイアログボックスを表示
var hum = prompt('半角数字で1~3の数字を入力してください。\n\n' + GU + ':グー\n' + CHOKI + ':チョキ\n' + PA + ':パー');
hum = parseInt(hum, 10);

// 入力値をチェック
if (hum !== GU && hum !== CHOKI && hum !== PA) {
alert('入力値をうまく認識できませんでした。ブラウザを再読み込みすると、もう一度挑戦できます。');
}   else {
// コンピュータの手を決める
var com = Math.floor(Math.random() * 3) + 1;
// コンピュータの手の名前
var comHandName = '';
switch (com) {
case GU:
comHandName = 'グー';
break;
case CHOKI:
comHandName = 'チョキ';
break;
case PA:
comHandName = 'パー';
break;
}
}

// 結果の判定
var msgResult = '';
if (hum === com) {
msgResult = '結果はあいこでした。';
}   else if ((com === GU && hum === PA) || (com === CHOKI && hum === GU) || (com === PA && hum === CHOKI)) {
msgResult = '勝ちました。';
}   else {
msgResult = '負けました。';
}

// 最終的な結果の表示
msgResult = msgResult + "コンピュータの出した手は" + comHandName + 'でした';
alert(msgResult);

ポイント

定数で固定データをわかりやすく

1~4行目

var GU = 1;
var CHOKI = 2;
var PA = 3;

数字のままではわかりにくいので、GU,CHOKI,PAという変数にそれぞれ代入する。
この値は不変の値になるため「定数」と呼び、定数であることがわかるように大文字にする習慣を付ける。

数値に変換

8行目
【JavaScript 2-1】 if文を使った条件分岐で使ったparseFloat関数の応用で、parseInt関数を使い、文字列を小数点以下を切り捨てて整数に変換する。

ランダムにジャンケンの手を決める

15行目

<div class="redbox">・Math.random()・・・0以上~1未満の数値をランダムで作る<br>
・Math.floor()・・・結果を整数にするために切り捨てを行う</div>
Math.random()
// 0以上1未満の数値をランダムで作る
Math.random()*3;
// 0以上3未満の数値をランダムで作る
Math.floor(Math.random()*3);
// 0,1,2の数値をランダムに作る
Math.floor(Math.random()*3)+1;
// 1,2,3の数値をランダムに作る

switch文を使って、コンピュータの手に対応するテキストを変数に記憶する

17~28行目

var comHandName = '';
switch (com) {
case GU:
comHandName = 'グー';
break;
case CHOKI:
comHandName = 'チョキ';
break;
case PA:
comHandName = 'パー';
break;
}

結果の判定

31~39行目

var msgResult = '';
if (hum === com) {
msgResult - '結果はあいこでした。';
}  else if ((com === GU && hum === PA) || (com === CHOKI && hum === GU) || (com === PA && hum === CHOKI)) {
msgResult = '勝ちました。';
} else {
msgResult = '負けました。';
}

msgResultという変数に判定結果を代入する。
先にあいこの判定をし、次に勝ちの場合の判定、それ以外の判定は負けの判定になる。

結果を表示する

41~43行目

msgResult = msgResult + "コンピュータの出した手は" + comHandName + 'でした';
alert(msgResult);
変数varの使い方についてはこちら
もう迷いたくない。基本のjavascriptサマリー

参考にした書籍がこちら