# vprates-22/number-guessing-game architecture

> Architecture diagram of the GitHub repository vprates-22/number-guessing-game, 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/vprates-22/number-guessing-game
- Repository: https://github.com/vprates-22/number-guessing-game

## Overview

This is a Java CLI number-guessing game. The player chooses a difficulty, makes guesses within dynamically updated bounds, receives feedback, and may start another round. Game coordinates the round, domain logic tracks attempts and history, and a random-number generator supplies the secret. The README documents these capabilities; the sampled source confirms their main call paths. The graph omits tests and build machinery.

Main entry points: [`src/main/java/com/github/vprates22/domain/NumberGuessingGame.java`](https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/domain/NumberGuessingGame.java) (Round state and rules), [`src/main/java/com/github/vprates22/Game.java`](https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/Game.java) (Game coordinator), [`src/main/java/com/github/vprates22/ui/ConsoleUI.java`](https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/ui/ConsoleUI.java) (Console UI), [`src/main/java/com/github/vprates22/domain/Difficulty.java`](https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/domain/Difficulty.java) (Difficulty settings)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_interaction["Console interaction"]
  node_game["Game coordinator<br/>[Game.java]"]
  node_console["Console UI<br/>[ConsoleUI.java]"]
end

subgraph group_rules["Game rules"]
  node_difficulty["Difficulty settings<br/>[Difficulty.java]"]
  node_round["Round state and rules"]
  node_result["Guess outcomes<br/>[GuessResult.java]"]
end

subgraph group_randomization["Secret generation"]
  node_generator["Number generator API"]
  node_random["Random generator"]
end

node_player(("Player"))

node_player -->|"enters choices and guesses"| node_console
node_console -->|"displays prompts and feedback"| node_player
node_game -->|"requests input and displays"| node_console
node_console -->|"returns choices and guesses"| node_game
node_game -->|"creates and checks round"| node_round
node_game -->|"submits guesses"| node_round
node_game -->|"reads round state"| node_round
node_game -->|"uses selected settings"| node_difficulty
node_round -->|"reads limits"| node_difficulty
node_round -->|"requests secret number"| node_generator
node_random -->|"implements"| node_generator
node_round -->|"returns guess outcome"| node_result
node_console -->|"reads round state for display"| node_round

click node_game "https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/Game.java"
click node_console "https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/ui/ConsoleUI.java"
click node_difficulty "https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/domain/Difficulty.java"
click node_round "https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/domain/NumberGuessingGame.java"
click node_result "https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/domain/GuessResult.java"
click node_generator "https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/generator/NumberGenerator.java"
click node_random "https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/generator/RandomNumberGenerator.java"

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,node_console toneBlue
class node_difficulty,node_round,node_result toneAmber
class node_generator,node_random toneMint
class node_player toneIndigo
```

## Components

### Console interaction

- [Game coordinator](https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/Game.java): `src/main/java/com/github/vprates22/Game.java`
- [Console UI](https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/ui/ConsoleUI.java): `src/main/java/com/github/vprates22/ui/ConsoleUI.java`

### Game rules

- [Difficulty settings](https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/domain/Difficulty.java): `src/main/java/com/github/vprates22/domain/Difficulty.java`
- [Round state and rules](https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/domain/NumberGuessingGame.java): `src/main/java/com/github/vprates22/domain/NumberGuessingGame.java`
- [Guess outcomes](https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/domain/GuessResult.java): `src/main/java/com/github/vprates22/domain/GuessResult.java`

### Secret generation

- [Number generator API](https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/generator/NumberGenerator.java): `src/main/java/com/github/vprates22/generator/NumberGenerator.java`
- [Random generator](https://github.com/vprates-22/number-guessing-game/blob/main/src/main/java/com/github/vprates22/generator/RandomNumberGenerator.java): `src/main/java/com/github/vprates22/generator/RandomNumberGenerator.java`

### Other components

- **Player**

## Connections

- Player → Console UI: enters choices and guesses
- Console UI → Player: displays prompts and feedback
- Game coordinator → Console UI: requests input and displays
- Console UI → Game coordinator: returns choices and guesses
- Game coordinator → Round state and rules: creates and checks round
- Game coordinator → Round state and rules: submits guesses
- Game coordinator → Round state and rules: reads round state
- Game coordinator → Difficulty settings: uses selected settings
- Round state and rules → Difficulty settings: reads limits
- Round state and rules → Number generator API: requests secret number
- Random generator → Number generator API: implements
- Round state and rules → Guess outcomes: returns guess outcome
- Console UI → Round state and rules: reads round state for display
