# nyeck-abondo/ani-2053 architecture

> Architecture diagram of the GitHub repository nyeck-abondo/ani-2053, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-26). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nyeck-abondo/ani-2053
- Repository: https://github.com/nyeck-abondo/ani-2053

## Overview

This repository combines educational C++ chapter exercises with the NkentseuKit header library. The clearest end-to-end runtime flow is the chapter 1 simulation: its entry point initializes a world, reports the population, requests random movement and suicide, then displays positions. Chapter 3 exercises demonstrate windowing and interaction topics, while NkentseuKit supplies reusable window, event, container, math, and core facilities. There is no README, and most implementations were not sampled, so links beyond explicit entry-point calls and the documented context lifecycle are intentionally limited.

Main entry points: [`chapitre-03/NkentseuKit/include/NKWindow/NKWindow.h`](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKWindow/NKWindow.h) (Window API), [`chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/src/main.cpp`](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/src/main.cpp) (Simulation entry), [`chapitre-03/NkentseuKit/include/NKWindow/Core/NkContext.h`](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKWindow/Core/NkContext.h) (Graphics context), [`chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/world/world.cpp`](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/world/world.cpp) (World simulation)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_simulation["Simulation exercises"]
  node_sim_main["Simulation entry<br/>[main.cpp]"]
  node_world["World simulation<br/>[world.cpp]"]
  node_entity["2D entities<br/>[Entity.cpp]"]
  node_maths["Simulation math<br/>[maths.cpp]"]
end

subgraph group_windowing["Window and input"]
  node_window_api["Window API<br/>[NKWindow.h]"]
  node_context_api["Graphics context<br/>[NkContext.h]"]
  node_event_system["Event system<br/>[NkEventSystem.h]"]
  node_keyboard_events["Keyboard events<br/>[NkKeyboardEvent.h]"]
  node_window_exercises["Window exercises<br/>[c3-exo1_main.cpp]"]
  node_cursor_exercise["Cursor exercise<br/>[c3-exo6_main.cpp]"]
  node_clipboard_exercise["Clipboard exercise<br/>[c3-exo8_main.cpp]"]
  node_dialog_exercise["Dialog exercise<br/>[c3-exo9_main.cpp]"]
end

subgraph group_library["NkentseuKit library"]
  node_containers["Containers<br/>[NKContainers.h]"]
  node_vector["Dynamic vector<br/>[NkVector.h]"]
  node_math_library["Math library<br/>[NKMath.h]"]
  node_color["Color utilities<br/>[NkColor.h]"]
end

subgraph group_support["Core facilities"]
  node_core["Core utilities<br/>[NKCore.h]"]
  node_platform["Platform detection<br/>[NkPlatformDetect.h]"]
  node_assertions["Assertions<br/>[NkAssertHandler.h]"]
end

node_operator(("Program invocation"))

node_operator -->|"starts"| node_sim_main
node_sim_main -->|"initializes and commands"| node_world
node_sim_main -->|"reads and displays"| node_world
node_window_exercises -.->|"demonstrates windowing"| node_window_api
node_cursor_exercise -.->|"demonstrates cursors"| node_window_api
node_clipboard_exercise -.->|"demonstrates clipboard"| node_window_api
node_dialog_exercise -.->|"demonstrates dialogs"| node_window_api
node_context_api -->|"creates after window"| node_window_api
node_context_api -->|"uses window surface"| node_window_api
node_containers -->|"exposes"| node_vector
node_math_library -->|"exposes"| node_color
node_core -->|"provides"| node_assertions

click node_sim_main "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/src/main.cpp"
click node_world "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/world/world.cpp"
click node_entity "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/2DEntity/Entity.cpp"
click node_maths "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/maths/maths.cpp"
click node_window_api "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKWindow/NKWindow.h"
click node_context_api "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKWindow/Core/NkContext.h"
click node_event_system "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKEvent/NkEventSystem.h"
click node_keyboard_events "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKEvent/NkKeyboardEvent.h"
click node_window_exercises "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/exo1-la_fenetre_nue/c3-exo1_main.cpp"
click node_cursor_exercise "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/exo6-les_sept_curseurs/c3-exo6_main.cpp"
click node_clipboard_exercise "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/exo8-le_presse_papiers_dans_les_deux_sens/c3-exo8_main.cpp"
click node_dialog_exercise "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/exo9-les_quatre_dialogues/c3-exo9_main.cpp"
click node_containers "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKContainers/NKContainers.h"
click node_vector "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKContainers/Sequential/NkVector.h"
click node_math_library "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKMath/NKMath.h"
click node_color "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKMath/NkColor.h"
click node_core "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKCore/NKCore.h"
click node_platform "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKPlatform/NkPlatformDetect.h"
click node_assertions "https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKCore/Assert/NkAssertHandler.h"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_sim_main,node_world,node_entity,node_maths toneBlue
class node_window_api,node_context_api,node_event_system,node_keyboard_events,node_window_exercises,node_cursor_exercise,node_clipboard_exercise,node_dialog_exercise toneAmber
class node_containers,node_vector,node_math_library,node_color toneMint
class node_core,node_platform,node_assertions toneRose
class node_operator toneIndigo
```

## Components

### Simulation exercises

- [Simulation entry](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/src/main.cpp): `chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/src/main.cpp`
- [World simulation](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/world/world.cpp): `chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/world/world.cpp`
- [2D entities](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/2DEntity/Entity.cpp): `chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/2DEntity/Entity.cpp`
- [Simulation math](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/maths/maths.cpp): `chapitre-01/exo6-les_deux_erreurs_de_dependance/MyProject/maths/maths.cpp`

### Window and input

- [Window API](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKWindow/NKWindow.h): `chapitre-03/NkentseuKit/include/NKWindow/NKWindow.h`
- [Graphics context](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKWindow/Core/NkContext.h): `chapitre-03/NkentseuKit/include/NKWindow/Core/NkContext.h`
- [Event system](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKEvent/NkEventSystem.h): `chapitre-03/NkentseuKit/include/NKEvent/NkEventSystem.h`
- [Keyboard events](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKEvent/NkKeyboardEvent.h): `chapitre-03/NkentseuKit/include/NKEvent/NkKeyboardEvent.h`
- [Window exercises](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/exo1-la_fenetre_nue/c3-exo1_main.cpp): `chapitre-03/exo1-la_fenetre_nue/c3-exo1_main.cpp`
- [Cursor exercise](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/exo6-les_sept_curseurs/c3-exo6_main.cpp): `chapitre-03/exo6-les_sept_curseurs/c3-exo6_main.cpp`
- [Clipboard exercise](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/exo8-le_presse_papiers_dans_les_deux_sens/c3-exo8_main.cpp): `chapitre-03/exo8-le_presse_papiers_dans_les_deux_sens/c3-exo8_main.cpp`
- [Dialog exercise](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/exo9-les_quatre_dialogues/c3-exo9_main.cpp): `chapitre-03/exo9-les_quatre_dialogues/c3-exo9_main.cpp`

### NkentseuKit library

- [Containers](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKContainers/NKContainers.h): `chapitre-03/NkentseuKit/include/NKContainers/NKContainers.h`
- [Dynamic vector](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKContainers/Sequential/NkVector.h): `chapitre-03/NkentseuKit/include/NKContainers/Sequential/NkVector.h`
- [Math library](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKMath/NKMath.h): `chapitre-03/NkentseuKit/include/NKMath/NKMath.h`
- [Color utilities](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKMath/NkColor.h): `chapitre-03/NkentseuKit/include/NKMath/NkColor.h`

### Core facilities

- [Core utilities](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKCore/NKCore.h): `chapitre-03/NkentseuKit/include/NKCore/NKCore.h`
- [Platform detection](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKPlatform/NkPlatformDetect.h): `chapitre-03/NkentseuKit/include/NKPlatform/NkPlatformDetect.h`
- [Assertions](https://github.com/nyeck-abondo/ani-2053/blob/main/chapitre-03/NkentseuKit/include/NKCore/Assert/NkAssertHandler.h): `chapitre-03/NkentseuKit/include/NKCore/Assert/NkAssertHandler.h`

### Other components

- **Program invocation**

## Connections

- Program invocation → Simulation entry: starts
- Simulation entry → World simulation: initializes and commands
- Simulation entry → World simulation: reads and displays
- Window exercises → Window API: demonstrates windowing
- Cursor exercise → Window API: demonstrates cursors
- Clipboard exercise → Window API: demonstrates clipboard
- Dialog exercise → Window API: demonstrates dialogs
- Graphics context → Window API: creates after window
- Graphics context → Window API: uses window surface
- Containers → Dynamic vector: exposes
- Math library → Color utilities: exposes
- Core utilities → Assertions: provides
