From a12c3228a0cef4e18e5150d9cadb95988b14018d Mon Sep 17 00:00:00 2001 From: Aaro Saila Date: Sun, 15 Dec 2024 12:55:31 +0200 Subject: [PATCH] updated README --- README.md | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7343363..0cc7f75 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,28 @@ A simple snake game in the terminal. No third party libraries needed. ## Demo -[![Video Title](https://img.youtube.com/vi/_coOVAW9qa4/0.jpg)](https://www.youtube.com/watch?v=_coOVAW9qa4) +Click image for video + +[![Sanke demo](https://img.youtube.com/vi/_coOVAW9qa4/0.jpg)](https://www.youtube.com/watch?v=_coOVAW9qa4) + +## 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 and designed to work with the combination of +- GCC +- Linux +- x86 CPU