「マフィア」の演奏と指揮の私の経験はそれほど大きくありません-わずか2年です。 ただし、プレイしたゲームの数を把握することもできません。 私が遭遇した最大の不便は、何も書かないことでした。 そのため、アクションを考慮しやすくし、定規、曲がった手書き文字、その他すべてのジャズを描画することを心配しないように、簡単な小さなプログラムを作成することになりました。
実際に何を書くかを選択する際のキーポイントは、クロスプラットフォームでした。 その結果、JavaScriptとJQueryを使用して、主要な「Mafia」用のスクリプトが作成されました。 私は完璧主義者とはほど遠いので、スクリプトも可能な完璧さにはほど遠いですが、私はそれを非常にうまく使います。
募集
![](https://habrastorage.org/files/13b/9e7/a92/13b9e7a92737494a9006dfbfa793e2fe.png)
インターフェイスはミニマリストです-それ以上。 「+」ボタンを使用してプレーヤーを追加し、「-」ボタンをプレーヤーの反対側に使用して削除します。 テーブルのプレーヤーが突然場所を切り替えることに決めた場合、小さなボタンを使用してプレーヤーをリスト内で上下に移動できます。
最初はこのスクリプトについて誰にも話をしませんでしたので、「ばかに対する保護」はほとんどどこにも提供されていません。 リーダー自身は、たとえば、ゲームに2人の探偵やマニアがいないことを確認する必要があります。
5人のプレイヤーがいる場合にのみゲームを開始できます;ゲームを開始するには、[ゲームの開始]ボタンをクリックします。
開始する
![](https://habrastorage.org/files/d6d/467/6d1/d6d4676d1a114d19a8b250368775d4bc.png)
開始する前に、すべての編集可能なフィールドは自動的にプレーンテキストに変わります。 これは、突然「ゲームプロトコルを保存する」場合にページをディスクに保存できるようにするために行われます。
たとえば、突然さらに数人が来て、ゲームが実際に開始しなかった場合など、常に最初に戻る機会があります。 「再起動」ボタンをクリックすると、ゲームアクションに関するすべての情報が「忘れられ」、名前と役割のみが残り、再び変更できます。ゲームは「ゲームの開始」ボタンがクリックされる前の状態に戻ります。
それから夜が明け、街が眠りに落ち、マフィアが目覚めます...
![](https://habrastorage.org/files/df6/821/713/df682171317e4c89890c7e84c6af8620.png)
ボタンを押すと、ボタンが強調表示されるため、プレゼンターは自分が押していることを確認できます。 日が来るまで([日]ボタンが押されていない)、すべてを変更できます。
その日が来て、発表者は悲しいニュースを報告し、それから昼間のイベントが起こります-議論、スピーチ、投票。 そして、潜在的な犯罪者の逮捕。 またはハング-あなたがもっと好きなように。
上で言ったように、実際には「愚か者からの保護」はなく、プログラムはホストをほとんど制御しません。 したがって、死のない日と殺人のない夜が起こります。
確かに、これは通常発生しません。
![](https://habrastorage.org/files/3bf/350/e01/3bf350e012cd4ae989dc462de6b2e16f.png)
ファシリテーターが状況を簡単にナビゲートできるようにするために、プレーヤー間の合意により、撤回された役割が発表されない場合、撤回された役割のボタンはブロックされますが、削除されません。 ファシリテーターは、毎晩、たとえ脱落したとしても、どの役割を「覚醒」させるべきかを見ることができます。
ゲームの終わり
このスクリプトには、「ゲームの終わり」という概念はありません。 彼はボタン「ナイト」と「デイ」のクリックを際限なく処理する準備ができています。ここでもホストの良心にすべてがあります。
加算
実際、プログラム全体はhtmlページと情報を変更するスクリプトです。 私は常にインターネットに接続できるとは限らないため、すべてがローカルで機能します。ブラウザでhtmlファイルを開くだけです。 もちろん、必要なスクリプトはhtmlファイルと同じフォルダーにある必要があります。
元気?
さまざまなロールを追加します。 たとえば、弁護士や保安官がいない人がいます。 たとえば、ゲームが100%終了する必要がある場合など、ホストの作業を容易にするために、状況の誤計算を追加します。 たとえば、調整可能な「ばかからの保護」を追加して、死のない日の可能性を排除します。
追加やコメントを待っています。
PS
興味のある方はここからスクリプトをダウンロードできます。 現在、バージョン1.2。
バージョン1.2:
[設定]タブを追加しました。このタブでは、要素を表示するための異なるスタイルを読み込むことができます。
構成行は別のconfig.jsファイルに配置されるため、誰かが何かを変更したいかどうかを簡単に見つけることができます...
ファイルは、cssのフォルダー(jsのスクリプト、スタイル)に配布されます。
デバッグモードを有効にする$ Debug変数と、dDebugレイヤーに情報を表示するshowDebugInfo関数を追加しました。
プレイヤーの数を変更するときに発生したバグを修正しました。
タイマーボタンを追加しました。 デフォルトでは、タイマーは3分間一時停止します。
バージョン1.1:
Meftのアイデアとデザインが追加されました :ボタンレイアウト、アクションアイコン。
インターフェイスがより便利になりました-コントロールボタンが上に移動し、ヘルプ情報が個別に配置されます。
プレイヤーの数に応じて自動的に役割を割り当てる機能が追加されました。
マフィアのラインを強調表示する機能を追加しました。
バージョン1.0:
役割:マフィア、マフィアボス、コミッショナー、ドクター、自殺、美容(ミストレス)、泥棒、マニアック、不滅。