# mkevinthecreator/pseminarmatheescaperoom_2025-26 architecture

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

- Interactive diagram: https://gitdiagram.com/mkevinthecreator/pseminarmatheescaperoom_2025-26
- Repository: https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26

## Overview

This repository implements a PySide6 space-themed escape-room experience. Players interact with on-screen puzzles; the main application coordinates puzzle screens, timing, sound, and (when enabled) Zigbee plugs, while companion display programs provide a timed trajectory puzzle through text files. The graph distinguishes the main and release variants and shows the sampled UI helpers and integrations. Some module contents and most main-application logic were not sampled, so links are limited to visible calls and SOURCE INDEX references.

Main entry points: [`main.py`](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/main.py) (Main App), [`main_release.py`](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/main_release.py) (Release App), [`time_puzzle_display.py`](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/time_puzzle_display.py) (Trajectory Display), [`time_puzzle_display_release.py`](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/time_puzzle_display_release.py) (Release Display)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_app["Escape Room App"]
  node_main["Main App<br/>[main.py]"]
  node_release["Release App<br/>[main_release.py]"]
end

subgraph group_widgets["Puzzle UI Components"]
  node_movie["Movie Playback<br/>[movie.py]"]
  node_movie_release["Release Movie<br/>[movie_release.py]"]
  node_end_video["End Video Widget<br/>[endVideo.py]"]
  node_dial["Custom Dial<br/>[customDial.py]"]
  node_circle_button["Circle Button<br/>[circleButton.py]"]
  node_graph["Graph Puzzle<br/>[graph_system.py]"]
  node_rocket["Rocket Widget<br/>[rocket.py]"]
  node_rocket_release["Release Rocket<br/>[rocket_release.py]"]
  node_speech["Speech Worker<br/>[speech.py]"]
  node_glow["Glow Effect<br/>[fontGlowEffect.py]"]
end

subgraph group_display["Puzzle Display"]
  node_puzzle_display["Trajectory Display"]
  node_release_display["Release Display"]
  node_status_file["Puzzle Status File"]
  node_input_file["Puzzle Input File"]
end

subgraph group_integration["External Interfaces"]
  node_zigbee(("Zigbee Plugs"))
end

node_player(("Player"))

node_player -->|"uses"| node_main
node_main -->|"uses"| node_dial
node_main -->|"uses"| node_circle_button
node_main -->|"creates"| node_graph
node_main -->|"uses"| node_rocket
node_main -->|"uses"| node_speech
node_main -->|"uses"| node_movie
node_main -->|"uses"| node_end_video
node_release -->|"uses"| node_dial
node_release -->|"uses"| node_circle_button
node_release -->|"creates"| node_graph
node_release -->|"uses"| node_rocket_release
node_release -->|"uses"| node_speech
node_release -->|"uses"| node_movie_release
node_release -->|"uses"| node_end_video
node_main -->|"controls"| node_zigbee
node_player -->|"views"| node_puzzle_display
node_puzzle_display -->|"reads and writes"| node_status_file
node_puzzle_display -->|"reads"| node_input_file
node_release_display -->|"reads and writes"| node_status_file
node_release_display -->|"reads"| node_input_file
node_puzzle_display -->|"applies"| node_glow
node_release_display -->|"applies"| node_glow

click node_main "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/main.py"
click node_release "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/main_release.py"
click node_movie "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/movie.py"
click node_movie_release "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/movie_release.py"
click node_end_video "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/endVideo.py"
click node_dial "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/customDial.py"
click node_circle_button "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/circleButton.py"
click node_graph "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/graph_system.py"
click node_rocket "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/rocket.py"
click node_rocket_release "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/rocket_release.py"
click node_speech "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/speech.py"
click node_puzzle_display "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/time_puzzle_display.py"
click node_release_display "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/time_puzzle_display_release.py"
click node_glow "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/fontGlowEffect.py"
click node_status_file "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/asteroidInformation.txt"
click node_input_file "https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/asteroidInputText.txt"

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_main,node_release toneBlue
class node_movie,node_movie_release,node_end_video,node_dial,node_circle_button,node_graph,node_rocket,node_rocket_release,node_speech,node_glow toneAmber
class node_puzzle_display,node_release_display,node_status_file,node_input_file toneMint
class node_zigbee toneRose
class node_player toneIndigo
```

## Components

### Escape Room App

- [Main App](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/main.py): `main.py`
- [Release App](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/main_release.py): `main_release.py`

### Puzzle UI Components

- [Movie Playback](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/movie.py): `movie.py`
- [Release Movie](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/movie_release.py): `movie_release.py`
- [End Video Widget](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/endVideo.py): `endVideo.py`
- [Custom Dial](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/customDial.py): `customDial.py`
- [Circle Button](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/circleButton.py): `circleButton.py`
- [Graph Puzzle](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/graph_system.py): `graph_system.py`
- [Rocket Widget](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/rocket.py): `rocket.py`
- [Release Rocket](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/rocket_release.py): `rocket_release.py`
- [Speech Worker](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/speech.py): `speech.py`
- [Glow Effect](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/fontGlowEffect.py): `fontGlowEffect.py`

### Puzzle Display

- [Trajectory Display](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/time_puzzle_display.py): `time_puzzle_display.py`
- [Release Display](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/time_puzzle_display_release.py): `time_puzzle_display_release.py`
- [Puzzle Status File](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/asteroidInformation.txt): `asteroidInformation.txt`
- [Puzzle Input File](https://github.com/mkevinthecreator/pseminarmatheescaperoom_2025-26/blob/main/asteroidInputText.txt): `asteroidInputText.txt`

### External Interfaces

- **Zigbee Plugs**

### Other components

- **Player**

## Connections

- Player → Main App: uses (evidence: `main.py`)
- Main App → Custom Dial: uses (evidence: `main.py`)
- Main App → Circle Button: uses (evidence: `main.py`)
- Main App → Graph Puzzle: creates (evidence: `main.py`)
- Main App → Rocket Widget: uses (evidence: `main.py`)
- Main App → Speech Worker: uses (evidence: `main.py`)
- Main App → Movie Playback: uses (evidence: `main.py`)
- Main App → End Video Widget: uses (evidence: `main.py`)
- Release App → Custom Dial: uses (evidence: `main_release.py`)
- Release App → Circle Button: uses (evidence: `main_release.py`)
- Release App → Graph Puzzle: creates (evidence: `main_release.py`)
- Release App → Release Rocket: uses (evidence: `main_release.py`)
- Release App → Speech Worker: uses (evidence: `main_release.py`)
- Release App → Release Movie: uses (evidence: `main_release.py`)
- Release App → End Video Widget: uses (evidence: `main_release.py`)
- Main App → Zigbee Plugs: controls (evidence: `main.py`)
- Player → Trajectory Display: views (evidence: `time_puzzle_display.py`)
- Trajectory Display → Puzzle Status File: reads and writes (evidence: `time_puzzle_display.py`)
- Trajectory Display → Puzzle Input File: reads (evidence: `time_puzzle_display.py`)
- Release Display → Puzzle Status File: reads and writes (evidence: `time_puzzle_display_release.py`)
- Release Display → Puzzle Input File: reads (evidence: `time_puzzle_display_release.py`)
- Trajectory Display → Glow Effect: applies (evidence: `time_puzzle_display.py`)
- Release Display → Glow Effect: applies (evidence: `time_puzzle_display_release.py`)
