# cameronmcnz/rock-paper-scissors architecture

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

- Interactive diagram: https://gitdiagram.com/cameronmcnz/rock-paper-scissors
- Repository: https://github.com/cameronmcnz/rock-paper-scissors

## Overview

This repository is a small Java rock-paper-scissors application with a Swing desktop game and a separate gesture-to-result service. In the desktop loop, a user supplies a gesture; the game updates a score, records a summary, and displays results. The service independently creates summaries. The excerpts show no connection from either entry point to the other. The README is empty, so capabilities and relationships beyond the sampled source are not inferred.

Main entry points: [`src/main/java/com/mcnz/rps/DesktopGame.java`](https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/DesktopGame.java) (Desktop game), [`src/main/java/com/mcnz/rps/Game.java`](https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/Game.java) (Simple game prompt), [`src/main/java/com/mcnz/rps/GameSummary.java`](https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/GameSummary.java) (Game summary), [`src/main/java/com/mcnz/rps/GameService.java`](https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/GameService.java) (Gesture service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Game entry points"]
  node_desktop["Desktop game<br/>[DesktopGame.java]"]
  node_game["Simple game prompt<br/>[Game.java]"]
  node_service["Gesture service<br/>[GameService.java]"]
end

subgraph group_domain["Game state and results"]
  node_score["Score<br/>[Score.java]"]
  node_summary["Game summary<br/>[GameSummary.java]"]
end

node_user(("Player"))

node_user -->|"enters gestures"| node_desktop
node_desktop -->|"shows results"| node_user
node_user -->|"enters gesture"| node_game
node_game -->|"shows selection"| node_user
node_desktop -->|"updates score"| node_score
node_desktop -->|"creates summaries"| node_summary
node_service -->|"creates summary"| node_summary

click node_desktop "https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/DesktopGame.java"
click node_game "https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/Game.java"
click node_service "https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/GameService.java"
click node_score "https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/Score.java"
click node_summary "https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/GameSummary.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_desktop,node_game,node_service toneBlue
class node_score,node_summary toneAmber
class node_user toneIndigo
```

## Components

### Game entry points

- [Desktop game](https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/DesktopGame.java): `src/main/java/com/mcnz/rps/DesktopGame.java`
- [Simple game prompt](https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/Game.java): `src/main/java/com/mcnz/rps/Game.java`
- [Gesture service](https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/GameService.java): `src/main/java/com/mcnz/rps/GameService.java`

### Game state and results

- [Score](https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/Score.java): `src/main/java/com/mcnz/rps/Score.java`
- [Game summary](https://github.com/cameronmcnz/rock-paper-scissors/blob/master/src/main/java/com/mcnz/rps/GameSummary.java): `src/main/java/com/mcnz/rps/GameSummary.java`

### Other components

- **Player**

## Connections

- Player → Desktop game: enters gestures (evidence: `src/main/java/com/mcnz/rps/DesktopGame.java`)
- Desktop game → Player: shows results (evidence: `src/main/java/com/mcnz/rps/DesktopGame.java`)
- Player → Simple game prompt: enters gesture (evidence: `src/main/java/com/mcnz/rps/Game.java`)
- Simple game prompt → Player: shows selection (evidence: `src/main/java/com/mcnz/rps/Game.java`)
- Desktop game → Score: updates score (evidence: `src/main/java/com/mcnz/rps/DesktopGame.java`)
- Desktop game → Game summary: creates summaries (evidence: `src/main/java/com/mcnz/rps/DesktopGame.java`)
- Gesture service → Game summary: creates summary (evidence: `src/main/java/com/mcnz/rps/GameService.java`)
