diff --git a/Makefile b/Makefile index e93e1de..48a69b6 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,6 @@ -OUT = game -CFLAGS = -LDFLAGS = +include config.mk + INCLUDE = -Iinclude -CC = cc -LD = ld RM = rm -f SRCDIR = src OBJDIR = obj diff --git a/config.mk b/config.mk new file mode 100644 index 0000000..eff6dc2 --- /dev/null +++ b/config.mk @@ -0,0 +1,4 @@ +CC = cc +CFLAGS = +LDFLAGS = +OUT = game diff --git a/configure b/configure new file mode 100755 index 0000000..0843f06 --- /dev/null +++ b/configure @@ -0,0 +1,42 @@ +#!/bin/sh + +if [[ "$*" == *"--help"* ]] || [[ "$*" == *"-h"* ]] +then + echo "Use environment variables to pass values: + CC - compiler (default: cc) + CFLAGS - flags for compiler + LDFLAGS - flags for linker + OUT - out file (default: game + SIZE - size of game field + DEFX - start x + DEFY - start y" + exit 1 +fi + +CC=${CC:-cc} +CFLAGS=${CFLAGS:-} +LDFLAGS=${LDFLAGS:-} +OUT=${OUT:-game} +SIZE=${SIZE:-10} +DEFX=${DEFX:-0} +DEFY=${DEFY:-0} + +echo "Makefile configuration:" +echo "Compiler: $CC" +echo "CFLAGS: $CFLAGS" +echo "LDFLAGS: $LDFLAGS" +echo "Out file: $OUT" +echo +echo "Code configuration:" +echo "Size: $SIZE" +echo "Start x: $DEFX" +echo "Start y: $DEFY" + +echo "CC = $CC +CFLAGS = $CFLAGS +LDFLAGS = $LDFLAGS +OUT = $OUT" > config.mk + +echo "#define SIZE $SIZE +#define DEFX $DEFX +#define DEFY $DEFY" > include/config.h diff --git a/include/config.h b/include/config.h new file mode 100644 index 0000000..061c7be --- /dev/null +++ b/include/config.h @@ -0,0 +1,3 @@ +#define SIZE 10 +#define DEFX 0 +#define DEFY 0 diff --git a/src/main.c b/src/main.c index 570ad51..c24827c 100644 --- a/src/main.c +++ b/src/main.c @@ -8,6 +8,7 @@ #include "screen.h" #include "player.h" #include "food.h" +#include "config.h" void drawPlayer(Player *player, Screen *screen) { @@ -21,7 +22,7 @@ Food generateFood(Player *player) Food food; do { - food = (Food){random() % 10, random() % 10}; + food = (Food){random() % SIZE, random() % SIZE}; } while (playerCheckFoodCollision(player, food)); return food; } @@ -34,8 +35,8 @@ void resetCoordinates(void) int main(int argc, char **argv) { srandom(time(NULL)); - Player *player = playerCreate(DOWN, 0, 0, 0); - Screen *screen = screenCreate(10, 10, ' '); + Player *player = playerCreate(DOWN, DEFX, DEFY, 0); + Screen *screen = screenCreate(SIZE, SIZE, ' '); PlayerNode *node; thrd_t input_thread; int i; @@ -72,7 +73,7 @@ int main(int argc, char **argv) } head_x = player->head->x; head_y = player->head->y; - if (head_x >= 10 || head_x < 0 || head_y >= 10 || head_y < 0) + if (head_x >= SIZE || head_x < 0 || head_y >= SIZE || head_y < 0) { *running = false; break; @@ -83,7 +84,7 @@ int main(int argc, char **argv) *screenGetPoint(screen, food.x, food.y) = '@'; resetCoordinates(); screenShow(screen); - for (i = 0; i < 20; ++i) putchar('-'); + for (i = 0; i < SIZE*2; ++i) putchar('-'); printf("\nScore: %d\n", player->score); thrd_sleep(&(struct timespec){.tv_sec=1}, NULL);