itblaked.battleships

Schiffe versenken

Übersicht

Diese Ansible-Rolle simuliert das klassische Spiel 'Schiffe versenken'.

Sie ist verfügbar in Ansible Galaxy: https://galaxy.ansible.com/itblaked/battleships

https://de.wikipedia.org/wiki/Schiffe_versenken.

Schüsse werden als Liste von Gitterpunkten in der Variablen shots gespeichert.

Schiffe werden in der Variablen ships als Liste von Dictionaries gespeichert, wobei jedes Listenelement den Namen, die Gesundheit und die Position jedes Schiffs enthält.

Siehe den Abschnitt Variablen unten für Beispiele, wie man diese schreibt und wo.

Das Spiel basiert auf einem 10x10 Gitter:

___________________________________________
|  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   
|__________________________________________

Schiffe

Nr Schiffsart Größe
1 Träger 5
2 Schlachtschiff 4
3 Zerstörer 3
4 U-Boot 3
5 Patrouillenboot 2

Installation

Jeder Spieler sollte die Rolle installieren, indem er sie aus diesem Repository klont: https://github.com/itblaked/battleships. Die Rolle wird in Zukunft auf Ansible Galaxy veröffentlicht.

Spielablauf

Das Spiel wird gespielt, indem diese Rolle von einem Ansible-Playbook von jedem Spieler ausgeführt wird.

Die Spieler bereiten sich auf das Spiel vor, indem sie ihre Schiffe in der Rolle aktualisieren, wie im Abschnitt zum Spielaufbau beschrieben.

Sobald die Schiffe angeordnet sind, entscheiden die Spieler, wer zuerst schießt. Der erste Schütze sollte dem Verteidiger dann den Gitterpunkt seines ersten Schusses mitteilen. (Typischerweise ist es ein Schuss pro Runde, aber es hängt davon ab, wie schnell du das Spiel beenden möchtest.)

Die shots-Variable kann als zusätzliche Variable im Playbook, als Standardvariable in der Rolle oder als zusätzliche Variable in der Befehlszeile an die Rolle übergeben werden. Die Liste der Schüsse sollte im Verlauf des Spiels kumuliert werden und sich nie zurückentwickeln.

Die Schüsse werden auf die Schiffe abgegeben, bis alle Gitterpunkte eines Schiffes zerstört sind, woraufhin das Schiff versenkt wird. Wenn ein Schiff versenkt wird, aktiviert sich die 'Spion-U-Boot'-Funktion.

Das Spiel beinhaltet das Konzept der 'Spion-U-Boote', die aktiv Teil des Spiels werden, wenn ein Schiff versenkt wurde. Es gibt zwei Spion-U-Boote: spysub1 und spysub2.

Diese Spion-U-Boote bieten jeweils einen anderen Vorteil für den Verteidiger, wenn der Verteidiger in der Lage ist, den richtigen Zugangscode für jedes U-Boot zu erraten. spysub1 bietet einen Bonus-Schuss beim nächsten Angriff des Verteidigers und spysub2 bietet 2 Bonusschüsse beim nächsten Angriff des Verteidigers.

Jedes Mal, wenn die Rolle ausgeführt wird, wird der Zugangscode für jedes Spion-U-Boot zufällig aus einer Liste von vordefinierten Zahlen ausgewählt: 12, 8, 7, 14, 20. Der Verteidiger sollte seinen Zugangscode als Ganzzahl in den Variablen spysub1_accesscode und spysub2_accesscode angeben, z.B. spysub1_accesscode: 12.

Diese beiden Variablen können auf die gleiche Weise wie die ships-Variable an die Rolle übergeben werden.

Spielaufbau

Schiffe

Jeder Spieler sollte die Schiffstandorte in der Datei defaults/main.yml in der Rolle aktualisieren. Dabei gelten die Standardregeln für Schiffe versenken. Siehe den Wikipedia-Artikel für Details, jedoch einige wichtige Punkte sind:

  1. Keine überlappenden Gitterpunkte zwischen den Schiffen.
  2. Die Gitterpunkte müssen horizontal oder senkrecht aufeinander folgen (keine Diagonalen).
  3. Die Gitterpunkte müssen als YAML-Liste im Standortschlüssel jedes Schiffes angegeben werden.

Anforderungen

Keine

Rollenvariablen


# Eine Liste von Schüssen, die gegen die Schiffe des Verteidigers abgegeben werden.

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


# Die Vermutung des Verteidigers, was die Zugangscodes der Spion-U-Boote in der nächsten Runde sein werden. 
# Wählen Sie die Nummer, die Sie für den Zugangscode jedes Spion-U-Boots aus 12, 8, 7, 14, 20 glauben.

spysub1_accesscode: 12

spysub2_accesscode: 20



# Standorte, Gesundheit und Namen der Schiffe des Verteidigers. 
# Das Umbenennen der Schiffe oder das Ändern der Gesundheit hat keinen Einfluss auf das Spiel, solange 
# der Gesundheitswert gleich der Anzahl der Standortgitterpunkte pro Schiff ist.

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

Abhängigkeiten

Keine.

Beispiel-Playbook

Ein Beispiel, wie man deine Rolle verwendet (zum Beispiel mit Variablen, die als Parameter übergeben werden) ist für die Nutzer ebenfalls hilfreich:

    - name: Spiele Schiffe versenken
      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: Schiffe versenken starten
          include_role:
            name: battleships

Lizenz

BSD

Autoreninformationen

Blake Douglas

Über das Projekt

A classic game of Battleships, with Ansible.

Installieren
ansible-galaxy install itblaked.battleships
GitHub Repository
Lizenz
mit
Downloads
72
Besitzer
Geeking it up and loving it.