diff options
| author | Preston Pan <preston@nullring.xyz> | 2023-02-06 13:43:46 -0800 |
|---|---|---|
| committer | Preston Pan <preston@nullring.xyz> | 2023-02-06 13:43:46 -0800 |
| commit | a6d815eff457cdc779932b2a53d6ad518ae8c1bc (patch) | |
| tree | 6e3e9c3659ef28d4eb6f705a96d63d8de2dac4f4 | |
| parent | 5f06a62aff1499ed0caf68ff7e551c5c02dded61 (diff) | |
parse more flags
| -rw-r--r-- | snake.c | 31 |
1 files changed, 27 insertions, 4 deletions
@@ -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; |
