Small snake game in C
Commit 4d50b5b2712b
tarball1 file changed+22-27
@@ -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
}