jag

snake_c

public

Small snake game in C

Star0
Watch0

Commit 4d50b5b2712b

tarball

Jaglekon <58274093+Jaglekon@users.noreply.github.com>2026-03-24 14:29 UTC

1 file changed+22-27
made stuff even easier
Modified file: snake.c+22 additions−27 deletions
@@ -212,7 +212,7 @@ int main(int argc, char *args[]) {
212212 my_snake.position[0].coords.y = HEIGHT >> 1;
213213 my_snake.position[0].coords.x = WIDTH >> 1;
214214 my_snake.position[0].directions[0] = shift;
215- my_snake.position[0].directions[1] = NO_DIRECTION;
215+ my_snake.position[0].directions[1] = shift;
216216 for (i = 1; i < my_snake.length; i++) {
217217 my_snake.position[i].coords.y = -1;
218218 my_snake.position[i].coords.x = -1;
@@ -371,36 +371,31 @@ void update_field(snake my_snake, char board[HEIGHT][WIDTH][STRING_LEN],
371371 strcpy(board[y][x], "\033[31m X\033[0m");
372372 }
373373 } else {
374-
375- direction smaller = my_snake.position[i].directions[0];
376- direction bigger = my_snake.position[i].directions[1];
374+
375+ char *snake_bit[DIRECTIONS][DIRECTIONS] = {
376+ [UP][UP] = " ║",
377+ [DOWN][DOWN] = " ║",
378+
379+ [RIGHT][RIGHT] = "══",
380+ [LEFT][LEFT] = "══",
381+
382+ [DOWN][RIGHT] = "═╗",
383+ [LEFT][UP] = "═╗",
384+
385+ [UP][RIGHT] = "═╝",
386+ [LEFT][DOWN] = "═╝",
387+
388+ [DOWN][LEFT] = " ╔",
389+ [RIGHT][UP] = " ╔",
390+
391+ [UP][LEFT] = " ╚",
392+ [RIGHT][DOWN] = " ╚"
393+ };
377394
378395 direction first = my_snake.position[i].directions[0];
379396 direction second = my_snake.position[i].directions[1];
380397
381- if (bigger < smaller) {
382- direction tmp = smaller;
383- smaller = bigger;
384- bigger = tmp;
385- }
386-
387-
388- if (smaller % 2 != 0 && bigger % 2 == 1) {
389- strcpy(board[y][x], "\033[33m══\033[0m");
390- } else if ((!(smaller % 2) || smaller % 2 == -1) && !(bigger % 2)) {
391- strcpy(board[y][x], "\033[33m ║\033[0m");
392- } else if ((first == DOWN && second == RIGHT) || (first == LEFT && second == UP)) {
393- strcpy(board[y][x], "\033[33m═╗\033[0m");
394- } else if ((first == UP && second == RIGHT) || (first == LEFT && second == DOWN)) {
395- strcpy(board[y][x], "\033[33m═╝\033[0m");
396- } else if ((first == DOWN && second == LEFT) || (first == RIGHT && second == UP)) {
397- strcpy(board[y][x], "\033[33m ╔\033[0m");
398- } else if ((first == UP && second == LEFT) || (first == RIGHT && second == DOWN)) {
399- strcpy(board[y][x], "\033[33m ╚\033[0m");
400- } else {
401- strcpy(board[y][x], "\033[33m x\033[0m");
402- }
403-
398+ snprintf(board[y][x], sizeof(board[y][x]),"\033[33m%s\033[0m",snake_bit[first][second]);
404399 }
405400 }
406401 }