itblaked.battleships

バトルシップ

概要

このAnsibleロールは、クラシックなゲーム「バトルシップ」をシミュレートします。

Ansible Galaxyのこちらで利用可能です: https://galaxy.ansible.com/itblaked/battleships

詳細はWikipediaをご覧ください: https://en.wikipedia.org/wiki/Battleship_(game)

発射は、shots という変数に格納されたグリッドポイントのリストとして提供されます。

船は、ships という変数に辞書のリストとして格納されます。各アイテムには、船の namehealthlocation が含まれます。

これらの記述方法および場所については、以下の変数セクションを参照してください。

ゲームは10x10のグリッドに基づいています:

___________________________________________
|  A   B   C   D   E   F   G   H   I   J
|1 x   x   x   x   x   x
|2     x                                                      
|3                     s       p   p            
|4         x           s           x                 
|5     b               s                            
|6     b                                      
|7     b       x                   x            
|8     b                                     
|9             x                                              
|10            x               d   d   d   
|__________________________________________

番号 船の種類 サイズ
1 キャリア 5
2 戦艦 4
3 駆逐艦 3
4 潜水艦 3
5 パトロールボート 2

インストール

各プレイヤーは、こちらのリポジトリからロールをクローンしてインストールする必要があります: https://github.com/itblaked/battleships。将来的にAnsible-Galaxyに公開される予定です。

ゲームの進行

ゲームは、各プレイヤーがAnsibleプレイブックからこのロールを実行することで進行します。

プレイヤーは、ゲーム設定セクションに詳しく記載されているように、ロール内の船を更新することでプレイの準備をします。

船が配置されたら、プレイヤーは誰が最初に撃つかを決めます。最初に撃つ人は、最初のショットのグリッドポイントを守備側に提供します。_(通常はターンごとに1発のショットですが、ゲームをどれだけ早く進めたいかによって異なります。)_

shots 変数は、プレイブックの追加変数、ロールのデフォルト変数、またはコマンドラインの追加変数として提供することができます。ショットのリストはゲームを通じて蓄積され、減少することはありません。

ショットは、すべての船の位置のグリッドポイントが破壊されるまで発射され、その時点で船は沈みます。船が沈むと、「スパイサブ」機能がアクティブになります。

ゲームには、船が沈むとアクティブになる「スパイサブ」の概念が含まれています。2つのスパイサブ、spysub1spysub2 があります。

これらのスパイサブは、それぞれ異なる恩恵を守備側に提供します。守備側がそれぞれの潜水艦の正しいアクセスコードを推測できた場合に限ります。spysub1 は守備側の次の攻撃にボーナスショットを提供し、spysub2 は守備側の次の攻撃に2つのボーナスショットを提供します。

ロールが実行されるたびに、各スパイサブのアクセスコードは事前定義された数値のリストからランダムに選択されます;12, 8, 7, 14, 20。守備側は、spysub1_accesscodespysub2_accesscode 変数に整数としてアクセスコードの予想を提供します。例:spysub1_accesscode: 12

これら2つの変数は、ships 変数と同様にロールに提供できます。

ゲーム設定

各プレイヤーは、ロールの defaults/main.yml ファイル内で船の位置を更新する必要があります。この作業を行う際には、標準のバトルシップのルールが適用されます。詳細はWikipedia記事を参照してくださいが、いくつかの重要なポイントは以下の通りです:

  1. 船同士のグリッドポイントが重複してはいけません。
  2. グリッドポイントは、水平方向または垂直方向に連続していなければなりません(斜めは不可)。
  3. グリッドポイントは、各船の位置のキーにyamlのリストとして提供されなければなりません。

要件

特になし

ロールの変数


# 守備側の船に対して発射されるショットのリスト。

shots:
  - a1
  - c2
  - a8
  - e4
  - f8


# 守備側による次のターンのスパイサブアクセスコードの推測。 
# 12, 8, 7, 14, 20 の中から各スパイサブのアクセスコードになると思う番号を選んでください。

spysub1_accesscode: 12

spysub2_accesscode: 20



# 守備側の船の位置、健康状態、名前。 
# 船の名称を変更するか健康状態を変更しても、ゲームプレイには影響しません。
# 健康の値が各船の位置のグリッドポイント数と等しい限り大丈夫です。

ships:
  - name: carrier
    health: 5
    location:
      - a1
      - b1
      - c1
      - d1
      - e1
  - name: battleship
    health: 4
    location:  
      - d8
      - d7
      - d6
      - d5
  - name: destroyer
    health: 3
    location:
      - j10
      - h10
      - i10
  - name: submarine
    health: 3
    location:
      - f5
      - f4
      - f3
  - name: patrolboat
    health: 2
    location:
      - h3
      - i3

依存関係

特になし。

サンプルプレイブック

ロールの使用方法(例えば、変数をパラメータとして渡す方法)のサンプルを含めることは、ユーザーにとって非常に役立ちます:

    - name: バトルシップをプレイ
      hosts: localhost
      connection: local
      vars:
        shots:
          - a1
          - b8
          - f3
        spysub1_accesscode: 12
        spysub2_accesscode: 20
        ships:
        - name: carrier
          health: 5
          location:
            - a1
            - b1
            - c1
            - d1
            - e1
        - name: battleship
          health: 4
          location:  
            - d8
            - d7
            - d6
            - d5
        - name: destroyer
          health: 3
          location:
            - j10
            - h10
            - i10
        - name: submarine
          health: 3
          location:
            - f5
            - f4
            - f3
        - name: patrolboat
          health: 2
          location:
            - h3
            - i3
      tasks:
        - name: バトルシップを開始
          include_role:
            name: battleships

ライセンス

BSD

著者情報

ブレイク・ダグラス

プロジェクトについて

A classic game of Battleships, with Ansible.

インストール
ansible-galaxy install itblaked.battleships
ライセンス
mit
ダウンロード
72
所有者
Geeking it up and loving it.