itblaked.battleships

Buques de Guerra

Descripción

Este rol de Ansible simula el clásico juego 'Buques de Guerra'.

Está disponible en Ansible Galaxy https://galaxy.ansible.com/itblaked/battleships

https://es.wikipedia.org/wiki/Batalla_naval.

Los disparos se proporcionan como una lista de puntos en la cuadrícula, almacenados en la variable shots.

Los buques se almacenan en la variable ships como una lista de diccionarios, donde cada elemento de la lista contiene el nombre, la salud y la ubicación de cada buque.

Consulta la sección de variables a continuación para ver ejemplos de cómo escribir esto y dónde hacerlo.

El juego se basa en una cuadrícula de 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   
|__________________________________________

Buques

No Clase de Buque Tamaño
1 Portaaviones 5
2 Buque de Guerra 4
3 Destructor 3
4 Submarino 3
5 Lancha Patrullera 2

Instalación

Cada jugador debería instalar el rol clonándolo desde este repositorio https://github.com/itblaked/battleships. El rol se publicará en Ansible-Galaxy en el futuro.

Cómo Jugar

El juego se juega ejecutando este rol desde un Playbook de Ansible por cada jugador.

Cada jugador se prepara para jugar actualizando sus buques en el rol como se detalla a continuación en la sección de configuración del juego.

Una vez que los buques estén organizados, los jugadores deciden quién disparará primero. El primer tirador debe luego proporcionar al defensor el punto en la cuadrícula de su primer disparo. (Típicamente es un disparo por turno, sin embargo, realmente depende de qué tan rápido quieras completar el juego.)

La variable shots puede ser proporcionada al rol como una variable extra en el playbook, como una variable por defecto en el rol o como una variable extra en la línea de comandos. La lista de disparos debe acumularse durante el juego y no debe disminuir.

Los disparos se realizan contra los buques hasta que todos los puntos de ubicación de un buque sean destruidos, momento en el cual el buque se hunde. Cuando un buque se hunde, se activa la función 'spysub'.

El juego incluye el concepto de 'spysub', que se convierte en una parte activa del juego cuando un buque ha sido hundido. Hay dos spysubs: spysub1 y spysub2.

Estos spysubs proporcionan un beneficio diferente al defensor si el defensor puede adivinar el código de acceso correcto de cada submarino. spysub1 proporciona un disparo extra en el próximo ataque del defensor y spysub2 proporciona 2 disparos extra en el próximo ataque del defensor.

Cada vez que se ejecuta el rol, el código de acceso para cada spysub se selecciona aleatoriamente de una lista de números predefinidos: 12, 8, 7, 14, 20. El defensor debe proporcionar su suposición del código de acceso como un número entero en las variables spysub1_accesscode y spysub2_accesscode, por ejemplo, spysub1_accesscode: 12.

Estas dos variables pueden ser proporcionadas al rol de la misma manera que la variable ships.

Configuración del Juego

Buques

Cada jugador debe actualizar las ubicaciones de los buques en el archivo defaults/main.yml en el rol. Al completar esto, se aplican las reglas estándar de la batalla naval; consulta el artículo de Wikipedia para obtener detalles específicos. Sin embargo, algunos puntos clave son:

  1. No debe haber puntos de cuadrícula superpuestos entre buques.
  2. Los puntos de cuadrícula deben ser consecutivos horizontal o verticalmente (sin diagonales).
  3. Los puntos de cuadrícula deben ser proporcionados como una lista yaml en la clave de ubicación de cada buque.

Requisitos

Ninguno

Variables del Rol


# Una lista de disparos a realizar contra los buques del defensor.

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


# Suposición del defensor sobre cuál será el código de acceso de los spysubs en el siguiente turno. 
# Elige el número que crees que será el código de acceso para cada spysub de entre 12, 8, 7, 14, 20.

spysub1_accesscode: 12

spysub2_accesscode: 20



# Ubicaciones, salud y nombres de los buques del defensor. 
# Renombrar los buques o cambiar la salud no afectará el juego, siempre que
# el valor de salud sea igual al número de puntos de ubicación por buque.

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

Dependencias

Ninguna.

Ejemplo de Playbook

Incluir un ejemplo de cómo usar tu rol (por ejemplo, con variables pasadas como parámetros) siempre es útil para los usuarios también:

    - name: Jugar Buques de Guerra
      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: Lanzar Buques de Guerra
          include_role:
            name: battleships

Licencia

BSD

Información del Autor

Blake Douglas

Acerca del proyecto

A classic game of Battleships, with Ansible.

Instalar
ansible-galaxy install itblaked.battleships
Licencia
mit
Descargas
72
Propietario
Geeking it up and loving it.