Aucune description

Aaro Saila 1dc0040fb3 Added null checks for malloc il y a 1 an
src 1dc0040fb3 Added null checks for malloc il y a 1 an
.gitignore 0e992c3be5 Added a build folder in the compile scripts and a gitignore il y a 1 an
README.md a9863b3441 Update README.md il y a 1 an
compile.sh 0e992c3be5 Added a build folder in the compile scripts and a gitignore il y a 1 an
compile_release.sh 0e992c3be5 Added a build folder in the compile scripts and a gitignore il y a 1 an

README.md

Sanke

A simple snake game in the terminal. No third party libraries needed.

Demo

Click image for video

Sanke demo

How it works

The program makes the terminal use non-canonical input and output by using termios. Then it updates and prints a 2D character array containing the board borders, snake, and food. Before terminating, the program restores canonical mode.

Each part of the snake is a node of a dynamically allocated linked list that contains:

  • The snake's x and y coordinates
  • The character that represents it on the board
  • The part's direction
  • A pointer to a order node (more on orders below)
  • A pointer to the next snake part node

An order keeps information on when a snake part should change to what direction. An order is also a node in a dynamically allocated linked list that contains:

  • The direction that this order eventually tells the snake part to go to
  • The delay i.e. how many ticks until the snake part has to change direction.
  • A pointer to the next order

Info

Only tested with the combination of

  • GCC
  • Linux
  • x86 CPU