# isabelleqywang/ctrl-alt-defend architecture

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

- Interactive diagram: https://gitdiagram.com/isabelleqywang/ctrl-alt-defend
- Repository: https://github.com/isabelleqywang/ctrl-alt-defend

## Overview

Ctrl + Alt + Defend is a Ren’Py cybersecurity-awareness game. The player starts as CyberGod, reviews friends’ threat scenarios, then makes decisions or plays a mini-game to help them. The README documents three distinct scenarios: pop-up handling, virus response, and evaluating a suspicious bank call. The tree identifies the script, screens, and GUI directories, but no source excerpts were provided, so internal calls and scenario-to-screen wiring cannot be verified; the graph stays at the documented product level.

Main entry points: [`game/script.rpy`](https://github.com/isabelleqywang/ctrl-alt-defend/blob/main/game/script.rpy) (Game flow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Game runtime"]
  node_game["Game flow<br/>[script.rpy]"]
end

subgraph group_scenarios["Threat scenarios"]
  node_dylan["Dylan: pop-ups<br/>[script.rpy]"]
  node_sherry["Sherry: virus<br/>[script.rpy]"]
  node_julie["Julie: bank call<br/>[script.rpy]"]
end

subgraph group_interface["Game interface"]
  node_screens["Game screens<br/>[screens.rpy]"]
  node_gui["GUI theme<br/>[gui.rpy]"]
  node_images["Game images"]
end

node_player(("Player"))

node_player -->|"starts and plays"| node_game
node_game -->|"presents scenario"| node_dylan
node_game -->|"presents scenario"| node_sherry
node_game -->|"presents scenario"| node_julie

click node_game "https://github.com/isabelleqywang/ctrl-alt-defend/blob/main/game/script.rpy"
click node_dylan "https://github.com/isabelleqywang/ctrl-alt-defend/blob/main/game/script.rpy"
click node_sherry "https://github.com/isabelleqywang/ctrl-alt-defend/blob/main/game/script.rpy"
click node_julie "https://github.com/isabelleqywang/ctrl-alt-defend/blob/main/game/script.rpy"
click node_screens "https://github.com/isabelleqywang/ctrl-alt-defend/blob/main/game/screens.rpy"
click node_gui "https://github.com/isabelleqywang/ctrl-alt-defend/blob/main/game/gui.rpy"
click node_images "https://github.com/isabelleqywang/ctrl-alt-defend/tree/main/game/images"

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_game toneBlue
class node_dylan,node_sherry,node_julie toneAmber
class node_screens,node_gui,node_images toneMint
class node_player toneIndigo
```

## Components

### Game runtime

- [Game flow](https://github.com/isabelleqywang/ctrl-alt-defend/blob/main/game/script.rpy): `game/script.rpy`

### Threat scenarios

- [Dylan: pop-ups](https://github.com/isabelleqywang/ctrl-alt-defend/blob/main/game/script.rpy): `game/script.rpy`
- [Sherry: virus](https://github.com/isabelleqywang/ctrl-alt-defend/blob/main/game/script.rpy): `game/script.rpy`
- [Julie: bank call](https://github.com/isabelleqywang/ctrl-alt-defend/blob/main/game/script.rpy): `game/script.rpy`

### Game interface

- [Game screens](https://github.com/isabelleqywang/ctrl-alt-defend/blob/main/game/screens.rpy): `game/screens.rpy`
- [GUI theme](https://github.com/isabelleqywang/ctrl-alt-defend/blob/main/game/gui.rpy): `game/gui.rpy`
- [Game images](https://github.com/isabelleqywang/ctrl-alt-defend/tree/main/game/images): `game/images`

### Other components

- **Player**

## Connections

- Player → Game flow: starts and plays
- Game flow → Dylan: pop-ups: presents scenario
- Game flow → Sherry: virus: presents scenario
- Game flow → Julie: bank call: presents scenario
