chinchiroのロジック解説(3)

役の判定

今日は役の判定の解説をします。

//diceEyesはサイコロの目3つの配列
  judge_role (diceEyes) {
    if (this.zorome(diceEyes) && diceEyes[0] === 1) {
      console.log('pinzoro')
      return 13
    } else if (this.zorome(diceEyes)) {
      console.log(diceEyes[0] + 'no zorome')
      return 6 + diceEyes[0]
    } else if (this.hifumi(diceEyes)) {
      console.log('hifumi')
      return -1
    } else if (this.jigoro(diceEyes)) {
      console.log('jigoro')
      return 7
    } else if (this.nome(diceEyes)) {
      const diceNumber = this.nannome(diceEyes)
      console.log(diceNumber + 'nome')
      return diceNumber
    } else {
      console.log('menasi')
      return 0
    }
  }

サイコロの目のが3つ入った配列diceEyesを条件判定のメソッドにかけ、画面に役を表示しreturnで数値を返します。

returnで役の名前でなく数値を返す理由は、役の強さの勝ち負けの判定に使うためです。

ヒフミの時に負の数を使ったのは、マイナスの役であることがわかるようにと思ってあえてそうしました。

役の条件判定メソッドは次の通りです。

zorome = (diceEyes) => {
    return diceEyes[0] === diceEyes[1] && diceEyes[1] === diceEyes[2]
  }

  hifumi = (diceEyes) => {
    return diceEyes.includes(1) && diceEyes.includes(2) && diceEyes.includes(3)
  }

  jigoro = (diceEyes) => {
    return diceEyes.includes(4) && diceEyes.includes(5) && diceEyes.includes(6)
  }

  nome = (diceEyes) => {
    return (diceEyes[0] === diceEyes[1]) || (diceEyes[0] === diceEyes[2]) || (diceEyes[1] === diceEyes[2])
  }

  nannome = (diceEyes) => {
    if (diceEyes[0] === diceEyes[1]) {
      return diceEyes[2]
    } else if (diceEyes[1] === diceEyes[2]) {
      return diceEyes[0]
    } else if (diceEyes[0] === diceEyes[2]) {
      return diceEyes[1]
    }
  }

nannomeは条件判定ではなく、通常の目が出た時の役の強さの判定に使っています。