- load controls from file
- load scores from leaderboard file
welcome menu
- start new game
- load saved game (only if saved games exist)
- high scores leaderboard (only if leaderboard is not empty)
- controls
- quit
player selection screen
- one player (vs AI)
- two player (hotseat)
- two player (online)
- no player (AI vs AI)
AI difficulty selection
- easy: random missiles
- medium: random missiles, concentrate fire around hits
- hard: probability density function
player one/two splash screen (hotseat only)
display board and place pieces
- initialize piece placement
- randomized
- collision detection
- piece movement (arrow keys)
- piece rotation (space key)
- piece selection (tab and color)
- finalize placement of all pieces (enter key)
- collision detection
- when finalizing placement only
- with other pieces
- with edge of board
AI board and piece placement (one player only)
- easy: randomly place pieces (same as initialization for player)
- medium: random but replace if pieces are adjacent
- hard: same as medium
gameplay start
- change to two-board view
- top board: tracking board for this player's guesses (enemy board)
- bottom board: tracking board for this player's ships (player board)
- randomly select start player
- indicate player turn on screen
- player one/two splash screen (hotseat only)
- initialize board with current player's ship placement
- graphics:
- cursor: blue circle
- hit: red circle
- miss: white circle
- cursor over hit or miss: grey circle
- keys:
- move cursor: arrow keys
- fire: enter key
- escape: save and quit
- save game splash screen
- hotseat only: enter name for current player's turn
- enter to confirm save and exit to menu
- check win condition after every turn
- AI turn:
- [see above](#AI difficulty selection)
- winner splash screen!
- score: missiles used (winners only)
- show leaderboard top 10 scores
- local saved top scores
- save to leaderboard.csv
- save as a binary file to prevent tampering!
- save as encrypted file
- if new high score, enter player username
- hit enter: go back to welcome menu
load saved game menu
- display list of saved games
- game type and timestamp
- for hotseat games: "Two player, Julieta's turn" include player name
- arrow keys move up/down list
- enter to select game
- display board
- "load this game?"
- enter to confirm
- backspace to cancel, back to saved games list
- escape to go back to welcome menu
controls screen
- display current controls
- arrow keys to scroll through controls
- enter to edit
- press new key for control
- update display of controls
- save controls to file
- reset to defaults option