5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

じゃんけんの勝敗を手っ取り早く処理する表

Last updated at Posted at 2019-04-23

じゃんけんの勝敗を手っ取り早く処理する表

はじめに

本書は、プログラミング初心者向けに、表の実装を紹介するものである。
例として、じゃんけんの勝敗を処理する。

じゃんけんの仕様

まず、じゃんけんの仕様を考える。

  • 対戦者は2人とする。
  • 対戦者はそれぞれ「グー✊」「チョキ✌」「パー✋」の3つの手から1つ選んで出す。
  • 「グー✊」は「チョキ✌」に勝つ。
  • 「チョキ✌」は「パー✋」に勝つ。
  • 「パー✋」は「グー✊」に勝つ。
  • 同じ手はあいこ(引き分け)となる。

今回は「対戦者は2人とする」という点だけ留意してもらいたい。

じゃんけん関数

今回用意したじゃんけん関数(JavaScript)は以下の通りである。
尚、引数のエラーチェックはしていない。

このじゃんけん関数を使う場合、対戦者2人の出す手を事前に決定しておく必要がある。
ユーザーから入力を受け付けても良いし、乱数を得ても良い。
また、処理結果(勝敗)の表示もこの関数を使う側で行う事になる。

このじゃんけん関数の肝要は、勝敗表を2次元配列で表現している点である。
2次元配列とは、配列のデータの中身がさらに配列になっている物である。
これにより、表を表現する事が出来る。
記述方法の詳細は省くので、以下のソースコードから読み取ってもらいたい。

// じゃんけん関数
// janken(you, opponent)
//
// 引数に0~2の値を入れる。
// 0:グー
// 1:チョキ
// 2:パー
//
// 戻り値
// -1:あなたの負け
//  0:あいこ
//  1:あなたの勝ち

var janken = function(you, opponent) {
    // ↓you / opp→  rock    scissors    paper
    // rock         draw    win         lose
    // scissors     lose    draw        win
    // paper        win     lose        draw
    var game = [[ 0,  1, -1],
                [-1,  0,  1],
                [ 1, -1,  0]];

    return game[you][opponent];
};

おわりに

このように、答えが決まっていて将来的にも変更がないデータは、配列や2次元配列でデータを持っておくと良い。

以上。

5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?