chinchiroのロジック解説(1)

サイコロ部分のコード解説

今回はchinchiroのサイコロ部分のコード解説をします。

通常のサイコロ

class NormalDice {
  roll () {
    return Math.floor(Math.random() * 6) + 1
  }
}

Math.random()は0以上1未満のランダムな数を返すので、これを6倍することで0〜6未満のランダムな数を得られます。 このままだと0から5.999...ですが、Math.floor()で小数点以下を切り捨てると0〜5を返すようになります。 最後に最小値の1を加えることで、1〜6をランダムに返すダイスの機能を実現しました。

ジゴロサイ

class JigoroDice {
  constructor () {
    this._lisk = 0
  }

  get lisk () {
    return this._lisk
  }

  set lisk (probability) {
    this._lisk = probability
  }

  roll () {
    return Math.floor(Math.random() * 3) + 4
  }
}

4、5、6しか出ないイカサマ用のサイコロです。基本的には通常のと同じ考え方ですが、範囲が3(4〜6なので)、最小値が4になっています。 また、コンストラクタにイカサマがバレる確率の設定用の、リスクの数値を持たせました。 さらに、外部から確率を変動できるようゲッターとセッターでアクセスできるようにしました。

ピンゾロサイ

class PinzoroDice {
  roll () {
    return 1
  }
}

1しか出ないサイコロなので、単純に1を返すようになっています。

出たサイコロの目を配列にする

  async throw_dice () {
    const diceEyes = []
    for (let i = 1; i < 4; i++) {
      await diceEyes.push(this.dice.roll())
    }
    this.printDice(diceEyes)
    return diceEyes
  }

Userクラスの方で、thwow_diceメソッドを用意します。 今回役を作るのに必要な3回分のサイコロの目を、配列として入れることにしました。 このサイコロの目の表示はprintDice()メソッドで行います。 次回は、この表示用のprintDiceメソッドを解説していきます。