# joker383627/python_basics_class architecture

> Architecture diagram of the GitHub repository joker383627/python_basics_class, 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/joker383627/python_basics_class
- Repository: https://github.com/joker383627/python_basics_class

## Overview

This repository contains two independent Python programs: a command-line arithmetic calculator and a Pygame space-shooter. The calculator converts entered infix expressions to postfix form and evaluates them; the game handles controls, enemies, bullets, collisions, scoring, and display in its main loop. The game source and two audio assets are sampled; the notebooks and referenced image/font assets are not, so they are omitted.

Main entry points: [`a boring game/space_petrol.py`](https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py) (Game Loop), [`shunting.py`](https://github.com/joker383627/python_basics_class/blob/main/shunting.py) (Calculator Loop), [`a boring game/background.wav`](https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/background.wav) (Background Audio), [`a boring game/explosion.wav`](https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/explosion.wav) (Explosion Audio)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_calculator["Calculator"]
  node_calculator_loop["Calculator Loop<br/>[shunting.py]"]
  node_infix_conversion["Infix Conversion<br/>[shunting.py]"]
  node_postfix_evaluation["Postfix Evaluation<br/>[shunting.py]"]
end

subgraph group_game["Space Game"]
  node_game_loop["Game Loop<br/>[space_petrol.py]"]
  node_player_events["Player Events<br/>[space_petrol.py]"]
  node_player_movement["Player Movement<br/>[space_petrol.py]"]
  node_enemy_system["Enemy System<br/>[space_petrol.py]"]
  node_bullet_system["Bullet System<br/>[space_petrol.py]"]
  node_collision_scoring["Collision and Scoring<br/>[space_petrol.py]"]
  node_display["Game Display<br/>[space_petrol.py]"]
end

subgraph group_audio["Audio Assets"]
  node_pygame_audio["Pygame Audio"]
  node_background_audio["Background Audio<br/>[background.wav]"]
  node_explosion_audio["Explosion Audio<br/>[explosion.wav]"]
end

node_calc_user(("Calculator User"))
node_game_player(("Player"))

node_calc_user -->|"enters expressions"| node_calculator_loop
node_calculator_loop -->|"converts input"| node_infix_conversion
node_calculator_loop -->|"evaluates result"| node_postfix_evaluation
node_calculator_loop -->|"prints result"| node_calc_user
node_game_player -->|"presses controls"| node_player_events
node_game_loop -->|"dispatches events"| node_player_events
node_game_loop -->|"updates position"| node_player_movement
node_game_loop -->|"moves enemies"| node_enemy_system
node_game_loop -->|"updates bullets"| node_bullet_system
node_game_loop -->|"checks collisions"| node_collision_scoring
node_game_loop -->|"renders frame"| node_display
node_player_events -->|"sets controls"| node_player_movement
node_game_loop -->|"starts music"| node_pygame_audio
node_game_loop -->|"plays effects"| node_pygame_audio
node_pygame_audio -->|"loads music"| node_background_audio
node_pygame_audio -->|"loads effect"| node_explosion_audio

click node_calculator_loop "https://github.com/joker383627/python_basics_class/blob/main/shunting.py"
click node_infix_conversion "https://github.com/joker383627/python_basics_class/blob/main/shunting.py"
click node_postfix_evaluation "https://github.com/joker383627/python_basics_class/blob/main/shunting.py"
click node_game_loop "https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py"
click node_player_events "https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py"
click node_player_movement "https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py"
click node_enemy_system "https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py"
click node_bullet_system "https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py"
click node_collision_scoring "https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py"
click node_display "https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py"
click node_background_audio "https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/background.wav"
click node_explosion_audio "https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/explosion.wav"

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_calculator_loop,node_infix_conversion,node_postfix_evaluation,node_calc_user toneBlue
class node_game_loop,node_player_events,node_player_movement,node_enemy_system,node_bullet_system,node_collision_scoring,node_display toneAmber
class node_pygame_audio,node_background_audio,node_explosion_audio toneMint
class node_game_player toneIndigo
```

## Components

### Calculator

- [Calculator Loop](https://github.com/joker383627/python_basics_class/blob/main/shunting.py): `shunting.py`
- [Infix Conversion](https://github.com/joker383627/python_basics_class/blob/main/shunting.py): `shunting.py`
- [Postfix Evaluation](https://github.com/joker383627/python_basics_class/blob/main/shunting.py): `shunting.py`

### Space Game

- [Game Loop](https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py): `a boring game/space_petrol.py`
- [Player Events](https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py): `a boring game/space_petrol.py`
- [Player Movement](https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py): `a boring game/space_petrol.py`
- [Enemy System](https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py): `a boring game/space_petrol.py`
- [Bullet System](https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py): `a boring game/space_petrol.py`
- [Collision and Scoring](https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py): `a boring game/space_petrol.py`
- [Game Display](https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/space_petrol.py): `a boring game/space_petrol.py`

### Audio Assets

- **Pygame Audio**
- [Background Audio](https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/background.wav): `a boring game/background.wav`
- [Explosion Audio](https://github.com/joker383627/python_basics_class/blob/main/a%20boring%20game/explosion.wav): `a boring game/explosion.wav`

### Other components

- **Calculator User**
- **Player**

## Connections

- Calculator User → Calculator Loop: enters expressions
- Calculator Loop → Infix Conversion: converts input
- Calculator Loop → Postfix Evaluation: evaluates result
- Calculator Loop → Calculator User: prints result
- Player → Player Events: presses controls
- Game Loop → Player Events: dispatches events
- Game Loop → Player Movement: updates position
- Game Loop → Enemy System: moves enemies
- Game Loop → Bullet System: updates bullets
- Game Loop → Collision and Scoring: checks collisions
- Game Loop → Game Display: renders frame
- Player Events → Player Movement: sets controls
- Game Loop → Pygame Audio: starts music
- Game Loop → Pygame Audio: plays effects
- Pygame Audio → Background Audio: loads music
- Pygame Audio → Explosion Audio: loads effect
