# TODO

This is a long-term list of things that might be nice
to have on the game. They're grouped by how much
difficult would be to actually implement.

If you want to add a suggestion, by all means create an
issue here:

https://github.com/alexdantas/nsnake/issues?state=open

---

## Easy

- [ ] When the snake eats a frut, modify its body so that the place
      where the fruit was becomes big. Just like when a snake eats
      it gets stuffed.

- [ ] Make the game speed changing more balanced

- [X] Make the fruit give score relative to game level

- [X] Leave nsnake with the default background color of the user
      terminal, instead of COLOR_BLACK. Since use_default_colors is a
      ncurses extension, the man page recommends conditioning it to
      NCURSES_VERSION. What does that mean?

- [ ] Deal with signals, in case someone does Ctrl+C.
      Exit from ncurses and free() the snake memory :D

- [X] Create function that will verify if the user pressed something
      (kbhit()) If the user did, go to the nonblocking input functions
      (saves memory)

- [ ] When clearing highscores, show if it worked or not (due to
      several reasons) Show the hscore directory?

## Medium

- [ ] CLI argument that changes the snake color Like -c [0 ~ 4],
      changes colors from 0 to 4 Change more colors?

- [X] Use textual high score file (avoid binary hell)

- [ ] Key 'c' changes the color in-game

- [ ] Make CLI argument that changes the game level size?

- [ ] Follow the other `nsnake` path and handle the SIGWINCH signal?
      This way, whenever someone resize the window, i could do
      whatever i want, like resize the game window or move the
      screen...

- [X] Increase or decrease movement speed according to the game

## Hard

- [ ] Change the way highscores exist. Maybe implement a highscore
      screen, with the names of the players. Assume default name as
      getenv("USER") and such.

- [ ] Campaign Mode?

- [X] Change levels

- [X] Possibility to change the controls (add config option - add
      controls configuration file)

- [X] True Highscore Support: For each mode, its own Highscore

## Dante Must Die Hard

- [ ] Windows support:	PDCurses!

- [X] Rewrite from scratch on C++

