Algoritmos.MapaInteractivo 1.0.26020.3

dotnet add package Algoritmos.MapaInteractivo --version 1.0.26020.3
                    
NuGet\Install-Package Algoritmos.MapaInteractivo -Version 1.0.26020.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Algoritmos.MapaInteractivo" Version="1.0.26020.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Algoritmos.MapaInteractivo" Version="1.0.26020.3" />
                    
Directory.Packages.props
<PackageReference Include="Algoritmos.MapaInteractivo" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Algoritmos.MapaInteractivo --version 1.0.26020.3
                    
#r "nuget: Algoritmos.MapaInteractivo, 1.0.26020.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Algoritmos.MapaInteractivo@1.0.26020.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Algoritmos.MapaInteractivo&version=1.0.26020.3
                    
Install as a Cake Addin
#tool nuget:?package=Algoritmos.MapaInteractivo&version=1.0.26020.3
                    
Install as a Cake Tool

Algoritmos.MapaInteractivo

Descripción

Algoritmos.MapaInteractivo es una librería de .NET 10 que proporciona un sistema de simulación interactivo para navegación de vehículos en un mapa ASCII tipo GPS. Permite crear escenarios donde un vehículo autónomo navega y entrega paquetes en intersecciones de un mapa personalizable.

Características

  • Mapas ASCII dinámicos - Renderizado en tiempo real con colores en consola
  • Control de vehículos - Operaciones básicas: Mover, Girar Izquierda/Derecha, Entregar
  • Sistema de entregas - Puntos de entrega sin identificación que cambian de color al completarse
  • Navegación "a ciegas" - El vehículo no conoce su posición exacta, solo detecta entregas alrededor
  • Consultas de estado - Detecta entregas en direcciones específicas, camino disponible, etc.
  • Manejo de errores - Detención automática en movimientos inválidos
  • Visualización pausada - Retrasos configurables para seguimiento visual de operaciones
  • Resúmenes automáticos - Estadísticas de operaciones y entregas al finalizar

Instalación

dotnet add package Algoritmos.MapaInteractivo

O a través del Package Manager:

Install-Package Algoritmos.MapaInteractivo

Uso Rápido

using MapaInteractivo;

// Configurar y crear el gestor
var gestor = new ConfiguradorMapa(3, 3)
    .ConVehiculo(1, 1, DireccionVehiculo.Arriba)
    .AgregarEntregas((0, 0), (0, 2), (2, 1))
    .Construir();

// Ejecutar lógica de navegación
gestor.Ejecutar(v =>
{
    while (v.HayEntregasPendientes())
    {
        if (v.EstoyEnUnaEntrega())
        {
            v.EntregarPaquete();
        }
        else if (v.HayEntregaAlFrente() && v.HayCaminoFrente())
        {
            v.MoverAdelante();
        }
        else if (v.HayEntregaALaDerecha())
        {
            v.GirarDerecha();
        }
        else if (v.HayEntregaALaIzquierda())
        {
            v.GirarIzquierda();
        }
        else if (v.HayCaminoFrente())
        {
            v.MoverAdelante();
        }
        else
        {
            v.GirarDerecha();
        }
    }
});

// Los resúmenes se imprimen automáticamente

API Principal

ConfiguradorMapa

Constructor fluido para configurar el mapa:

var gestor = new ConfiguradorMapa(filasIntersecciones, columnasIntersecciones)
    .ConVehiculo(fila, columna, direccionInicial)
    .AgregarEntregas((fila1, col1), (fila2, col2), ...)
    .Construir();

Parámetros:

  • filasIntersecciones - Número de filas del mapa
  • columnasIntersecciones - Número de columnas del mapa
  • fila - Fila inicial del vehículo (0-indexed)
  • columna - Columna inicial del vehículo (0-indexed)
  • direccionInicial - Dirección inicial del vehículo (tipo DireccionVehiculo)
  • alturaCelda - Alto de cada celda en caracteres (default: 2)
  • anchoCelda - Ancho de cada celda en caracteres (default: 4)

IEjecutor - Operaciones Disponibles

Operaciones de Movimiento
bool MoverAdelante()      // Mueve una intersección hacia adelante
void GirarIzquierda()     // Gira 90° a la izquierda
void GirarDerecha()       // Gira 90° a la derecha
void EntregarPaquete()    // Entrega paquete en posición actual
Consultas de Estado
bool EstoyEnUnaEntrega()      // ¿Hay paquete sin entregar aquí?
bool HayCaminoFrente()        // ¿Puedo moverme hacia adelante?
bool HayEntregasPendientes()  // ¿Quedan paquetes por entregar?
bool HayEntregaAlFrente()     // ¿Hay paquete frente a mí?
bool HayEntregaALaDerecha()   // ¿Hay paquete a mi derecha?
bool HayEntregaALaIzquierda() // ¿Hay paquete a mi izquierda?

DireccionVehiculo - Enum

public enum DireccionVehiculo
{
    Arriba,     // Norte
    Abajo,      // Sur
    Derecha,    // Este
    Izquierda   // Oeste
}

Visualización

El mapa se renderiza con los siguientes símbolos:

Símbolo Significado
+ Intersección
- Calle horizontal
\| Calle vertical
^ Vehículo mirando al norte (Verde)
v Vehículo mirando al sur (Verde)
> Vehículo mirando al este (Verde)
< Vehículo mirando al oeste (Verde)
X Vehículo en error (Rojo)
o Paquete pendiente (Blanco)
O Paquete entregado (Verde)

Características Avanzadas

Detención Automática

Si intentas un movimiento inválido (fuera del mapa), la ejecución se detiene automáticamente:

gestor.Ejecutar(v =>
{
    // Si v.MoverAdelante() falla, lanza MovimientoInvalidoException
    // La excepción es capturada internamente y se muestran los resúmenes
    v.MoverAdelante();
});

Retrasos Visuales

Cada operación incluye un retraso de 1.5 segundos para permitir seguimiento visual claro del vehículo.

Resúmenes Automáticos

Al finalizar la ejecución se muestra automáticamente:

OPERACIONES EJECUTADAS: 15

  Movimientos: 7
  Giros izquierda: 3
  Giros derecha: 4
  Entregas: 1

Total entregas: 3 | Completadas: 1 | Pendientes: 2

Total de pasos del vehículo: 15

Casos de Uso

  • Algoritmos de búsqueda - Implementar BFS, DFS para navegación
  • Aprendizaje automático - Entrenar agentes autónomos
  • Enseñanza - Demostración de algoritmos de pathfinding
  • Simulaciones - Sistemas de entrega y logística
  • Juegos educativos - Retos de programación

Arquitectura

Clases Principales

Clase Responsabilidad
ConfiguradorMapa Construcción fluida del gestor
Vehiculo Estado y movimiento del vehículo
GestorEntregas Gestión de puntos de entrega
GeneradorMapaAscii Renderizado del mapa en consola
GestorOperaciones Orquestación de operaciones y lambda

Flujo de Ejecución

  1. Construcción - ConfiguradorMapa crea todas las dependencias
  2. Inicialización - Se muestra el mapa inicial
  3. Ejecución - Se ejecuta la lambda del usuario
  4. Captura de errores - Se detiene si hay MovimientoInvalidoException
  5. Resúmenes - Se muestran estadísticas finales

Ejemplo Completo

using MapaInteractivo;

// Crear un mapa 5x5 con vehículo en el centro
var gestor = new ConfiguradorMapa(5, 5)
    .ConVehiculo(2, 2, DireccionVehiculo.Arriba)
    .AgregarEntregas(
        (0, 0), (0, 4), (4, 0), (4, 4),  // Esquinas
        (2, 2)                             // Centro
    )
    .Construir();

// Estrategia: Entregar por espiral
gestor.Ejecutar(v =>
{
    // Buscar entregas en espiral
    var entregasRealizadas = 0;
    while (entregasRealizadas < 5)
    {
        if (v.EstoyEnUnaEntrega())
        {
            v.EntregarPaquete();
            entregasRealizadas++;
        }
        
        if (v.HayEntregasPendientes())
        {
            if (v.HayCaminoFrente())
                v.MoverAdelante();
            else if (v.HayEntregaALaDerecha())
                v.GirarDerecha();
            else
                v.GirarIzquierda();
        }
    }
});

// Resultado: Mapa actualizado + resúmenes automáticos
Console.Read();

Configuración Personalizada

Tamaño de Celdas

new ConfiguradorMapa(
    filasIntersecciones: 3,
    columnasIntersecciones: 3,
    alturaCelda: 3,      // Más alto
    anchoCelda: 6        // Más ancho
)

Entregas con Tuplas

.AgregarEntregas(
    (0, 0),    // Fila 0, Columna 0
    (1, 1),    // Fila 1, Columna 1
    (2, 2)     // Fila 2, Columna 2
)

Limitaciones y Notas

  • El vehículo no sabe su posición exacta - Solo detecta entregas cercanas
  • Las entregas no tienen identificadores - Todos los puntos son iguales
  • El mapa es 2D rectangular - No soporta geometrías complejas
  • La ejecución se detiene en movimientos inválidos automáticamente
  • Cada operación espera 1.5 segundos para visualización clara

Contribuciones

Las contribuciones son bienvenidas. Por favor:

  1. Fork el proyecto
  2. Crea una rama para tu feature (git checkout -b feature/AmazingFeature)
  3. Commit tus cambios (git commit -m 'Add some AmazingFeature')
  4. Push a la rama (git push origin feature/AmazingFeature)
  5. Abre un Pull Request

Licencia

Este proyecto está bajo licencia MIT. Ver archivo LICENSE para detalles.

Autor

Freddy Alarcón - Creador y mantenedor

Enlaces

Soporte

Para reportar bugs o sugerencias, abre un issue en GitHub o contacta al autor.


Última actualización: Diciembre 2025 | Versión: 1.0.0 | .NET: 10.0

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.26020.3 117 1/20/2026
1.0.26020.2 114 1/20/2026
1.0.26020.1 106 1/20/2026
1.0.26010.2 129 1/10/2026
1.0.26010.1 107 1/10/2026
1.0.26009.1 111 1/9/2026
1.0.26005.1 121 1/5/2026
1.0.25364.4 106 12/30/2025
1.0.25364.3 112 12/30/2025