Go to file
2023-08-22 17:54:07 +02:00
src major control scheme rework 2023-08-22 17:54:07 +02:00
.gitignore get basic tui set up 2023-08-14 23:08:37 +02:00
Cargo.lock add sudoku generator & validator 2023-08-21 15:26:12 +02:00
Cargo.toml add sudoku generator & validator 2023-08-21 15:26:12 +02:00
LICENSE add license and readme 2023-08-14 23:34:51 +02:00
README.md major control scheme rework 2023-08-22 17:54:07 +02:00

💡 shdoku

A basic tui sudoku game for your shell.


Controls

The current control scheme adheres to vim-like keybindings and is modal.

  • h, j, k, l to move left, down, up, right

  • H, J, K, L to move 3 spaces at once

  • 1-9 to preselect a number

  • Modes:

    • a to enter Markup mode
    • i to enter Edit mode
    • g to enter Go mode
      • 1-9 to move to block
      • you then return to the previous mode
    • A and I to enter Edit/Markup mode "once"
      • do a single edit/mark
      • you then return to the previous mode
    • <esc> to return to Edit mode
  • <space> to place/unplace preselected number/mark

  • x to delete a number/mark

  • q to quit

Preview

This is what the sudoku will be displayed like.

┌────────┬────────┬────────┐
│ 5 3    │   7    │        │
│ 6      │ 1 9 5  │        │
│   9 8  │        │   6    │
├────────┼────────┼────────┤
│ 8      │   6    │     3  │
│ 4      │ 8   3  │     1  │
│ 7      │   2    │     6  │
├────────┼────────┼────────┤
│   6    │        │ 2 8    │
│        │ 4 1 9  │     5  │
│        │   8    │   7 9  │
└────────┴────────┴────────┘

Todo

  • Game logic

    • Validate Sudokus
    • Generate Sudokus
      • Difficulties to choose
    • Timer
      • Scoreboard per difficulty
    • Undo functionality
  • Basic UI

    • Basic controls
    • Basic rendering
    • Centered UI
    • Reset terminal state
  • Final UI

    • Final controls
      • Preselect numbers
      • Edit Mode to (re)place numbers
      • Markup Mode to mark where numbers could go
      • Go Mode to move to blocks 1-9
      • Toggle Number/Mark with Space
    • Colored UI
      • Hightlight selected numbers
      • Hightlight selected markups
      • Color chooser
    • Live timer
    • Scoreboard access
    • Difficulty selection

The Final UI design should include a sidebar, that will look something like the following:

┌────────┬────────┬────────┐    ┌───────┐
│        │        │ 8 9    │    │ Hard  │ <- Difficulty
│ 4 9 7  │        │     6  │    │ 36/81 │ <- Completion in number of cells
│     2  │ 3   1  │   7    │    ├───────┤
├────────┼────────┼────────┤    │ 01:22 │ <- Elapsed Time
│     6  │ 9 7    │     3  │    ├───────┤
│   3    │ 5   2  │        │    │> Edit │ <- Active Mode
│ 7 2    │ 1   3  │ 5   4  │    │  Mark │
├────────┼────────┼────────┤    │  Go   │
│ 2   1  │   3 7  │ 9 5    │    ├───────┤
│ 5      │     9  │ 3 4    │    │  [9]  │ <- Preselected Number
│        │ 4      │ 6   1  │    │ 4 / 9 │ <- Completion of preselected Number
└────────┴────────┴────────┘    └───────┘