How lcfyhr/minigames works
1. This repository is a collection of standalone mini-game applications, not one shared product. Each game lives in its own top-level folder with its own source tree, IDE metadata, and build output. There is no shared library layer between the games.
2. The codebase splits cleanly by runtime:
- Java projects: ChessGame, Clingy Wall, Jumpy Ball, Mario Game
- Python projects: snakegame, MouseController
Each project appears to be independently runnable and packaged.
3. A repeated Java pattern shows a simple desktop-game architecture:
- a Main.java entrypoint starts the game
- a small set of domain classes model the core objects
- the main loop likely owns input handling, updates, and rendering
The file trees suggest these are compact, self-contained game loops rather than layered apps.
4. Jumpy Ball is the most minimal Java game structure:
- Main.java orchestrates the game
- Ball.java models the player-controlled object
- Wall.java models obstacles
The core data flow is likely input → ball movement → wall movement/collision → game state update.
5. Clingy Wall follows the same game-loop pattern but with more entities:
- Main.java
- Ball.java
- Blocks.java
- Platforms.java
This implies a vertical platforming/climbing game where the main loop coordinates physics-like movement, collision with blocks/platforms, and scrolling progression.
6. Mario Game is another Java desktop game, but it includes a persistent file:
- Main.java
- Highscore.txt
The presence of a text file indicates a simple file-based persistence boundary for score tracking, separate from the in-memory game state.
7. ChessGame is structured as a board-state model:
- Main.java
- Board.java
- Square.java
This suggests a local, two-player chess implementation where the board and its squares are explicit state objects, and Main drives interaction and turn flow. The README notes unfinished check/checkmate and move validation logic, so the current architecture likely centers on board representation more than complete rules enforcement.
8. The Python side is similarly self-contained. snakegame has a single snake.py, which likely contains the full game loop, state, and rendering/input logic in one file. That makes it a monolithic script rather than a multi-module app.
9. MouseController is not a game but an automation tool:
- cprautomine.py
- venv
The script is isolated in its own environment, which suggests external library usage and/or OS-level automation. Architecturally, it is a separate utility program with no dependency on the game code.
10. The main architectural boundary across the repo is therefore per-game isolation. There is no visible inter-process communication, shared assets, or reusable engine layer. Each folder is its own runtime island with its own entrypoint and state.
11. Input/output is mostly local and interactive:
- inputs: keyboard/mouse events for the games
- outputs: game rendering and state changes
- persistence: only clearly visible in Mario Game/Highscore.txt
- automation: MouseController likely interacts with another application via simulated input rather than internal APIs
12. For an architecture diagram, the top-level structure should show:
- repository root
- six independent application boxes
- Java vs. Python runtime separation
- a small file-persistence side channel for Mario
- no shared backend, database, or network service
Main entry points: company/Main.java Main · chess/Main.java Main · company/Main.java Main · ChessGame ChessGame
Components 21
Java apps
Independent desktop games implemented in Java.
- ChessGame · Chess application centered on board state and piece placement.
ChessGame - Main · Starts the chess game and drives interaction flow.
ChessGame/src/chess/Main.java - Board · Represents the chess board and higher-level game state.
ChessGame/src/chess/Board.java - Square · Represents an individual board square.
ChessGame/src/chess/Square.java - Clingy Wall · Platforming/climbing game with ball, blocks, and platforms.
Clingy Wall - Main · Runs the game loop and coordinates movement and collisions.
Clingy Wall/src/com/company/Main.java - Ball · Models the controllable ball character.
Clingy Wall/src/com/company/Ball.java - Blocks · Models solid obstacles and collision surfaces.
Clingy Wall/src/com/company/Blocks.java - Platforms · Models climbing platforms and progression geometry.
Clingy Wall/src/com/company/Platforms.java - Jumpy Ball · Minimal arcade game built around a ball and moving walls.
Jumpy Ball - Main · Owns the game loop, input, and state updates.
Jumpy Ball/src/com/company/Main.java - Ball · Models the player-controlled ball.
Jumpy Ball/src/com/company/Ball.java - Wall · Models moving or colliding wall obstacles.
Jumpy Ball/src/com/company/Wall.java - Mario Game · Desktop game with simple file-based high score persistence.
Mario Game - Main · Runs the game loop and updates score state.
Mario Game/src/com/company/Main.java - Highscore · Text file used to store the persistent best score.
Mario Game/Highscore.txt
Python apps
Standalone Python scripts and utilities.
Utility tool
Non-game automation program with its own virtual environment.
- MouseController · Automation tool that likely simulates input against another application.
MouseController - cprautomine.py · Primary script for mouse/input automation.
MouseController/cprautomine.py
Other components
- minigames · Collection of isolated mini-game projects and one automation tool.
Connections 20
- minigames → ChessGame: hosts · Repository contains an isolated Java game project.
- minigames → Clingy Wall: hosts · Repository contains an isolated Java game project.
- minigames → Jumpy Ball: hosts · Repository contains an isolated Java game project.
- minigames → Mario Game: hosts · Repository contains an isolated Java game project.
- minigames → snakegame: hosts · Repository contains an isolated Python game project.
- minigames → MouseController: hosts · Repository contains a separate Python utility project.
- ChessGame → Main: entrypoint · Main starts the chess application.
- Main → Board: uses · Main drives board state and turn flow.
- Main → Square: uses · Squares form the board's fine-grained state.
- Clingy Wall → Main: entrypoint · Main coordinates the platformer loop.
- Main → Ball: updates · Main advances the player object.
- Main → Blocks: collides · Main checks movement against obstacles.
- Main → Platforms: scrolls · Main advances level geometry and progression.
- Jumpy Ball → Main: entrypoint · Main owns the arcade loop.
- Main → Ball: updates · Main moves the controllable ball.
- Main → Wall: checks · Main handles wall motion and collision.
- Mario Game → Main: entrypoint · Main runs the game and score flow.
- Main → Highscore: persists · High score is stored in a text file.
- snakegame → snake.py: contains · Single-script game implementation.
- MouseController → cprautomine.py: runs · Primary automation logic lives in one script.