summaryrefslogtreecommitdiff
path: root/snake.c
diff options
context:
space:
mode:
authorPreston Pan <preston@nullring.xyz>2023-02-06 13:43:46 -0800
committerPreston Pan <preston@nullring.xyz>2023-02-06 13:43:46 -0800
commita6d815eff457cdc779932b2a53d6ad518ae8c1bc (patch)
tree6e3e9c3659ef28d4eb6f705a96d63d8de2dac4f4 /snake.c
parent5f06a62aff1499ed0caf68ff7e551c5c02dded61 (diff)
parse more flags
Diffstat (limited to 'snake.c')
-rw-r--r--snake.c31
1 files 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;