From a6d815eff457cdc779932b2a53d6ad518ae8c1bc Mon Sep 17 00:00:00 2001 From: Preston Pan Date: Mon, 6 Feb 2023 13:43:46 -0800 Subject: parse more flags --- snake.c | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/snake.c b/snake.c index e87660e..a46e0eb 100644 --- a/snake.c +++ b/snake.c @@ -15,10 +15,10 @@ /*** GLOBAL VARIABLES ***/ volatile sig_atomic_t intCtrlC = 0; /* flag for ctrl-c interrupt */ +int speed = 1; int score = 0; int boardSize = 15; int updateInterval = 300000000L; - vectorp_t snakePositions; vector_t foodPos; vector_t lastMoveDir; @@ -33,18 +33,41 @@ void interrupt_handler(int sig) { int main(int argc, char **argv) { /* parsing arguments */ - if(argc > 1) { - if(strcmp("--version", argv[1]) == 0) { + char *last_flag; + int was_flag = 0; + for (int i = 1; i < argc; i ++) { + if(strcmp("--version", argv[i]) == 0) { printf("snake3, version 1.0\n"); printf("Copyright 2023 Kai Stevenson\n"); printf("This software was licensed under the MIT license;\n"); printf("for more information, see the license file.\n"); return 0; } - else if(strcmp("--help", argv[1]) == 0) { + else if(strcmp("--help", argv[i]) == 0) { printf("usage: snake3 [--version] [--help]\n"); return 0; } + else if (strcmp("--size", argv[i]) == 0 || strcmp("--speed", argv[i]) == 0) { + last_flag = argv[i]; + was_flag = 1; + } + else if (was_flag) { + if (strcmp("--size", last_flag) == 0) { + boardSize = atoi(argv[i]); + if (boardSize < 3) { + fprintf(stderr, "%sboard size too small or argument invalid, please try again.%s\n", RED, COLOR_RESET); + exit(1); + } + } + else if (strcmp("speed", last_flag) == 0) { + speed = atoi(argv[i]); + if (speed <= 0) { + fprintf(stderr, "%sspeed level must be greater than zero and integer. Please try again.%s\n", RED, COLOR_RESET); + exit(1); + } + } + was_flag = 0; + } else { printf("usage: snake3 [--version] [--help]\n"); return 1; -- cgit v1.3.1