From be6dfe712c6397f55975b37ba02f629582792abb Mon Sep 17 00:00:00 2001 From: Aaro Saila Date: Sun, 15 Dec 2024 12:07:25 +0200 Subject: [PATCH] hasty bugfix and moved board functions to own directory --- src/board/board.c | 31 +++++++++++++++++++++++++++++++ src/board/board.h | 11 +++++++++++ src/main.c | 17 ++--------------- src/snake/snake.c | 18 ++++++++++++++++++ src/utils/utils.c | 18 ++++++++++++++++++ src/utils/utils.h | 1 + 6 files changed, 81 insertions(+), 15 deletions(-) create mode 100644 src/board/board.c create mode 100644 src/board/board.h diff --git a/src/board/board.c b/src/board/board.c new file mode 100644 index 0000000..a22190d --- /dev/null +++ b/src/board/board.c @@ -0,0 +1,31 @@ +#include +#include "../globals.h" + +extern boardInfo brdInfo; + +void setBoardBorders(char board[][brdInfo.x]) { + for (int i = 0; i < brdInfo.y; i++) { + for (int j = 0; j < brdInfo.x; j++) { + if (i == 0 || i == brdInfo.y - 1) + board[i][j] = '-'; + else if (j == 0 || j == brdInfo.x - 1) + board[i][j] = '|'; + else + board[i][j] = ' '; + } + } + + board[0][0] = '+'; + board[brdInfo.y - 1][0] = '+'; + board[0][brdInfo.x - 1] = '+'; + board[brdInfo.y - 1][brdInfo.x - 1] = '+'; +} + +void printBoard(char board[][brdInfo.x]) { + for (int i = 0; i < brdInfo.y; i++) { + for (int j = 0; j < brdInfo.x; j++) { + printf("%c", board[i][j]); + } + printf("\n"); + } +} diff --git a/src/board/board.h b/src/board/board.h new file mode 100644 index 0000000..74b127f --- /dev/null +++ b/src/board/board.h @@ -0,0 +1,11 @@ +#ifndef BOARD_H_ +#define BOARD_H_ + +#include "../globals.h" + +extern boardInfo brdInfo; + +void setBoardBorders(char board[][brdInfo.x]); +void printBoard(char board[][brdInfo.x]); + +#endif diff --git a/src/main.c b/src/main.c index cacb85d..695021f 100644 --- a/src/main.c +++ b/src/main.c @@ -8,6 +8,7 @@ #include #include "./utils/utils.h" #include "./snake/snake.h" +#include "./board/board.h" #include "globals.h" const char SNAKE_VIS = '#'; @@ -50,21 +51,7 @@ int main() { tcsetattr(STDIN_FILENO, 0, &attr); // Game board setup - for (int i = 0; i < brdInfo.y; i++) { - for (int j = 0; j < brdInfo.x; j++) { - if (i == 0 || i == brdInfo.y - 1) - board[i][j] = '-'; - else if (j == 0 || j == brdInfo.x - 1) - board[i][j] = '|'; - else - board[i][j] = ' '; - } - } - - board[0][0] = '+'; - board[brdInfo.y - 1][0] = '+'; - board[0][brdInfo.x - 1] = '+'; - board[brdInfo.y - 1][brdInfo.x - 1] = '+'; + setBoardBorders(board); int points = 0; int gameSpeed = 0; diff --git a/src/snake/snake.c b/src/snake/snake.c index 97e04a5..20cbaab 100644 --- a/src/snake/snake.c +++ b/src/snake/snake.c @@ -2,6 +2,7 @@ #include #include #include "snake.h" +#include "../board/board.h" extern char SNAKE_VIS; extern boardInfo brdInfo; @@ -107,6 +108,23 @@ void addSnakePart(char board[][brdInfo.x], snakePart* head) { exit(1); } + /* + Untested fix to a bug where the new part + would replace a part of the board border. + */ + if (newTail->x > plBrdInfo.xe) { + newTail->x = plBrdInfo.xs; + } else if (newTail->x < plBrdInfo.xs) { + newTail->x = plBrdInfo.xe; + } + + if (newTail->y > plBrdInfo.ye) { + newTail->y = plBrdInfo.ys; + } else if (newTail->y < plBrdInfo.ys) { + newTail->y = plBrdInfo.ye; + } + // bugfix end + newTail->next = NULL; tail->next = newTail; diff --git a/src/utils/utils.c b/src/utils/utils.c index afe50ae..3f065d4 100644 --- a/src/utils/utils.c +++ b/src/utils/utils.c @@ -39,6 +39,24 @@ void sleep_ms(const int ms) { usleep(ms * 1000); } +void setBoardBorders(char board[][brdInfo.x]) { + for (int i = 0; i < brdInfo.y; i++) { + for (int j = 0; j < brdInfo.x; j++) { + if (i == 0 || i == brdInfo.y - 1) + board[i][j] = '-'; + else if (j == 0 || j == brdInfo.x - 1) + board[i][j] = '|'; + else + board[i][j] = ' '; + } + } + + board[0][0] = '+'; + board[brdInfo.y - 1][0] = '+'; + board[0][brdInfo.x - 1] = '+'; + board[brdInfo.y - 1][brdInfo.x - 1] = '+'; +} + void printBoard(char board[][brdInfo.x]) { for (int i = 0; i < brdInfo.y; i++) { for (int j = 0; j < brdInfo.x; j++) { diff --git a/src/utils/utils.h b/src/utils/utils.h index 6586937..9c9ce37 100644 --- a/src/utils/utils.h +++ b/src/utils/utils.h @@ -10,6 +10,7 @@ int randomInt(const int start, const int end, const unsigned int seed); int randomX(const clock_t initClock); int randomY(const clock_t initClock); void sleep_ms(const int ms); +void setBoardBorders(char board[][brdInfo.x]); void printBoard(char board[][brdInfo.x]); #endif // UTILS_H_