itblaked.battleships

Batailles navales

Aperçu

Ce rôle Ansible simule le jeu classique 'Batailles Navales'.

Il est disponible sur Ansible Galaxy à l'adresse suivante : https://galaxy.ansible.com/itblaked/battleships

https://fr.wikipedia.org/wiki/Bataille_navale_(jeu).

Les tirs sont fournis sous forme d'une liste de points de grille stockés dans la variable shots.

Les navires sont stockés dans la variable ships sous forme d'une liste de dictionnaires, chaque élément contenant le nom, la santé et la localisation de chaque navire.

Consultez la section des variables ci-dessous pour des exemples de comment les écrire et où les placer.

Le jeu se déroule sur une grille 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   
|__________________________________________
No Classe de navire Taille
1 Porte-avions 5
2 Cuirassé 4
3 Destroyer 3
4 Sous-marin 3
5 Bateau de patrouille 2

Installation

Chaque joueur doit installer le rôle en le clonant depuis ce dépôt : https://github.com/itblaked/battleships. Le rôle sera publié sur Ansible Galaxy dans le futur.

Déroulement du jeu

Le jeu se joue en exécutant ce rôle depuis un Playbook Ansible par chaque joueur.

Les joueurs se préparent à jouer en mettant à jour leurs navires dans le rôle comme détaillé ci-dessous dans la section de configuration du jeu.

Une fois les navires disposés, les joueurs décident qui tirera en premier. Le premier tireur doit ensuite fournir au défenseur le point de grille de son ou ses premiers tirs. (En général, c'est un tir par tour, mais cela dépend vraiment de la rapidité avec laquelle vous souhaitez terminer le jeu.)

La variable shots peut être fournie au rôle en tant que variable supplémentaire dans le Playbook, en tant que variable par défaut dans le rôle ou comme variable supplémentaire en ligne de commande. La liste des tirs doit s'accumuler tout au long du jeu et ne jamais diminuer.

La liste des tirs est dirigée contre les navires jusqu'à ce que tous les points de grille d'un navire soient détruits, moment où le navire est coulé. Lorsque qu'un navire est coulé, la fonctionnalité 'spysub' s'active.

Le jeu inclut le concept de 'spysubs' qui deviennent une partie active du jeu lorsqu'un navire a été coulé. Il y a deux spysubs : spysub1 et spysub2.

Ces spysubs offrent chacun un avantage différent au défenseur si le défenseur peut deviner le bon code d'accès de chaque sous-marin. spysub1 donne un tir bonus lors de la prochaine attaque du défenseur et spysub2 offre 2 tirs bonus lors de la prochaine attaque du défenseur.

Chaque fois que le rôle est exécuté, le code d'accès pour chaque spysub est sélectionné aléatoirement à partir d'une liste de numéros prédéfinis : 12, 8, 7, 14, 20. Le défenseur doit fournir sa supposition du code d'accès en tant qu'entier dans les variables spysub1_accesscode et spysub2_accesscode, par exemple spysub1_accesscode: 12.

Ces deux variables peuvent être fournies au rôle de la même manière que la variable ships.

Configuration du jeu

Chaque joueur doit mettre à jour les emplacements des navires dans le fichier defaults/main.yml du rôle. Lors de cette opération, les règles standard de la bataille navale s'appliquent, consultez l'article Wikipédia pour des détails spécifiques, mais certains points clés sont :

  1. Aucun point de grille ne doit se chevaucher entre les navires.
  2. Les points de grille doivent être consécutifs horizontalement ou verticalement (pas de diagonales).
  3. Les points de grille doivent être fournis sous forme de liste YAML dans la clé de localisation de chaque navire.

Exigences

Rien

Variables du rôle

# Une liste de tirs à tirer contre les navires du défenseur.

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

# Supposition du défenseur concernant les codes d'accès des spysubs lors du prochain tour. 
# Choisissez le numéro que vous croyez correspondre au code d'accès pour chaque spysub parmi 12, 8, 7, 14, 20.

spysub1_accesscode: 12

spysub2_accesscode: 20

# Emplacements, santé et noms des navires du défenseur. 
# Renommer les navires ou changer la santé n'affectera pas le déroulement du jeu, tant que
# la valeur de santé est égale au nombre de points de grille de localisation par navire.

ships:
  - name: porte-avions
    health: 5
    location:
      - a1
      - b1
      - c1
      - d1
      - e1
  - name: cuirassé
    health: 4
    location:  
      - d8
      - d7
      - d6
      - d5
  - name: destroyer
    health: 3
    location:
      - j10
      - h10
      - i10
  - name: sous-marin
    health: 3
    location:
      - f5
      - f4
      - f3
  - name: bateau de patrouille
    health: 2
    location:
      - h3
      - i3

Dépendances

Rien.

Exemple de Playbook

Inclure un exemple de la façon d'utiliser votre rôle (par exemple, avec des variables passées en paramètres) est toujours agréable pour les utilisateurs :

    - name: Jouer aux Batailles Navales
      hosts: localhost
      connection: local
      vars:
        shots:
          - a1
          - b8
          - f3
        spysub1_accesscode: 12
        spysub2_accesscode: 20
        ships:
        - name: porte-avions
          health: 5
          location:
            - a1
            - b1
            - c1
            - d1
            - e1
        - name: cuirassé
          health: 4
          location:  
            - d8
            - d7
            - d6
            - d5
        - name: destroyer
          health: 3
          location:
            - j10
            - h10
            - i10
        - name: sous-marin
          health: 3
          location:
            - f5
            - f4
            - f3
        - name: bateau de patrouille
          health: 2
          location:
            - h3
            - i3
      tasks:
        - name: Lancer les Batailles Navales
          include_role:
            name: battleships

Licence

BSD

Informations sur l'auteur

Blake Douglas

À propos du projet

A classic game of Battleships, with Ansible.

Installer
ansible-galaxy install itblaked.battleships
Licence
mit
Téléchargements
72
Propriétaire
Geeking it up and loving it.