システムとモデリング

SysML, Matlab/Simulink,他モデリング全般について。たまにプロジェクトマネジメント。

賭博堕天録カイジ和也編「救出」ゲームのシステムモデリング

こんばんは!Otepipiです。
唐突ですが、賭博堕天録カイジ和也編に出てきた友情確認ゲーム「救出」のシステムモデリングを致します。

「救出」ゲームのルール

下記サイトに詳しいルールが書いてありますので是非ご参照下さい。

賭博堕天録カイジ 和也編 友情確認ゲーム「救出」 ルール カイジの勝負 ギャンブルのルール

今回は、オリジナルのルールを多少デフォルメします。

f:id:Otepipi:20180104202512p:plain

「救出」ゲーム
  1.  三山氏、マリオ、チャンの頭についているランプのうちどれか一つがランダムに選ばれ、点灯します。
  2.  点灯と同時に、60秒タイマーのカウントダウンが開始します。
  3.  60秒以内に、ランプの点灯している本人がボタンを押します
  4.  タイマーがストップし、ゲームクリアになります。

 なお、頭のランプが点灯していない人がボタンを押した場合はゲーム失敗となります(原作では頭が押し潰されますが、ここでは考慮しません)。また、ゲームにおける重要なギミックとして
 三山氏………マリオとチャンのランプが見える
 マリオ………チャンのランプが見える
 チャン………自分含め誰のランプも見えない
とします。なお今回は問題を簡単にするため、三山氏、マリオ、チャンの3名はタイマーの残り時間と、タイマーがストップしているか否かがわかる とします。

ブロック定義図

これをSysMLのブロック定義図で表したのが下の図になります。案の定わかりにくい図になっていますね。SysMLの記述練習は目下の課題です。

f:id:Otepipi:20180104203648p:plain

ブロック定義図

三山氏はマリオ、チャンのランプを参照できます。またタイマーも参照できます。各ボタンは、それぞれタイマーをストップすることができます。振る舞い図は後日書きます。

なぜ「救出」をモデリングするのか

ネタバレになりますがもし最下段のチャンのランプが点灯した場合にチャンが正当する方法は

  1. 三山氏のランプが点灯している場合、チャン・マリオのランプは点灯していないため、三山氏は自分のランプが点灯していると気付くはず。
  2. 三山氏がボタンを押していない(=タイマーがストップしていない)ということは、マリオかチャンのどちらかのランプが点灯している
  3. マリオがボタンを押していないということは、チャンのランプが点灯している

このロジックを辿っていけば、正解します。
僕が面白いと感じたのは、チャンというシステム要素が、情報(≒インプット)の少ない中で自らが"推理"してアウトプットを導き出している点です。
 システムの構成は、「中央集権的」なシステム、または「分散的」なシステムがありますが、今回の救出ゲームのような「(三山氏のような)枝を多く持つハブ」と、「ハブの挙動から自らの状況を推理するノード」から構成されるシステムは変わった特徴を示すのではないかと考えたからです。その考察のためモデリングしてみました。