Skip to content

Sistema de log de exploración #49

@GabrielEValenzuela

Description

@GabrielEValenzuela

Descripción

Actualmente, el juego requiere un sistema eficiente para marcar zonas del mapa que ya han sido exploradas o donde ocurrieron ciertos eventos, sin que el rendimiento o el uso de memoria se degrade conforme crece el tamaño del mapa.

Para esto, se propone utilizar std::bitset, una estructura que permite representar el estado de exploración de forma extremadamente eficiente en memoria y con acceso en tiempo constante (O(1)). Es ideal para verificar rápidamente si una celda ha sido visitada, si una trampa fue activada, o si un objeto ya fue recolectado.

Objetivo

Implementar un sistema de seguimiento de exploración basado en bits para representar un mapa de 64x64 celdas (4096 bits en total). Cada bit del bitset representará si una celda del mapa ha sido explorada (1) o no (0).

Tareas

  • Crear un nuevo archivo de cabecera: ExplorationTracker.hpp.

  • Definir una clase ExplorationTracker que utilice internamente un std::bitset<4096>.

  • Implementar al menos las siguientes funciones públicas:

    • bool fueExplorado(int x, int y) const;
      Devuelve true si la celda fue explorada, false en caso contrario.
    • void marcarExplorado(int x, int y);
      Marca la celda como explorada.
    • void imprimirExploracion(const Mapa& mapa) const;
      Muestra un minimapa en consola, utilizando caracteres para indicar las zonas exploradas y no exploradas. El objeto Mapa se pasará por referencia para obtener detalles si se desea enriquecer la visualización.
  • Integrar ExplorationTracker al sistema de exploración del jugador, de modo que las celdas se marquen automáticamente al ser visitadas.

  • Opcionalmente: permitir que eventos especiales también marquen zonas como “exploradas” (trampas, campamentos, puestos de avanzada, etc.).

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions