JavaScript のじゃんけん

Shraddha Paghdar 2023年10月12日
JavaScript のじゃんけん

すべての開発者は、人生のどこかで HelloWorld から始めます。じゃんけんは、プログラミング言語を学びながら開発者が作成する人気のあるゲームの 1つです。しかし、複数のケースを作成することは、開発者にとって頭痛の種になります。したがって、この記事では、じゃんけんゲームの背後にあるロジックを学習します。

JavaScript のじゃんけん

子供たちが遊ぶ、面白くて人気のあるゲームです。そして、そのロジックもそうです。それでは、最初にこのゲームのルールを理解しましょう。

  1. グーをプレイすることを選択したプレーヤーは、グーがはさみまたは面取りされたはさみを押しつぶすため、はさみを選択した別のプレーヤーを攻撃します。
  2. パーがグーを覆っているため、グーを演奏することを選択したプレーヤーは、パーを演奏した別のプレーヤーに負けます。
  3. パーを切ることにしたプレーヤーは、はさみがパーを切るため、はさみのプレーヤーに負けます。

したがって、ルールはクリアされます。それでは、ゲームのロジックを書いてみましょう。キーを個別の選択肢として、値を 2 番目の選択肢として 1つのオブジェクトを作成しました。たとえば、ユーザー入力がロックであり、コンピューターの選択もロックである場合、それは引き分けです。

let choicesObject = {
  'rock': {'rock': 'draw', 'scissor': 'win', 'paper': 'lose'},
  'scissor': {'rock': 'lose', 'scissor': 'draw', 'paper': 'win'},
  'paper': {'rock': 'win', 'scissor': 'lose', 'paper': 'draw'}
}

これで、上記のオブジェクトをグローバルルールとして使用し、関数を使用してゲームの結果を予測できます。

function checker(input) {
  var choices = ['rock', 'paper', 'scissor'];
  var num = Math.floor(Math.random() * 3);

  let computerChoice = choices[num];
  let result

  switch (choicesObject[input][computerChoice]) {
    case 'win':
      result = 'YOU WIN';
      break;
    case 'lose':
      result = 'YOU LOSE';
      break;
    default:
      result = 'DRAW';
      break;
  }
  console.log(result);
  document.getElementById('result').textContent = result;
}

上記の関数では、ユーザーの選択を入力として受け取り、ユーザー入力をスイッチケースを使用してコンピューターで生成された選択と比較します。いずれの条件も一致しない場合は、描画されたと見なされます。それでは、ユーザーが選択して結果を出力してみましょう。

<button onClick="checker('rock')">Rock</button>
<button onClick="checker('paper')">Paper</button>
<button onClick="checker('scissor')">Scissor</button>
<p id="result">
</p>

上記のコードを実行すると、次のように出力されます。結果は、コンピューターの選択によって異なる場合があります。

出力:

YOU LOSE
Shraddha Paghdar avatar Shraddha Paghdar avatar

Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.

LinkedIn