From 42fe495bb67854732ec98e4a82cd80c7252943b7 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Sun, 21 Jan 2024 12:21:17 +0100 Subject: [PATCH 001/375] Snake rough structure --- src/main/c/Snake/snake_start.c | 28 ++++++++++++++++++++++++++++ src/main/c/Snake/snake_start.h | 0 src/main/c/main.c | 5 +++-- 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 src/main/c/Snake/snake_start.c create mode 100644 src/main/c/Snake/snake_start.h diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c new file mode 100644 index 0000000..186f773 --- /dev/null +++ b/src/main/c/Snake/snake_start.c @@ -0,0 +1,28 @@ +#include + + +#define HEIGHT 16 +#define WIDTH 16 +#define AREA HEIGHT * WIDTH + + +typedef struct +{ + char direction; + char segments[AREA]; +}Snake; + + +void main_menu(); + + +void snake_start(){ + system("clear"); + printf("Playing Snake"); + getchar(); + main_menu(); +} + +void main_menu(){ + +} \ No newline at end of file diff --git a/src/main/c/Snake/snake_start.h b/src/main/c/Snake/snake_start.h new file mode 100644 index 0000000..e69de29 diff --git a/src/main/c/main.c b/src/main/c/main.c index eaf0b17..27cfcae 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -3,6 +3,7 @@ #include #include "Template/game100.h" +#include "Snake/snake_start.h" int main(){ bool running = true; @@ -13,7 +14,7 @@ int main(){ system("clear"); printf("Waehlen Sie eine Option:\n"); - printf("\t1.Spiel1 starten\n"); + printf("\t1.Snake starten\n"); printf("\t2.Spiel2 starten\n"); printf("\t3.Spiel3 starten\n"); printf("\t4.Spiel4 starten\n"); @@ -25,7 +26,7 @@ int main(){ switch (option){ case 1: - //start_game1(); + snake_start(); break; case 2: //start_game2(); From 37820a27b28cef00a97f02420205cda31c8ccda6 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Sun, 21 Jan 2024 13:03:36 +0100 Subject: [PATCH 002/375] Initializing Game --- src/main/c/Snake/snake_start.c | 77 ++++++++++++++++++++++++++++++---- 1 file changed, 69 insertions(+), 8 deletions(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 186f773..4e21045 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -1,28 +1,89 @@ #include +#include -#define HEIGHT 16 -#define WIDTH 16 +#define HEIGHT 15 +#define WIDTH 15 #define AREA HEIGHT * WIDTH - -typedef struct -{ - char direction; +typedef struct{ + signed char direction[2]; + char length; char segments[AREA]; }Snake; void main_menu(); +void game(); +Snake initialize_game(); +void draw(Snake *snake); void snake_start(){ system("clear"); - printf("Playing Snake"); - getchar(); main_menu(); } void main_menu(){ + bool running = true; + while (running){ + int option = 0; + + system("clear"); + printf("Waehlen Sie eine Option:\n"); + printf("\t1.Start\n"); + printf("\t2.Exit\n"); + + scanf("%d", &option); + getchar(); + + system("clear"); + + switch (option){ + case 1: + game(); + break; + case 2: + running = false; + break; + + default: + break; + } + } +} + +void game(){ + Snake snake = initialize_game(); + bool running = true; + while (running) + { + draw(&snake); + } + +} + +Snake initialize_game(){ + Snake snake = {{0, 1}, 3}; + for(int i = 0; i < AREA; i++){ + snake.segments[i] = 0; + } + snake.segments[0] = 8 + 16 * 8; + snake.segments[1] = 7 + 16 * 8; + snake.segments[2] = 6 + 16 * 8; + return snake; +} + +void draw(Snake *snake){ + printf("+"); + for(int i = 0; i < WIDTH; i++){printf("-");} + printf("+\n"); + for(int i = 0; i < HEIGHT; i++){ + for(int j = 0; j < WIDTH; j++){ + } + } + printf("+"); + for(int i = 0; i < WIDTH; i++){printf("_");} + printf("\n"); } \ No newline at end of file From 189eb9570481baba1b7013139167647bc854634d Mon Sep 17 00:00:00 2001 From: David Moeller Date: Sun, 21 Jan 2024 13:22:57 +0100 Subject: [PATCH 003/375] draw Funktion --- src/main/c/Snake/snake_start.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 4e21045..57d332f 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -9,7 +9,7 @@ typedef struct{ signed char direction[2]; char length; - char segments[AREA]; + unsigned char segments[AREA]; }Snake; @@ -58,9 +58,11 @@ void game(){ bool running = true; while (running) { + system("clear"); draw(&snake); + running = false; } - + getchar(); } Snake initialize_game(){ @@ -78,12 +80,27 @@ void draw(Snake *snake){ printf("+"); for(int i = 0; i < WIDTH; i++){printf("-");} printf("+\n"); - for(int i = 0; i < HEIGHT; i++){ - for(int j = 0; j < WIDTH; j++){ - + for(int i = 1; i <= HEIGHT; i++){ + printf("|"); + for(int j = 1; j <= WIDTH; j++){ + //printf("%d:", i * 16 + j); + for(int pos = 0; pos < snake->length; pos++){ + //printf(" %d", snake->segments[pos]); + if(i * 16 + j == snake->segments[pos]){ + if(pos == 0){ + printf("0"); + }else{ + printf("O"); + } + break; + }else if(pos == snake->length - 1){ + printf(" "); + } + } } + printf("|\n"); } printf("+"); - for(int i = 0; i < WIDTH; i++){printf("_");} - printf("\n"); + for(int i = 0; i < WIDTH; i++){printf("-");} + printf("+\n"); } \ No newline at end of file From d1418a1344a3cb955d9a4bd7922e666b65ee7b92 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Sun, 21 Jan 2024 13:33:27 +0100 Subject: [PATCH 004/375] refactoring: drawing snake --- src/main/c/Snake/snake_start.c | 29 +++++++++++++++-------------- src/main/c/Snake/snake_start.h | 6 ++++++ 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 57d332f..efcd08b 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -17,6 +17,7 @@ void main_menu(); void game(); Snake initialize_game(); void draw(Snake *snake); +int part_of_snake(Snake *snake, unsigned char tile); void snake_start(){ @@ -83,24 +84,24 @@ void draw(Snake *snake){ for(int i = 1; i <= HEIGHT; i++){ printf("|"); for(int j = 1; j <= WIDTH; j++){ - //printf("%d:", i * 16 + j); - for(int pos = 0; pos < snake->length; pos++){ - //printf(" %d", snake->segments[pos]); - if(i * 16 + j == snake->segments[pos]){ - if(pos == 0){ - printf("0"); - }else{ - printf("O"); - } - break; - }else if(pos == snake->length - 1){ - printf(" "); - } - } + int index = part_of_snake(snake, i * 16 + j); + if(index == 0){printf("0");} + else if(index > 0){printf("O");} + else{printf(" ");} } printf("|\n"); } printf("+"); for(int i = 0; i < WIDTH; i++){printf("-");} printf("+\n"); +} + +//returns index of segments which is identical to tile; -1 if not found +int part_of_snake(Snake *snake, unsigned char tile){ + for(int i = 0; i < snake->length; i++){ + if(snake->segments[i] == tile){ + return i; + } + } + return -1; } \ No newline at end of file diff --git a/src/main/c/Snake/snake_start.h b/src/main/c/Snake/snake_start.h index e69de29..423f324 100644 --- a/src/main/c/Snake/snake_start.h +++ b/src/main/c/Snake/snake_start.h @@ -0,0 +1,6 @@ +#ifndef SNAKE_START_H +#define SNAKE_START_H + +void snake_start(); + +#endif // SNAKE_START_H \ No newline at end of file From d285bcc4135350edbcaa31a3674fef23e04ce4f3 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Sun, 21 Jan 2024 13:48:58 +0100 Subject: [PATCH 005/375] Test part_of_snake --- src/main/c/Snake/snake_start.c | 18 ++++------------ src/main/c/Snake/snake_start.h | 14 ++++++++++++ test/Snake/test_part_of_snake.c | 38 +++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 14 deletions(-) create mode 100644 test/Snake/test_part_of_snake.c diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index efcd08b..86f0204 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -1,21 +1,11 @@ #include #include - - -#define HEIGHT 15 -#define WIDTH 15 -#define AREA HEIGHT * WIDTH - -typedef struct{ - signed char direction[2]; - char length; - unsigned char segments[AREA]; -}Snake; +#include "snake_start.h" void main_menu(); void game(); -Snake initialize_game(); +Snake initialize_snake(); void draw(Snake *snake); int part_of_snake(Snake *snake, unsigned char tile); @@ -55,7 +45,7 @@ void main_menu(){ } void game(){ - Snake snake = initialize_game(); + Snake snake = initialize_snake(); bool running = true; while (running) { @@ -66,7 +56,7 @@ void game(){ getchar(); } -Snake initialize_game(){ +Snake initialize_snake(){ Snake snake = {{0, 1}, 3}; for(int i = 0; i < AREA; i++){ snake.segments[i] = 0; diff --git a/src/main/c/Snake/snake_start.h b/src/main/c/Snake/snake_start.h index 423f324..87a4e1c 100644 --- a/src/main/c/Snake/snake_start.h +++ b/src/main/c/Snake/snake_start.h @@ -1,6 +1,20 @@ #ifndef SNAKE_START_H #define SNAKE_START_H +#define HEIGHT 15 +#define WIDTH 15 +#define AREA HEIGHT * WIDTH + +typedef struct{ + signed char direction[2]; + char length; + unsigned char segments[AREA]; +}Snake; + + void snake_start(); +Snake initialize_snake(); +int part_of_snake(Snake *snake, unsigned char tile); + #endif // SNAKE_START_H \ No newline at end of file diff --git a/test/Snake/test_part_of_snake.c b/test/Snake/test_part_of_snake.c new file mode 100644 index 0000000..5dfad8b --- /dev/null +++ b/test/Snake/test_part_of_snake.c @@ -0,0 +1,38 @@ +#ifdef TEST +#include "unity.h" +#include "../../src/main/c/Snake/snake_start.h" + + +void setUp(void){ + //Wenn Funktion Vorraussetzungen braucht +} +void tearDown(void){ +} + + +void test_find_head(void){ + /* arrange */ + int result; + Snake snake = initialize_snake(); + + /* act */ + result = part_of_snake(&snake, 8 * 16 + 8); + + /* assert */ + TEST_ASSERT_EQUAL_INT(0, result);//head is at 8/8 +} + + +void test_get_correct_index(void){ + /* arrange */ + int result; + Snake snake = initialize_snake(); + + /* act */ + result = part_of_snake(&snake, 8 * 16 + 6); + + /* assert */ + TEST_ASSERT_EQUAL_INT(2, result);//2. part ist at 6/8 +} + +#endif // TEST \ No newline at end of file From af57eab9d66875554fdf4459f344d3e653efcdb3 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Tue, 23 Jan 2024 12:53:46 +0100 Subject: [PATCH 006/375] added get_Chara --- src/main/c/Snake/get_character.c | 59 ++++++++++++++++++++++++++++++++ src/main/c/Snake/get_character.h | 6 ++++ src/main/c/Snake/snake_start.c | 54 +++++++++++++++++++++++++++++ test/Snake/test_part_of_snake.c | 13 +++++++ 4 files changed, 132 insertions(+) create mode 100644 src/main/c/Snake/get_character.c create mode 100644 src/main/c/Snake/get_character.h diff --git a/src/main/c/Snake/get_character.c b/src/main/c/Snake/get_character.c new file mode 100644 index 0000000..a800c01 --- /dev/null +++ b/src/main/c/Snake/get_character.c @@ -0,0 +1,59 @@ +#include +#include +#include +#include +#include +#include +#include + +struct termios orig_termios; + +void reset_terminal_mode(){ + tcsetattr(0, TCSANOW, &orig_termios); +} + +void set_conio_terminal_mode(){ + struct termios new_termios; + + /* take two copies - one for now, one for later */ + tcgetattr(0, &orig_termios); + memcpy(&new_termios, &orig_termios, sizeof(new_termios)); + + /* register cleanup handler, and set the new terminal mode */ + atexit(reset_terminal_mode); + cfmakeraw(&new_termios); + tcsetattr(0, TCSANOW, &new_termios); +} + +int kbhit(){ + struct timeval tv = { 0L, 0L }; + fd_set fds; + FD_ZERO(&fds); + FD_SET(0, &fds); + return select(1, &fds, NULL, NULL, &tv) > 0; +} + +int getch(){ + int r; + unsigned char c; + if ((r = read(0, &c, sizeof(c))) < 0) { + return r; + } else { + return c; + } +} + +char get_character(double limit){ + set_conio_terminal_mode(); + + clock_t t = clock(); + char c = 0; + + while ((double)(clock() - t) / CLOCKS_PER_SEC < limit){ + if(kbhit()){c = getch();} + } + + reset_terminal_mode(); + + return c; +} \ No newline at end of file diff --git a/src/main/c/Snake/get_character.h b/src/main/c/Snake/get_character.h new file mode 100644 index 0000000..a955266 --- /dev/null +++ b/src/main/c/Snake/get_character.h @@ -0,0 +1,6 @@ +#ifndef GET_CHARACTER_H +#define GET_CHARACTER_H + +char get_character(double limit); + +#endif // GET_CHARACTER_H \ No newline at end of file diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 86f0204..18d92e8 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -1,11 +1,18 @@ #include #include +#include +#include +#include #include "snake_start.h" +#include "get_character.h" +#define TIME_TURN 0.5; void main_menu(); void game(); Snake initialize_snake(); +int *get_next_move(double limit); +void move_snake(Snake *snake); void draw(Snake *snake); int part_of_snake(Snake *snake, unsigned char tile); @@ -47,13 +54,23 @@ void main_menu(){ void game(){ Snake snake = initialize_snake(); bool running = true; + clock_t t = clock(); + while (running) { system("clear"); + + t = clock() - t; + int *mv = get_next_move((double)t / CLOCKS_PER_SEC); + t = clock(); + + move_snake(&snake); draw(&snake); running = false; + } getchar(); + getchar(); } Snake initialize_snake(){ @@ -67,6 +84,43 @@ Snake initialize_snake(){ return snake; } +int *get_next_move(double limit){ + limit = TIME_TURN - limit; + int *ptr = (int*) malloc(2 * sizeof(int)); + clock_t t = clock(); + char c; + + c = get_character(limit); + + switch (c){ + case 'w': + case 'A': + printf("Hoch\n"); + break; + case 'a': + case 'D': + printf("Links\n"); + break; + case 's': + case 'B': + printf("Runter\n"); + break; + case 'd': + case 'C': + printf("Rechts\n"); + break; + + default: + break; + } + + return ptr; +} + +void move_snake(Snake *snake){ + +} + void draw(Snake *snake){ printf("+"); for(int i = 0; i < WIDTH; i++){printf("-");} diff --git a/test/Snake/test_part_of_snake.c b/test/Snake/test_part_of_snake.c index 5dfad8b..fcc45e9 100644 --- a/test/Snake/test_part_of_snake.c +++ b/test/Snake/test_part_of_snake.c @@ -35,4 +35,17 @@ void test_get_correct_index(void){ TEST_ASSERT_EQUAL_INT(2, result);//2. part ist at 6/8 } + +void test_snake_not_on_tile(void){ + /* arrange */ + int result; + Snake snake = initialize_snake(); + + /* act */ + result = part_of_snake(&snake, 6 * 16 + 6); + + /* assert */ + TEST_ASSERT_EQUAL_INT(-1, result);//-1 snake is not on 6/6 +} + #endif // TEST \ No newline at end of file From 1c7dfb82378e0d4d863bb7c4b30f511e871f53c1 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Tue, 23 Jan 2024 13:29:33 +0100 Subject: [PATCH 007/375] refactoring: get_next_move --- src/main/c/Snake/snake_start.c | 36 +++++++++++++++++---------------- test/Snake/test_part_of_snake.c | 1 + 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 18d92e8..e4c826b 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -5,13 +5,13 @@ #include #include "snake_start.h" #include "get_character.h" -#define TIME_TURN 0.5; +#define TIME_TURN 0.5 void main_menu(); void game(); Snake initialize_snake(); -int *get_next_move(double limit); +void get_next_move(double limit, Snake *snake); void move_snake(Snake *snake); void draw(Snake *snake); int part_of_snake(Snake *snake, unsigned char tile); @@ -56,16 +56,16 @@ void game(){ bool running = true; clock_t t = clock(); - while (running) - { + //while (running){ + for(int i = 0; i < 100; i++){ system("clear"); + draw(&snake); t = clock() - t; - int *mv = get_next_move((double)t / CLOCKS_PER_SEC); + get_next_move(TIME_TURN - (double)t / CLOCKS_PER_SEC, &snake); t = clock(); - move_snake(&snake); - draw(&snake); + running = false; } @@ -81,13 +81,13 @@ Snake initialize_snake(){ snake.segments[0] = 8 + 16 * 8; snake.segments[1] = 7 + 16 * 8; snake.segments[2] = 6 + 16 * 8; + + snake.direction[0] = 1; + snake.direction[1] = 0; return snake; } -int *get_next_move(double limit){ - limit = TIME_TURN - limit; - int *ptr = (int*) malloc(2 * sizeof(int)); - clock_t t = clock(); +void get_next_move(double limit, Snake *snake){ char c; c = get_character(limit); @@ -95,26 +95,28 @@ int *get_next_move(double limit){ switch (c){ case 'w': case 'A': - printf("Hoch\n"); + snake->direction[0] = 0; + snake->direction[1] = -1; break; case 'a': case 'D': - printf("Links\n"); + snake->direction[0] = -1; + snake->direction[1] = 0; break; case 's': case 'B': - printf("Runter\n"); + snake->direction[0] = 0; + snake->direction[1] = 1; break; case 'd': case 'C': - printf("Rechts\n"); + snake->direction[0] = 1; + snake->direction[1] = 0; break; default: break; } - - return ptr; } void move_snake(Snake *snake){ diff --git a/test/Snake/test_part_of_snake.c b/test/Snake/test_part_of_snake.c index fcc45e9..c349867 100644 --- a/test/Snake/test_part_of_snake.c +++ b/test/Snake/test_part_of_snake.c @@ -1,6 +1,7 @@ #ifdef TEST #include "unity.h" #include "../../src/main/c/Snake/snake_start.h" +#include "../../src/main/c/Snake/get_character.h" void setUp(void){ From 60076577cc7913fcc36b69942b530b1f9473fd78 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Tue, 23 Jan 2024 13:47:17 +0100 Subject: [PATCH 008/375] moving snake --- src/main/c/Snake/snake_start.c | 25 +++++++++++-------------- 1 file changed, 11 insertions(+), 14 deletions(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index e4c826b..23418cf 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -11,7 +11,7 @@ void main_menu(); void game(); Snake initialize_snake(); -void get_next_move(double limit, Snake *snake); +void get_next_move(double limit, Snake *snake, bool *running); void move_snake(Snake *snake); void draw(Snake *snake); int part_of_snake(Snake *snake, unsigned char tile); @@ -56,25 +56,19 @@ void game(){ bool running = true; clock_t t = clock(); - //while (running){ - for(int i = 0; i < 100; i++){ + while (running){ system("clear"); draw(&snake); t = clock() - t; - get_next_move(TIME_TURN - (double)t / CLOCKS_PER_SEC, &snake); + get_next_move(TIME_TURN - (double)t / CLOCKS_PER_SEC, &snake, &running); t = clock(); move_snake(&snake); - - running = false; - } - getchar(); - getchar(); } Snake initialize_snake(){ - Snake snake = {{0, 1}, 3}; + Snake snake = {{1, 0}, 3}; for(int i = 0; i < AREA; i++){ snake.segments[i] = 0; } @@ -82,12 +76,10 @@ Snake initialize_snake(){ snake.segments[1] = 7 + 16 * 8; snake.segments[2] = 6 + 16 * 8; - snake.direction[0] = 1; - snake.direction[1] = 0; return snake; } -void get_next_move(double limit, Snake *snake){ +void get_next_move(double limit, Snake *snake, bool *running){ char c; c = get_character(limit); @@ -113,6 +105,8 @@ void get_next_move(double limit, Snake *snake){ snake->direction[0] = 1; snake->direction[1] = 0; break; + case 'q': + *running = false; default: break; @@ -120,7 +114,10 @@ void get_next_move(double limit, Snake *snake){ } void move_snake(Snake *snake){ - + for(int i = snake->length - 1; i > 0; i--){ + snake->segments[i] = snake->segments[i - 1]; + } + snake->segments[0] += snake->direction[0] + snake->direction[1] * 16; } void draw(Snake *snake){ From d96d6594cdf5029867c8754f8dfe3b301912700f Mon Sep 17 00:00:00 2001 From: David Moeller Date: Tue, 23 Jan 2024 14:01:43 +0100 Subject: [PATCH 009/375] killing snake if collision --- src/main/c/Snake/snake_start.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 23418cf..ce54919 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -15,6 +15,7 @@ void get_next_move(double limit, Snake *snake, bool *running); void move_snake(Snake *snake); void draw(Snake *snake); int part_of_snake(Snake *snake, unsigned char tile); +bool check_if_dead(Snake *snake); void snake_start(){ @@ -59,7 +60,11 @@ void game(){ while (running){ system("clear"); draw(&snake); - + + if(check_if_dead(&snake)){ + break; + } + t = clock() - t; get_next_move(TIME_TURN - (double)t / CLOCKS_PER_SEC, &snake, &running); t = clock(); @@ -147,4 +152,21 @@ int part_of_snake(Snake *snake, unsigned char tile){ } } return -1; +} + +bool check_if_dead(Snake *snake){ + //Self + for(int i = 0; i < snake->length; i++){ + int part = part_of_snake(snake, snake->segments[i]); + if(part != -1 && part != i){ + return true; + } + } + + //Wall + if(snake->segments[0] % 16 == 0 || (snake->segments[0] / 16) % 16 == 0){ + return true; + } + + return false; } \ No newline at end of file From ca67976e794d7906d2d3721dd097f1b1e27a8d85 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Tue, 23 Jan 2024 14:49:21 +0100 Subject: [PATCH 010/375] Added fruit --- src/main/c/Snake/snake_start.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index ce54919..0584deb 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -13,9 +13,10 @@ void game(); Snake initialize_snake(); void get_next_move(double limit, Snake *snake, bool *running); void move_snake(Snake *snake); -void draw(Snake *snake); +void draw(Snake *snake, unsigned char fruit); int part_of_snake(Snake *snake, unsigned char tile); bool check_if_dead(Snake *snake); +unsigned char spawn_fruit(Snake *snake); void snake_start(){ @@ -56,10 +57,11 @@ void game(){ Snake snake = initialize_snake(); bool running = true; clock_t t = clock(); + unsigned char fruit = spawn_fruit(&snake); while (running){ system("clear"); - draw(&snake); + draw(&snake, fruit); if(check_if_dead(&snake)){ break; @@ -125,7 +127,8 @@ void move_snake(Snake *snake){ snake->segments[0] += snake->direction[0] + snake->direction[1] * 16; } -void draw(Snake *snake){ +void draw(Snake *snake, unsigned char fruit){ + printf("%d\n", fruit); printf("+"); for(int i = 0; i < WIDTH; i++){printf("-");} printf("+\n"); @@ -135,6 +138,7 @@ void draw(Snake *snake){ int index = part_of_snake(snake, i * 16 + j); if(index == 0){printf("0");} else if(index > 0){printf("O");} + else if(i * 16 + j == fruit){printf("X");} else{printf(" ");} } printf("|\n"); @@ -169,4 +173,14 @@ bool check_if_dead(Snake *snake){ } return false; +} + +unsigned char spawn_fruit(Snake *snake){ + srand(time(NULL)); + int r = 0; + while (part_of_snake(snake, r) != -1 || r % 16 == 0 || (r / 16) % 16 == 0){ + r = rand() % 256; + printf("%d\n", r); + } + return r; } \ No newline at end of file From bd65725af8c62621723d926b788e13e6d6e17951 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Tue, 23 Jan 2024 14:54:10 +0100 Subject: [PATCH 011/375] refactoring: check_if_dead --- src/main/c/Snake/snake_start.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 0584deb..a56e34c 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -150,7 +150,7 @@ void draw(Snake *snake, unsigned char fruit){ //returns index of segments which is identical to tile; -1 if not found int part_of_snake(Snake *snake, unsigned char tile){ - for(int i = 0; i < snake->length; i++){ + for(int i = snake->length - 1; i >= 0; i--){ if(snake->segments[i] == tile){ return i; } @@ -160,11 +160,8 @@ int part_of_snake(Snake *snake, unsigned char tile){ bool check_if_dead(Snake *snake){ //Self - for(int i = 0; i < snake->length; i++){ - int part = part_of_snake(snake, snake->segments[i]); - if(part != -1 && part != i){ - return true; - } + if(part_of_snake(snake, snake->segments[0]) > 0){ + return true; } //Wall From a6b6a633c6b7b72d3d071a5fd88c3866f76fc2c0 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Tue, 23 Jan 2024 15:23:39 +0000 Subject: [PATCH 012/375] Update team.md --- team.md | 1 + 1 file changed, 1 insertion(+) diff --git a/team.md b/team.md index bdce5f5..9054457 100644 --- a/team.md +++ b/team.md @@ -2,3 +2,4 @@ - Julia Selig, fdai8040 - Ariana Ginju, fdai7775 - Saba Fazlali, fdai7875 +- Nina Gärtner, fdai7729 From b9cc942a3b82de120c548bb980f1cb4abd5f01fe Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Wed, 24 Jan 2024 12:36:32 +0000 Subject: [PATCH 013/375] Add new directory --- src/main/c/GameTic_Tac_Toe/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/c/GameTic_Tac_Toe/.gitkeep diff --git a/src/main/c/GameTic_Tac_Toe/.gitkeep b/src/main/c/GameTic_Tac_Toe/.gitkeep new file mode 100644 index 0000000..e69de29 From 239329dcb0d1f96212add1daf769dda5ac7f1fe6 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Wed, 24 Jan 2024 12:44:46 +0000 Subject: [PATCH 014/375] Add new file --- src/main/c/GameTic_Tac_Toe/temp | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/main/c/GameTic_Tac_Toe/temp diff --git a/src/main/c/GameTic_Tac_Toe/temp b/src/main/c/GameTic_Tac_Toe/temp new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/main/c/GameTic_Tac_Toe/temp @@ -0,0 +1 @@ + From ebfdb2133a457dcc45f56d980572263c0ca30a12 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Wed, 24 Jan 2024 12:45:27 +0000 Subject: [PATCH 015/375] Add new file --- src/main/c/GameTic_Tac_Toe/temp | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/main/c/GameTic_Tac_Toe/temp diff --git a/src/main/c/GameTic_Tac_Toe/temp b/src/main/c/GameTic_Tac_Toe/temp new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/main/c/GameTic_Tac_Toe/temp @@ -0,0 +1 @@ + From 376d864b3a65658c1f6c50b5e182cbb9d365cf7a Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Wed, 24 Jan 2024 13:04:28 +0000 Subject: [PATCH 016/375] Delete temp --- src/main/c/GameTic_Tac_Toe/temp | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/main/c/GameTic_Tac_Toe/temp diff --git a/src/main/c/GameTic_Tac_Toe/temp b/src/main/c/GameTic_Tac_Toe/temp deleted file mode 100644 index 8b13789..0000000 --- a/src/main/c/GameTic_Tac_Toe/temp +++ /dev/null @@ -1 +0,0 @@ - From b50761f3182096294c5a2ad328b0e5d25ac548fd Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Wed, 24 Jan 2024 14:21:33 +0100 Subject: [PATCH 017/375] added global board --- src/main/c/GameTic_Tac_Toe/game.c | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 src/main/c/GameTic_Tac_Toe/game.c diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c new file mode 100644 index 0000000..7d5c061 --- /dev/null +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -0,0 +1,6 @@ +#include + +char board[3][3] = {{'1', '2', '3'}, + {'4', '5', '6'}, + {'7', '8', '9'}}; +char currentPlayer = 'X'; From ce57e7533ce5a1f6485777f5d8004978086f9f4c Mon Sep 17 00:00:00 2001 From: David Moeller Date: Thu, 25 Jan 2024 10:00:07 +0100 Subject: [PATCH 018/375] Test self_collision --- src/main/c/Snake/get_character.c | 1 - test/Snake/test_collision.c | 24 ++++++++++++++++++++++++ test/Snake/test_part_of_snake.c | 7 ++----- 3 files changed, 26 insertions(+), 6 deletions(-) create mode 100644 test/Snake/test_collision.c diff --git a/src/main/c/Snake/get_character.c b/src/main/c/Snake/get_character.c index a800c01..9c180ef 100644 --- a/src/main/c/Snake/get_character.c +++ b/src/main/c/Snake/get_character.c @@ -3,7 +3,6 @@ #include #include #include -#include #include struct termios orig_termios; diff --git a/test/Snake/test_collision.c b/test/Snake/test_collision.c new file mode 100644 index 0000000..81d1a76 --- /dev/null +++ b/test/Snake/test_collision.c @@ -0,0 +1,24 @@ +#ifdef TEST +#include "unity.h" +#include +#include "../../src/main/c/Snake/snake_start.h" +#include "../../src/main/c/Snake/get_character.h" + + +void setUp(void){} +void tearDown(void){} + + +void test_self_collision(void){ + /* arrange */ + bool result; + Snake snake = {{1, 0}, 5, {6 + 16 * 6, 6 + 16 * 7, 7 + 16 * 7, 7 + 16 * 6, 6 + 16 * 6}}; + + /* act */ + result = check_if_dead(&snake); + + /* assert */ + TEST_ASSERT_TRUE(result);//head collides with body +} + +#endif // TEST \ No newline at end of file diff --git a/test/Snake/test_part_of_snake.c b/test/Snake/test_part_of_snake.c index c349867..95ce3bd 100644 --- a/test/Snake/test_part_of_snake.c +++ b/test/Snake/test_part_of_snake.c @@ -4,11 +4,8 @@ #include "../../src/main/c/Snake/get_character.h" -void setUp(void){ - //Wenn Funktion Vorraussetzungen braucht -} -void tearDown(void){ -} +void setUp(void){} +void tearDown(void){} void test_find_head(void){ From 5e744b90792d9a25be9e8bd17d115710b3d63dce Mon Sep 17 00:00:00 2001 From: David Moeller Date: Thu, 25 Jan 2024 10:01:55 +0100 Subject: [PATCH 019/375] Test no_collision --- test/Snake/test_collision.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/Snake/test_collision.c b/test/Snake/test_collision.c index 81d1a76..d0edd61 100644 --- a/test/Snake/test_collision.c +++ b/test/Snake/test_collision.c @@ -21,4 +21,17 @@ void test_self_collision(void){ TEST_ASSERT_TRUE(result);//head collides with body } + +void test_no_collision(void){ + /* arrange */ + bool result; + Snake snake = initialize_snake(); + + /* act */ + result = check_if_dead(&snake); + + /* assert */ + TEST_ASSERT_FALSE(result);//head collides with body +} + #endif // TEST \ No newline at end of file From 819208c1e918231b110f60009eee50262b58889e Mon Sep 17 00:00:00 2001 From: David Moeller Date: Thu, 25 Jan 2024 10:04:07 +0100 Subject: [PATCH 020/375] Test wall_collision --- test/Snake/test_collision.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/Snake/test_collision.c b/test/Snake/test_collision.c index d0edd61..b70676d 100644 --- a/test/Snake/test_collision.c +++ b/test/Snake/test_collision.c @@ -34,4 +34,17 @@ void test_no_collision(void){ TEST_ASSERT_FALSE(result);//head collides with body } + +void test_wall_collision(void){ + /* arrange */ + bool result; + Snake snake = {{1, 0}, 4, {0 + 16 * 6, 1 + 16 * 6, 2 + 16 * 6, 3 + 16 * 6}}; + + /* act */ + result = check_if_dead(&snake); + + /* assert */ + TEST_ASSERT_TRUE(result);//head collides with body +} + #endif // TEST \ No newline at end of file From 46d38f2857e468fdf8dd9853ca2189323cab467b Mon Sep 17 00:00:00 2001 From: David Moeller Date: Thu, 25 Jan 2024 10:16:08 +0100 Subject: [PATCH 021/375] Snake gets longer when eating fruit --- src/main/c/Snake/snake_start.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index a56e34c..068eca7 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -5,7 +5,7 @@ #include #include "snake_start.h" #include "get_character.h" -#define TIME_TURN 0.5 +#define TIME_TURN 0.3 void main_menu(); @@ -17,6 +17,7 @@ void draw(Snake *snake, unsigned char fruit); int part_of_snake(Snake *snake, unsigned char tile); bool check_if_dead(Snake *snake); unsigned char spawn_fruit(Snake *snake); +unsigned char eating_fruit(Snake *snake); void snake_start(){ @@ -71,6 +72,7 @@ void game(){ get_next_move(TIME_TURN - (double)t / CLOCKS_PER_SEC, &snake, &running); t = clock(); move_snake(&snake); + if(part_of_snake(&snake, fruit) == 0){fruit = eating_fruit(&snake);} } } @@ -180,4 +182,9 @@ unsigned char spawn_fruit(Snake *snake){ printf("%d\n", r); } return r; +} + +unsigned char eating_fruit(Snake *snake){ + snake->length++; + return spawn_fruit(snake); } \ No newline at end of file From 9a3247bf684857c1cf33b4990a87e14897f62bd8 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Thu, 25 Jan 2024 10:22:33 +0100 Subject: [PATCH 022/375] refactoring: movement of snake --- src/main/c/Snake/snake_start.c | 16 ++++++---------- src/main/c/Snake/snake_start.h | 2 +- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 068eca7..70bc96e 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -77,7 +77,7 @@ void game(){ } Snake initialize_snake(){ - Snake snake = {{1, 0}, 3}; + Snake snake = {1, 3}; for(int i = 0; i < AREA; i++){ snake.segments[i] = 0; } @@ -96,23 +96,19 @@ void get_next_move(double limit, Snake *snake, bool *running){ switch (c){ case 'w': case 'A': - snake->direction[0] = 0; - snake->direction[1] = -1; + snake->direction = -16; break; case 'a': case 'D': - snake->direction[0] = -1; - snake->direction[1] = 0; + snake->direction = -1; break; case 's': case 'B': - snake->direction[0] = 0; - snake->direction[1] = 1; + snake->direction = 16; break; case 'd': case 'C': - snake->direction[0] = 1; - snake->direction[1] = 0; + snake->direction = 1; break; case 'q': *running = false; @@ -126,7 +122,7 @@ void move_snake(Snake *snake){ for(int i = snake->length - 1; i > 0; i--){ snake->segments[i] = snake->segments[i - 1]; } - snake->segments[0] += snake->direction[0] + snake->direction[1] * 16; + snake->segments[0] += snake->direction; } void draw(Snake *snake, unsigned char fruit){ diff --git a/src/main/c/Snake/snake_start.h b/src/main/c/Snake/snake_start.h index 87a4e1c..9240626 100644 --- a/src/main/c/Snake/snake_start.h +++ b/src/main/c/Snake/snake_start.h @@ -6,7 +6,7 @@ #define AREA HEIGHT * WIDTH typedef struct{ - signed char direction[2]; + signed char direction; char length; unsigned char segments[AREA]; }Snake; From 82360823017c7513101c9e85b4da0f04c034d83a Mon Sep 17 00:00:00 2001 From: David Moeller Date: Thu, 25 Jan 2024 10:44:08 +0100 Subject: [PATCH 023/375] Test moving right --- src/main/c/Snake/snake_start.c | 4 ++-- src/main/c/Snake/snake_start.h | 2 ++ test/Snake/test_collision.c | 4 ++-- test/Snake/test_moving_snake.c | 27 +++++++++++++++++++++++++++ 4 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 test/Snake/test_moving_snake.c diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 70bc96e..12fb3d5 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -7,7 +7,7 @@ #include "get_character.h" #define TIME_TURN 0.3 - +#pragma region Funktion_heads void main_menu(); void game(); Snake initialize_snake(); @@ -18,7 +18,7 @@ int part_of_snake(Snake *snake, unsigned char tile); bool check_if_dead(Snake *snake); unsigned char spawn_fruit(Snake *snake); unsigned char eating_fruit(Snake *snake); - +#pragma endregion void snake_start(){ system("clear"); diff --git a/src/main/c/Snake/snake_start.h b/src/main/c/Snake/snake_start.h index 9240626..1634146 100644 --- a/src/main/c/Snake/snake_start.h +++ b/src/main/c/Snake/snake_start.h @@ -15,6 +15,8 @@ typedef struct{ void snake_start(); Snake initialize_snake(); int part_of_snake(Snake *snake, unsigned char tile); +void move_snake(Snake *snake); +bool check_if_dead(Snake *snake); #endif // SNAKE_START_H \ No newline at end of file diff --git a/test/Snake/test_collision.c b/test/Snake/test_collision.c index b70676d..e5d5a63 100644 --- a/test/Snake/test_collision.c +++ b/test/Snake/test_collision.c @@ -12,7 +12,7 @@ void tearDown(void){} void test_self_collision(void){ /* arrange */ bool result; - Snake snake = {{1, 0}, 5, {6 + 16 * 6, 6 + 16 * 7, 7 + 16 * 7, 7 + 16 * 6, 6 + 16 * 6}}; + Snake snake = {1, 5, {6 + 16 * 6, 6 + 16 * 7, 7 + 16 * 7, 7 + 16 * 6, 6 + 16 * 6}}; /* act */ result = check_if_dead(&snake); @@ -38,7 +38,7 @@ void test_no_collision(void){ void test_wall_collision(void){ /* arrange */ bool result; - Snake snake = {{1, 0}, 4, {0 + 16 * 6, 1 + 16 * 6, 2 + 16 * 6, 3 + 16 * 6}}; + Snake snake = {-1, 4, {0 + 16 * 6, 1 + 16 * 6, 2 + 16 * 6, 3 + 16 * 6}}; /* act */ result = check_if_dead(&snake); diff --git a/test/Snake/test_moving_snake.c b/test/Snake/test_moving_snake.c new file mode 100644 index 0000000..b098f9e --- /dev/null +++ b/test/Snake/test_moving_snake.c @@ -0,0 +1,27 @@ +#ifdef TEST +#include "unity.h" +#include +#include +#include "../../src/main/c/Snake/snake_start.h" +#include "../../src/main/c/Snake/get_character.h" + + +void setUp(void){} +void tearDown(void){} + + +void test_moving_right(void){ + /* arrange */ + bool result; + Snake snake = {1, 3, {8 + 16 * 6, 7 + 16 * 6, 6 + 16 * 6}}; + Snake expected = {1, 3, {9 + 16 * 6, 8 + 16 * 6, 7 + 16 * 6}}; + + /* act */ + move_snake(&snake); + result = memcmp(&snake, &expected, sizeof(Snake)) == 0; + + /* assert */ + TEST_ASSERT_TRUE(result);//head collides with body +} + +#endif // TEST \ No newline at end of file From 1612d95af9c776e7c7844f69d998b09d730b051b Mon Sep 17 00:00:00 2001 From: David Moeller Date: Thu, 25 Jan 2024 10:47:13 +0100 Subject: [PATCH 024/375] Test moving down --- test/Snake/test_moving_snake.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/test/Snake/test_moving_snake.c b/test/Snake/test_moving_snake.c index b098f9e..6c400b8 100644 --- a/test/Snake/test_moving_snake.c +++ b/test/Snake/test_moving_snake.c @@ -21,7 +21,21 @@ void test_moving_right(void){ result = memcmp(&snake, &expected, sizeof(Snake)) == 0; /* assert */ - TEST_ASSERT_TRUE(result);//head collides with body + TEST_ASSERT_TRUE(result); +} + +void test_moving_down(void){ + /* arrange */ + bool result; + Snake snake = {16, 3, {8 + 16 * 6, 7 + 16 * 6, 6 + 16 * 6}}; + Snake expected = {16, 3, {8 + 16 * 7, 8 + 16 * 6, 7 + 16 * 6}}; + + /* act */ + move_snake(&snake); + result = memcmp(&snake, &expected, sizeof(Snake)) == 0; + + /* assert */ + TEST_ASSERT_TRUE(result); } #endif // TEST \ No newline at end of file From 890f363d88434969743bc3dc5c6d3f1e7bd848c4 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Thu, 25 Jan 2024 10:48:18 +0100 Subject: [PATCH 025/375] Test moving left --- test/Snake/test_moving_snake.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/Snake/test_moving_snake.c b/test/Snake/test_moving_snake.c index 6c400b8..3bd9b6a 100644 --- a/test/Snake/test_moving_snake.c +++ b/test/Snake/test_moving_snake.c @@ -38,4 +38,18 @@ void test_moving_down(void){ TEST_ASSERT_TRUE(result); } +void test_moving_left(void){ + /* arrange */ + bool result; + Snake snake = {-1, 3, {8 + 16 * 6, 7 + 16 * 6, 6 + 16 * 6}}; + Snake expected = {-1, 3, {7 + 16 * 6, 8 + 16 * 6, 7 + 16 * 6}}; + + /* act */ + move_snake(&snake); + result = memcmp(&snake, &expected, sizeof(Snake)) == 0; + + /* assert */ + TEST_ASSERT_TRUE(result); +} + #endif // TEST \ No newline at end of file From 0a40d39849709aad2c3089c0d218a1cd67bf0079 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Thu, 25 Jan 2024 10:49:00 +0100 Subject: [PATCH 026/375] Test moving up --- test/Snake/test_moving_snake.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/test/Snake/test_moving_snake.c b/test/Snake/test_moving_snake.c index 3bd9b6a..115d55f 100644 --- a/test/Snake/test_moving_snake.c +++ b/test/Snake/test_moving_snake.c @@ -52,4 +52,18 @@ void test_moving_left(void){ TEST_ASSERT_TRUE(result); } +void test_moving_up(void){ + /* arrange */ + bool result; + Snake snake = {-16, 3, {8 + 16 * 6, 7 + 16 * 6, 6 + 16 * 6}}; + Snake expected = {-16, 3, {8 + 16 * 5, 8 + 16 * 6, 7 + 16 * 6}}; + + /* act */ + move_snake(&snake); + result = memcmp(&snake, &expected, sizeof(Snake)) == 0; + + /* assert */ + TEST_ASSERT_TRUE(result); +} + #endif // TEST \ No newline at end of file From 3122822b72b2f0330e22e8482fea0a85f582cfa9 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Thu, 25 Jan 2024 10:55:57 +0100 Subject: [PATCH 027/375] refactoring: initializing snake --- src/main/c/Snake/snake_start.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 12fb3d5..68de781 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -6,6 +6,9 @@ #include "snake_start.h" #include "get_character.h" #define TIME_TURN 0.3 +#define START_LENGTH 3 +#define START_DIRECTION 1 +#define START_TILE 8 * 16 + 8 #pragma region Funktion_heads void main_menu(); @@ -63,11 +66,7 @@ void game(){ while (running){ system("clear"); draw(&snake, fruit); - - if(check_if_dead(&snake)){ - break; - } - + if(check_if_dead(&snake)){break;} t = clock() - t; get_next_move(TIME_TURN - (double)t / CLOCKS_PER_SEC, &snake, &running); t = clock(); @@ -77,14 +76,12 @@ void game(){ } Snake initialize_snake(){ - Snake snake = {1, 3}; - for(int i = 0; i < AREA; i++){ - snake.segments[i] = 0; + Snake snake; + snake.direction = START_DIRECTION; + snake.length = START_LENGTH; + for(int i = 0; i < START_LENGTH; i++){ + snake.segments[i] = START_TILE - START_DIRECTION * i; } - snake.segments[0] = 8 + 16 * 8; - snake.segments[1] = 7 + 16 * 8; - snake.segments[2] = 6 + 16 * 8; - return snake; } From 188575e4d2135b8b5be6a234225a1b78fdfbe7c2 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Thu, 25 Jan 2024 11:35:20 +0100 Subject: [PATCH 028/375] word selector added --- src/main/c/Hangman/word_selector.c | 37 ++++++++++++++++++++++++++++++ src/main/c/Hangman/word_selector.h | 16 +++++++++++++ src/main/c/main.c | 4 ++-- 3 files changed, 55 insertions(+), 2 deletions(-) create mode 100644 src/main/c/Hangman/word_selector.c create mode 100644 src/main/c/Hangman/word_selector.h diff --git a/src/main/c/Hangman/word_selector.c b/src/main/c/Hangman/word_selector.c new file mode 100644 index 0000000..0375253 --- /dev/null +++ b/src/main/c/Hangman/word_selector.c @@ -0,0 +1,37 @@ +// +// Created by Saba Fazlali on 22.01.24. +// + +#include "word_selector.h" + +const char wordsList[NUM_WORDS][MAX_WORD_LENGTH + 1] = { + "skill", + "world", + "difference", + "celebration", + "association", + "customer", + "mood", + "agreement", + "audience", + "professor", + "year", + "dealer", + "patience", + "initiative", + "pollution", + "awareness", + "problem", + "vehicle", + "death", + "cousin" +}; + +const char* selectRandomWord() { + + // pick a random number and assign it to index of wordsList array + srand((unsigned int)time(NULL)); + int randomIndex = rand() % NUM_WORDS; + + return wordsList[randomIndex]; +} \ No newline at end of file diff --git a/src/main/c/Hangman/word_selector.h b/src/main/c/Hangman/word_selector.h new file mode 100644 index 0000000..9d5dd39 --- /dev/null +++ b/src/main/c/Hangman/word_selector.h @@ -0,0 +1,16 @@ +// +// Created by Saba Fazlali on 24.01.24. +// + +#ifndef PMUW_PROJEKT_NOTEBINDER_WORD_SELECTOR_H +#define PMUW_PROJEKT_NOTEBINDER_WORD_SELECTOR_H + +#include +#include +#include +#include + +#define MAX_WORD_LENGTH 20 +#define NUM_WORDS 20 + +#endif //PMUW_PROJEKT_NOTEBINDER_WORD_SELECTOR_H diff --git a/src/main/c/main.c b/src/main/c/main.c index eaf0b17..90f28f1 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -2,7 +2,7 @@ #include #include -#include "Template/game100.h" +//#include "Template/game100.h" int main(){ bool running = true; @@ -37,7 +37,7 @@ int main(){ //start_game4(); break; case 100: - start_game100(); + //start_game100(); break; case 6: system("clear"); From 88c3ec58f91a29a683bc324f4c5acb9f20b1b753 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Thu, 25 Jan 2024 11:37:07 +0100 Subject: [PATCH 029/375] word selector added --- .idea/.gitignore | 8 + .idea/misc.xml | 4 + .idea/modules.xml | 8 + .idea/pmuw_projekt_notebinder.iml | 2 + .idea/vcs.xml | 6 + CMakeLists.txt | 16 + .../.cmake/api/v1/query/cache-v2 | 0 .../.cmake/api/v1/query/cmakeFiles-v1 | 0 .../.cmake/api/v1/query/codemodel-v2 | 0 .../.cmake/api/v1/query/toolchains-v1 | 0 .../reply/cache-v2-797367ee73be0946ea69.json | 1051 +++++++++++++++++ .../cmakeFiles-v1-9ac3996b5bf98606de02.json | 117 ++ .../codemodel-v2-c6ffc0b664e1b12e7dfc.json | 60 + ...irectory-.-Debug-f5ebdc15457944623624.json | 14 + .../reply/index-2024-01-24T18-53-34-0975.json | 108 ++ ...notebinder-Debug-439d4177ec694957d283.json | 159 +++ .../toolchains-v1-e0f424cc4383644d699f.json | 37 + cmake-build-debug/.ninja_deps | Bin 0 -> 11160 bytes cmake-build-debug/.ninja_log | 10 + cmake-build-debug/CMakeCache.txt | 328 +++++ .../CMakeFiles/3.26.4/CMakeCCompiler.cmake | 72 ++ .../3.26.4/CMakeDetermineCompilerABI_C.bin | Bin 0 -> 17000 bytes .../CMakeFiles/3.26.4/CMakeSystem.cmake | 15 + .../3.26.4/CompilerIdC/CMakeCCompilerId.c | 866 ++++++++++++++ .../3.26.4/CompilerIdC/CMakeCCompilerId.o | Bin 0 -> 1712 bytes .../CMakeFiles/CMakeConfigureLog.yaml | 192 +++ .../CMakeFiles/TargetDirectories.txt | 3 + .../CMakeFiles/clion-Debug-log.txt | 10 + .../CMakeFiles/clion-environment.txt | 3 + .../CMakeFiles/cmake.check_cache | 1 + .../src/main/c/Hangman/word_selector.c.o | Bin 0 -> 3072 bytes .../src/main/c/Template/game100.c.o | Bin 0 -> 2688 bytes .../src/main/c/main.c.o | Bin 0 -> 3816 bytes .../test/Hangman/word_selector_test.c.o | Bin 0 -> 3840 bytes cmake-build-debug/CMakeFiles/rules.ninja | 64 + .../Testing/Temporary/LastTest.log | 3 + cmake-build-debug/build.ninja | 150 +++ cmake-build-debug/cmake_install.cmake | 49 + cmake-build-debug/pmuw_projekt_notebinder | Bin 0 -> 34520 bytes 39 files changed, 3356 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/pmuw_projekt_notebinder.iml create mode 100644 .idea/vcs.xml create mode 100644 CMakeLists.txt create mode 100644 cmake-build-debug/.cmake/api/v1/query/cache-v2 create mode 100644 cmake-build-debug/.cmake/api/v1/query/cmakeFiles-v1 create mode 100644 cmake-build-debug/.cmake/api/v1/query/codemodel-v2 create mode 100644 cmake-build-debug/.cmake/api/v1/query/toolchains-v1 create mode 100644 cmake-build-debug/.cmake/api/v1/reply/cache-v2-797367ee73be0946ea69.json create mode 100644 cmake-build-debug/.cmake/api/v1/reply/cmakeFiles-v1-9ac3996b5bf98606de02.json create mode 100644 cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-c6ffc0b664e1b12e7dfc.json create mode 100644 cmake-build-debug/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json create mode 100644 cmake-build-debug/.cmake/api/v1/reply/index-2024-01-24T18-53-34-0975.json create mode 100644 cmake-build-debug/.cmake/api/v1/reply/target-pmuw_projekt_notebinder-Debug-439d4177ec694957d283.json create mode 100644 cmake-build-debug/.cmake/api/v1/reply/toolchains-v1-e0f424cc4383644d699f.json create mode 100644 cmake-build-debug/.ninja_deps create mode 100644 cmake-build-debug/.ninja_log create mode 100644 cmake-build-debug/CMakeCache.txt create mode 100644 cmake-build-debug/CMakeFiles/3.26.4/CMakeCCompiler.cmake create mode 100755 cmake-build-debug/CMakeFiles/3.26.4/CMakeDetermineCompilerABI_C.bin create mode 100644 cmake-build-debug/CMakeFiles/3.26.4/CMakeSystem.cmake create mode 100644 cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.c create mode 100644 cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.o create mode 100644 cmake-build-debug/CMakeFiles/CMakeConfigureLog.yaml create mode 100644 cmake-build-debug/CMakeFiles/TargetDirectories.txt create mode 100644 cmake-build-debug/CMakeFiles/clion-Debug-log.txt create mode 100644 cmake-build-debug/CMakeFiles/clion-environment.txt create mode 100644 cmake-build-debug/CMakeFiles/cmake.check_cache create mode 100644 cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o create mode 100644 cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o create mode 100644 cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o create mode 100644 cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/test/Hangman/word_selector_test.c.o create mode 100644 cmake-build-debug/CMakeFiles/rules.ninja create mode 100644 cmake-build-debug/Testing/Temporary/LastTest.log create mode 100644 cmake-build-debug/build.ninja create mode 100644 cmake-build-debug/cmake_install.cmake create mode 100755 cmake-build-debug/pmuw_projekt_notebinder diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..79b3c94 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..8160237 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/pmuw_projekt_notebinder.iml b/.idea/pmuw_projekt_notebinder.iml new file mode 100644 index 0000000..f08604b --- /dev/null +++ b/.idea/pmuw_projekt_notebinder.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..55c5ea3 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required(VERSION 3.26) +project(pmuw_projekt_notebinder C) + +set(CMAKE_C_STANDARD 11) + +include_directories(src/main/c) +include_directories(src/main/c/Hangman) +include_directories(src/main/c/Template) + +add_executable(pmuw_projekt_notebinder + + src/main/c/Hangman/word_selector.c + src/main/c/Hangman/word_selector.h + src/main/c/main.c + src/main/c/main.h + ) diff --git a/cmake-build-debug/.cmake/api/v1/query/cache-v2 b/cmake-build-debug/.cmake/api/v1/query/cache-v2 new file mode 100644 index 0000000..e69de29 diff --git a/cmake-build-debug/.cmake/api/v1/query/cmakeFiles-v1 b/cmake-build-debug/.cmake/api/v1/query/cmakeFiles-v1 new file mode 100644 index 0000000..e69de29 diff --git a/cmake-build-debug/.cmake/api/v1/query/codemodel-v2 b/cmake-build-debug/.cmake/api/v1/query/codemodel-v2 new file mode 100644 index 0000000..e69de29 diff --git a/cmake-build-debug/.cmake/api/v1/query/toolchains-v1 b/cmake-build-debug/.cmake/api/v1/query/toolchains-v1 new file mode 100644 index 0000000..e69de29 diff --git a/cmake-build-debug/.cmake/api/v1/reply/cache-v2-797367ee73be0946ea69.json b/cmake-build-debug/.cmake/api/v1/reply/cache-v2-797367ee73be0946ea69.json new file mode 100644 index 0000000..6598f26 --- /dev/null +++ b/cmake-build-debug/.cmake/api/v1/reply/cache-v2-797367ee73be0946ea69.json @@ -0,0 +1,1051 @@ +{ + "entries" : + [ + { + "name" : "CMAKE_ADDR2LINE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "CMAKE_ADDR2LINE-NOTFOUND" + }, + { + "name" : "CMAKE_AR", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Library/Developer/CommandLineTools/usr/bin/ar" + }, + { + "name" : "CMAKE_BUILD_TYPE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..." + } + ], + "type" : "STRING", + "value" : "Debug" + }, + { + "name" : "CMAKE_CACHEFILE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "This is the directory where this CMakeCache.txt was created" + } + ], + "type" : "INTERNAL", + "value" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug" + }, + { + "name" : "CMAKE_CACHE_MAJOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Major version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "3" + }, + { + "name" : "CMAKE_CACHE_MINOR_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Minor version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "26" + }, + { + "name" : "CMAKE_CACHE_PATCH_VERSION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Patch version of cmake used to create the current loaded cache" + } + ], + "type" : "INTERNAL", + "value" : "4" + }, + { + "name" : "CMAKE_COLOR_DIAGNOSTICS", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Enable colored diagnostics throughout." + } + ], + "type" : "BOOL", + "value" : "ON" + }, + { + "name" : "CMAKE_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake executable." + } + ], + "type" : "INTERNAL", + "value" : "/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake" + }, + { + "name" : "CMAKE_CPACK_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to cpack program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Applications/CLion.app/Contents/bin/cmake/mac/bin/cpack" + }, + { + "name" : "CMAKE_CTEST_COMMAND", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to ctest program executable." + } + ], + "type" : "INTERNAL", + "value" : "/Applications/CLion.app/Contents/bin/cmake/mac/bin/ctest" + }, + { + "name" : "CMAKE_C_COMPILER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "C compiler" + } + ], + "type" : "FILEPATH", + "value" : "/Library/Developer/CommandLineTools/usr/bin/cc" + }, + { + "name" : "CMAKE_C_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_C_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "-g" + }, + { + "name" : "CMAKE_C_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "-Os -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "-O3 -DNDEBUG" + }, + { + "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "-O2 -g -DNDEBUG" + }, + { + "name" : "CMAKE_DLLTOOL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "CMAKE_DLLTOOL-NOTFOUND" + }, + { + "name" : "CMAKE_EXECUTABLE_FORMAT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Executable file format" + } + ], + "type" : "INTERNAL", + "value" : "MACHO" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Enable/Disable output of compile commands during generation." + } + ], + "type" : "BOOL", + "value" : "" + }, + { + "name" : "CMAKE_EXTRA_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of external makefile project generator." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_FIND_PACKAGE_REDIRECTS_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake." + } + ], + "type" : "STATIC", + "value" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/pkgRedirects" + }, + { + "name" : "CMAKE_GENERATOR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator." + } + ], + "type" : "INTERNAL", + "value" : "Ninja" + }, + { + "name" : "CMAKE_GENERATOR_INSTANCE", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Generator instance identifier." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_PLATFORM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator platform." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_GENERATOR_TOOLSET", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Name of generator toolset." + } + ], + "type" : "INTERNAL", + "value" : "" + }, + { + "name" : "CMAKE_HOME_DIRECTORY", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Source directory with the top level CMakeLists.txt file for this project" + } + ], + "type" : "INTERNAL", + "value" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder" + }, + { + "name" : "CMAKE_INSTALL_NAME_TOOL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/usr/bin/install_name_tool" + }, + { + "name" : "CMAKE_INSTALL_PREFIX", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Install path prefix, prepended onto install directories." + } + ], + "type" : "PATH", + "value" : "/usr/local" + }, + { + "name" : "CMAKE_LINKER", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Library/Developer/CommandLineTools/usr/bin/ld" + }, + { + "name" : "CMAKE_MAKE_PROGRAM", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "No help, variable specified on the command line." + } + ], + "type" : "UNINITIALIZED", + "value" : "/Applications/CLion.app/Contents/bin/ninja/mac/ninja" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_NM", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Library/Developer/CommandLineTools/usr/bin/nm" + }, + { + "name" : "CMAKE_NUMBER_OF_MAKEFILES", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "number of local generators" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_OBJCOPY", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "CMAKE_OBJCOPY-NOTFOUND" + }, + { + "name" : "CMAKE_OBJDUMP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Library/Developer/CommandLineTools/usr/bin/objdump" + }, + { + "name" : "CMAKE_OSX_ARCHITECTURES", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Build architectures for OSX" + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_OSX_DEPLOYMENT_TARGET", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Minimum OS X version to target for deployment (at runtime); newer APIs weak linked. Set to empty string for default value." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_OSX_SYSROOT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "The product will be built against the headers and libraries located inside the indicated SDK." + } + ], + "type" : "PATH", + "value" : "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk" + }, + { + "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Platform information initialized" + } + ], + "type" : "INTERNAL", + "value" : "1" + }, + { + "name" : "CMAKE_PROJECT_DESCRIPTION", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_HOMEPAGE_URL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "" + }, + { + "name" : "CMAKE_PROJECT_NAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "pmuw_projekt_notebinder" + }, + { + "name" : "CMAKE_RANLIB", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Library/Developer/CommandLineTools/usr/bin/ranlib" + }, + { + "name" : "CMAKE_READELF", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "CMAKE_READELF-NOTFOUND" + }, + { + "name" : "CMAKE_ROOT", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Path to CMake installation." + } + ], + "type" : "INTERNAL", + "value" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_SKIP_INSTALL_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_SKIP_RPATH", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If set, runtime paths are not added when using shared libraries." + } + ], + "type" : "BOOL", + "value" : "NO" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during all build types." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." + } + ], + "type" : "STRING", + "value" : "" + }, + { + "name" : "CMAKE_STRIP", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "Path to a program." + } + ], + "type" : "FILEPATH", + "value" : "/Library/Developer/CommandLineTools/usr/bin/strip" + }, + { + "name" : "CMAKE_UNAME", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "uname command" + } + ], + "type" : "INTERNAL", + "value" : "/usr/bin/uname" + }, + { + "name" : "CMAKE_VERBOSE_MAKEFILE", + "properties" : + [ + { + "name" : "ADVANCED", + "value" : "1" + }, + { + "name" : "HELPSTRING", + "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." + } + ], + "type" : "BOOL", + "value" : "FALSE" + }, + { + "name" : "pmuw_projekt_notebinder_BINARY_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug" + }, + { + "name" : "pmuw_projekt_notebinder_IS_TOP_LEVEL", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "ON" + }, + { + "name" : "pmuw_projekt_notebinder_SOURCE_DIR", + "properties" : + [ + { + "name" : "HELPSTRING", + "value" : "Value Computed by CMake" + } + ], + "type" : "STATIC", + "value" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder" + } + ], + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } +} diff --git a/cmake-build-debug/.cmake/api/v1/reply/cmakeFiles-v1-9ac3996b5bf98606de02.json b/cmake-build-debug/.cmake/api/v1/reply/cmakeFiles-v1-9ac3996b5bf98606de02.json new file mode 100644 index 0000000..511136f --- /dev/null +++ b/cmake-build-debug/.cmake/api/v1/reply/cmakeFiles-v1-9ac3996b5bf98606de02.json @@ -0,0 +1,117 @@ +{ + "inputs" : + [ + { + "path" : "CMakeLists.txt" + }, + { + "isGenerated" : true, + "path" : "cmake-build-debug/CMakeFiles/3.26.4/CMakeSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeSystemSpecificInitialize.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Darwin-Initialize.cmake" + }, + { + "isGenerated" : true, + "path" : "cmake-build-debug/CMakeFiles/3.26.4/CMakeCCompiler.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeSystemSpecificInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeGenericSystem.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeInitializeConfigs.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Darwin.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/UnixPaths.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeLanguageInformation.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/AppleClang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/GNU.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/CMakeCommonCompilerMacros.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Apple-AppleClang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Apple-Clang-C.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Apple-Clang.cmake" + }, + { + "isCMake" : true, + "isExternal" : true, + "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCommonLanguageInclude.cmake" + } + ], + "kind" : "cmakeFiles", + "paths" : + { + "build" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug", + "source" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder" + }, + "version" : + { + "major" : 1, + "minor" : 0 + } +} diff --git a/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-c6ffc0b664e1b12e7dfc.json b/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-c6ffc0b664e1b12e7dfc.json new file mode 100644 index 0000000..a13cb3d --- /dev/null +++ b/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-c6ffc0b664e1b12e7dfc.json @@ -0,0 +1,60 @@ +{ + "configurations" : + [ + { + "directories" : + [ + { + "build" : ".", + "jsonFile" : "directory-.-Debug-f5ebdc15457944623624.json", + "minimumCMakeVersion" : + { + "string" : "3.26" + }, + "projectIndex" : 0, + "source" : ".", + "targetIndexes" : + [ + 0 + ] + } + ], + "name" : "Debug", + "projects" : + [ + { + "directoryIndexes" : + [ + 0 + ], + "name" : "pmuw_projekt_notebinder", + "targetIndexes" : + [ + 0 + ] + } + ], + "targets" : + [ + { + "directoryIndex" : 0, + "id" : "pmuw_projekt_notebinder::@6890427a1f51a3e7e1df", + "jsonFile" : "target-pmuw_projekt_notebinder-Debug-439d4177ec694957d283.json", + "name" : "pmuw_projekt_notebinder", + "projectIndex" : 0 + } + ] + } + ], + "kind" : "codemodel", + "paths" : + { + "build" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug", + "source" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder" + }, + "version" : + { + "major" : 2, + "minor" : 5 + } +} diff --git a/cmake-build-debug/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json b/cmake-build-debug/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json new file mode 100644 index 0000000..3a67af9 --- /dev/null +++ b/cmake-build-debug/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json @@ -0,0 +1,14 @@ +{ + "backtraceGraph" : + { + "commands" : [], + "files" : [], + "nodes" : [] + }, + "installers" : [], + "paths" : + { + "build" : ".", + "source" : "." + } +} diff --git a/cmake-build-debug/.cmake/api/v1/reply/index-2024-01-24T18-53-34-0975.json b/cmake-build-debug/.cmake/api/v1/reply/index-2024-01-24T18-53-34-0975.json new file mode 100644 index 0000000..21c2ccd --- /dev/null +++ b/cmake-build-debug/.cmake/api/v1/reply/index-2024-01-24T18-53-34-0975.json @@ -0,0 +1,108 @@ +{ + "cmake" : + { + "generator" : + { + "multiConfig" : false, + "name" : "Ninja" + }, + "paths" : + { + "cmake" : "/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake", + "cpack" : "/Applications/CLion.app/Contents/bin/cmake/mac/bin/cpack", + "ctest" : "/Applications/CLion.app/Contents/bin/cmake/mac/bin/ctest", + "root" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26" + }, + "version" : + { + "isDirty" : false, + "major" : 3, + "minor" : 26, + "patch" : 4, + "string" : "3.26.4", + "suffix" : "" + } + }, + "objects" : + [ + { + "jsonFile" : "codemodel-v2-c6ffc0b664e1b12e7dfc.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 5 + } + }, + { + "jsonFile" : "cache-v2-797367ee73be0946ea69.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + { + "jsonFile" : "cmakeFiles-v1-9ac3996b5bf98606de02.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + }, + { + "jsonFile" : "toolchains-v1-e0f424cc4383644d699f.json", + "kind" : "toolchains", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + ], + "reply" : + { + "cache-v2" : + { + "jsonFile" : "cache-v2-797367ee73be0946ea69.json", + "kind" : "cache", + "version" : + { + "major" : 2, + "minor" : 0 + } + }, + "cmakeFiles-v1" : + { + "jsonFile" : "cmakeFiles-v1-9ac3996b5bf98606de02.json", + "kind" : "cmakeFiles", + "version" : + { + "major" : 1, + "minor" : 0 + } + }, + "codemodel-v2" : + { + "jsonFile" : "codemodel-v2-c6ffc0b664e1b12e7dfc.json", + "kind" : "codemodel", + "version" : + { + "major" : 2, + "minor" : 5 + } + }, + "toolchains-v1" : + { + "jsonFile" : "toolchains-v1-e0f424cc4383644d699f.json", + "kind" : "toolchains", + "version" : + { + "major" : 1, + "minor" : 0 + } + } + } +} diff --git a/cmake-build-debug/.cmake/api/v1/reply/target-pmuw_projekt_notebinder-Debug-439d4177ec694957d283.json b/cmake-build-debug/.cmake/api/v1/reply/target-pmuw_projekt_notebinder-Debug-439d4177ec694957d283.json new file mode 100644 index 0000000..b84f699 --- /dev/null +++ b/cmake-build-debug/.cmake/api/v1/reply/target-pmuw_projekt_notebinder-Debug-439d4177ec694957d283.json @@ -0,0 +1,159 @@ +{ + "artifacts" : + [ + { + "path" : "pmuw_projekt_notebinder" + } + ], + "backtrace" : 1, + "backtraceGraph" : + { + "commands" : + [ + "add_executable", + "include_directories" + ], + "files" : + [ + "CMakeLists.txt" + ], + "nodes" : + [ + { + "file" : 0 + }, + { + "command" : 0, + "file" : 0, + "line" : 10, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 6, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 7, + "parent" : 0 + }, + { + "command" : 1, + "file" : 0, + "line" : 8, + "parent" : 0 + } + ] + }, + "compileGroups" : + [ + { + "compileCommandFragments" : + [ + { + "fragment" : "-g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics" + } + ], + "includes" : + [ + { + "backtrace" : 2, + "path" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c" + }, + { + "backtrace" : 3, + "path" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman" + }, + { + "backtrace" : 4, + "path" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template" + } + ], + "language" : "C", + "languageStandard" : + { + "backtraces" : + [ + 1 + ], + "standard" : "11" + }, + "sourceIndexes" : + [ + 0, + 2 + ] + } + ], + "id" : "pmuw_projekt_notebinder::@6890427a1f51a3e7e1df", + "link" : + { + "commandFragments" : + [ + { + "fragment" : "-g", + "role" : "flags" + }, + { + "fragment" : "", + "role" : "flags" + } + ], + "language" : "C" + }, + "name" : "pmuw_projekt_notebinder", + "nameOnDisk" : "pmuw_projekt_notebinder", + "paths" : + { + "build" : ".", + "source" : "." + }, + "sourceGroups" : + [ + { + "name" : "Source Files", + "sourceIndexes" : + [ + 0, + 2 + ] + }, + { + "name" : "Header Files", + "sourceIndexes" : + [ + 1, + 3 + ] + } + ], + "sources" : + [ + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/main/c/Hangman/word_selector.c", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "src/main/c/Hangman/word_selector.h", + "sourceGroupIndex" : 1 + }, + { + "backtrace" : 1, + "compileGroupIndex" : 0, + "path" : "src/main/c/main.c", + "sourceGroupIndex" : 0 + }, + { + "backtrace" : 1, + "path" : "src/main/c/main.h", + "sourceGroupIndex" : 1 + } + ], + "type" : "EXECUTABLE" +} diff --git a/cmake-build-debug/.cmake/api/v1/reply/toolchains-v1-e0f424cc4383644d699f.json b/cmake-build-debug/.cmake/api/v1/reply/toolchains-v1-e0f424cc4383644d699f.json new file mode 100644 index 0000000..4cbd4c7 --- /dev/null +++ b/cmake-build-debug/.cmake/api/v1/reply/toolchains-v1-e0f424cc4383644d699f.json @@ -0,0 +1,37 @@ +{ + "kind" : "toolchains", + "toolchains" : + [ + { + "compiler" : + { + "id" : "AppleClang", + "implicit" : + { + "includeDirectories" : + [ + "/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include", + "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include", + "/Library/Developer/CommandLineTools/usr/include" + ], + "linkDirectories" : [], + "linkFrameworkDirectories" : [], + "linkLibraries" : [] + }, + "path" : "/Library/Developer/CommandLineTools/usr/bin/cc", + "version" : "15.0.0.15000100" + }, + "language" : "C", + "sourceFileExtensions" : + [ + "c", + "m" + ] + } + ], + "version" : + { + "major" : 1, + "minor" : 0 + } +} diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps new file mode 100644 index 0000000000000000000000000000000000000000..6c9cd667e0ac75eb9e3472fe5dfca889d2226340 GIT binary patch literal 11160 zcmeI2_j6T66vr1ksE7p-6-BXOd7IG0f&xJd5)2wZRPbhV?~-?Ux6R%A65>z%;IGd3 z7btc`v7p#{?_KP@V?#kf#q!;~cOhnoNhZ59{*cUkX5LI@zGwHGvuDrQ_r{El{Aelj zcp`@ELXcAW2og|Hy@=E4JamHKx$m40r^HVBPmxj!bs7vSZFbP=3 zX)6nPZB0$dEyaZVjlX%&qw@t%1r@A?(Ygjdj^;{1H|tjZzop4v(48xF8~m1(r5$tz zZ{tCn@RZiYVaOt{!H@X7I1U7DnlW3@Im~TrT39=wG_EAP3ayHi`jHz{Jx)dD`EjXC z{xqoR6rx-7{!Og2Lr~Y_O9a;X2XvcF?H{_1=m=Zlz+r*UgderS1o<5{Jd-w(Soq5v z*2esRwfKRbbx1ShH`rNd$j-Db;+qZnsk8P1WHYi@hJtLeWMfv8@ibzAwDGIKSajZp zw$Z>_nTv4z0z0P8m6LTO93I*TO;rO7odK=80lKF0CS-0I1%qnspAD{=rQufHpP(yq z-bme&=Qhd8DQDi+4|)Tzu^zUXP1;iNq)r=i0$*h6?EYvW21VMC9}LGp>wXX2MHc+x zN7-ZtZu!oV-=SYSNgBY~zqMy${J6r#I(s%IO(<-9W64I<(a|8}YnwKTh2$Y-!&_sU`iW8mRmJ6X=_~Gj)&qu_fON z&MS`KsyKaQaP5wZ9w_uZS@b@Hu8o++OO~j_{J@rPbkd-1zYiOxdKSUmYKoRc$M!u7 z+AfBvI4YIjh4uYx9jXQ%~z^-67Fc=I0yMsNzo?s~0 z3k(B$gMGlhU_US%><>nO1HeddAUFsd3`T)Nz@cC?I1C&P#(*Qhkzgw5`|K)5*nD1n z2m7ptM!)9OT#mdAEmOTTVjTD_rSexS3Ok|f|P@#7>@v*T;fH&qYx45QcnszIN~8Aj{AV$dgg%}(gX722Y$Lm)yIEpN-;ynxNf6=gisM^Ff{THAwX8;p>5Zj$0S*Cln z=V8m}8&EMrB9~Z@iHx}wHP1X}FfM9Og`MiQv?9-1vVpyz^T~VLXJErd9jz9H?rG?o zsu$8vDHm}yb-4_}Q_$}1eI?&daUoGRU{Ncromi?V)%@#0HB#3Kd9n|hy?LjVvQHTF zasFIF9XUIw;T`AdaZCDocz?{2z8>5kwWP0y_D3w}!~G#!mY<=AE$GYmY6A~J-_#w@ zxz=QU$lLPgTJj)lm^!EWis6yxGxXvQK-*LgD6bZ+d%wXoE5B%AoT>W^`W$tqf`@VH zG&W7|$arHazl}oux)(M~-BsF#^iLNv%SYiy{*4J)k+owvCB&3yA1lh zbFRCYlU5`36hhX(hK)N<8@SWb9@^b9E1smt9k5~Uyh`U&CsaWwl~)^Ff3B&u)$OJF zr`s*Xz~gPIDBosDKa4$JyMj63Y|sc~yw3sW7N7h6Zc~ru6W{gI z_Bi$M`WWB`1#zk#a&AV9)Oqet?7NY_$)0w3CA52c4tlx+WIrO$!Hv*thL4TSi^Xi^ zqRLhBmW|v18#e9$xd&s%eW)|mB0C4p>w3q zcSVo#|Zr=SO$>&^2%L8LTgQv@Pq#)=nSj(fZY+={h%M V@$kWyUN%tY`qT4v&DZYo`X4dxzp4NL literal 0 HcmV?d00001 diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log new file mode 100644 index 0000000..8ff0b30 --- /dev/null +++ b/cmake-build-debug/.ninja_log @@ -0,0 +1,10 @@ +# ninja log v5 +1 38 1706122217155672196 CMakeFiles/pmuw_projekt_notebinder.dir/test/Hangman/word_selector_test.c.o e932f546d59a9d76 +1 38 1706122217155215603 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 +1 38 1706122372717341436 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o f1dbf76e6b4bc97d +0 40 1706122414971396759 build.ninja f2183aada2fc9ffc +1 44 1706122039878920765 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o 69a5bcd8c57a43b3 +0 40 1706122414971396759 build.ninja f2183aada2fc9ffc +1 28 1706122415002971947 pmuw_projekt_notebinder d4d2c5136dd5469e +2 168 1706178769260469565 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 +168 257 1706178769348509184 pmuw_projekt_notebinder d4d2c5136dd5469e diff --git a/cmake-build-debug/CMakeCache.txt b/cmake-build-debug/CMakeCache.txt new file mode 100644 index 0000000..7718973 --- /dev/null +++ b/cmake-build-debug/CMakeCache.txt @@ -0,0 +1,328 @@ +# This is the CMakeCache file. +# For build in directory: /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug +# It was generated by CMake: /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake +# You can edit this file to change values found and used by cmake. +# If you do not want to change any of the values, simply exit the editor. +# If you do want to change a value, simply edit, save, and exit the editor. +# The syntax for the file is as follows: +# KEY:TYPE=VALUE +# KEY is the name of a variable in the cache. +# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. +# VALUE is the current value for the KEY. + +######################## +# EXTERNAL cache entries +######################## + +//Path to a program. +CMAKE_ADDR2LINE:FILEPATH=CMAKE_ADDR2LINE-NOTFOUND + +//Path to a program. +CMAKE_AR:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ar + +//Choose the type of build, options are: None Debug Release RelWithDebInfo +// MinSizeRel ... +CMAKE_BUILD_TYPE:STRING=Debug + +//Enable colored diagnostics throughout. +CMAKE_COLOR_DIAGNOSTICS:BOOL=ON + +//C compiler +CMAKE_C_COMPILER:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/cc + +//Flags used by the C compiler during all build types. +CMAKE_C_FLAGS:STRING= + +//Flags used by the C compiler during DEBUG builds. +CMAKE_C_FLAGS_DEBUG:STRING=-g + +//Flags used by the C compiler during MINSIZEREL builds. +CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG + +//Flags used by the C compiler during RELEASE builds. +CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG + +//Flags used by the C compiler during RELWITHDEBINFO builds. +CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG + +//Path to a program. +CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND + +//Flags used by the linker during all build types. +CMAKE_EXE_LINKER_FLAGS:STRING= + +//Flags used by the linker during DEBUG builds. +CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during MINSIZEREL builds. +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during RELEASE builds. +CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during RELWITHDEBINFO builds. +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Enable/Disable output of compile commands during generation. +CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= + +//Value Computed by CMake. +CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/pkgRedirects + +//Path to a program. +CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool + +//Install path prefix, prepended onto install directories. +CMAKE_INSTALL_PREFIX:PATH=/usr/local + +//Path to a program. +CMAKE_LINKER:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ld + +//No help, variable specified on the command line. +CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/CLion.app/Contents/bin/ninja/mac/ninja + +//Flags used by the linker during the creation of modules during +// all build types. +CMAKE_MODULE_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of modules during +// DEBUG builds. +CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of modules during +// MINSIZEREL builds. +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of modules during +// RELEASE builds. +CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of modules during +// RELWITHDEBINFO builds. +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_NM:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/nm + +//Path to a program. +CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND + +//Path to a program. +CMAKE_OBJDUMP:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/objdump + +//Build architectures for OSX +CMAKE_OSX_ARCHITECTURES:STRING= + +//Minimum OS X version to target for deployment (at runtime); newer +// APIs weak linked. Set to empty string for default value. +CMAKE_OSX_DEPLOYMENT_TARGET:STRING= + +//The product will be built against the headers and libraries located +// inside the indicated SDK. +CMAKE_OSX_SYSROOT:PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk + +//Value Computed by CMake +CMAKE_PROJECT_DESCRIPTION:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_HOMEPAGE_URL:STATIC= + +//Value Computed by CMake +CMAKE_PROJECT_NAME:STATIC=pmuw_projekt_notebinder + +//Path to a program. +CMAKE_RANLIB:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ranlib + +//Path to a program. +CMAKE_READELF:FILEPATH=CMAKE_READELF-NOTFOUND + +//Flags used by the linker during the creation of shared libraries +// during all build types. +CMAKE_SHARED_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of shared libraries +// during DEBUG builds. +CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of shared libraries +// during MINSIZEREL builds. +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELEASE builds. +CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of shared libraries +// during RELWITHDEBINFO builds. +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//If set, runtime paths are not added when installing shared libraries, +// but are added when building. +CMAKE_SKIP_INSTALL_RPATH:BOOL=NO + +//If set, runtime paths are not added when using shared libraries. +CMAKE_SKIP_RPATH:BOOL=NO + +//Flags used by the linker during the creation of static libraries +// during all build types. +CMAKE_STATIC_LINKER_FLAGS:STRING= + +//Flags used by the linker during the creation of static libraries +// during DEBUG builds. +CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= + +//Flags used by the linker during the creation of static libraries +// during MINSIZEREL builds. +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELEASE builds. +CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= + +//Flags used by the linker during the creation of static libraries +// during RELWITHDEBINFO builds. +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= + +//Path to a program. +CMAKE_STRIP:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/strip + +//If this value is on, makefiles will be generated without the +// .SILENT directive, and all commands will be echoed to the console +// during the make. This is useful for debugging only. With Visual +// Studio IDE projects all commands are done without /nologo. +CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE + +//Value Computed by CMake +pmuw_projekt_notebinder_BINARY_DIR:STATIC=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug + +//Value Computed by CMake +pmuw_projekt_notebinder_IS_TOP_LEVEL:STATIC=ON + +//Value Computed by CMake +pmuw_projekt_notebinder_SOURCE_DIR:STATIC=/Users/saba/CLionProjects/pmuw_projekt_notebinder + + +######################## +# INTERNAL cache entries +######################## + +//ADVANCED property for variable: CMAKE_ADDR2LINE +CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_AR +CMAKE_AR-ADVANCED:INTERNAL=1 +//This is the directory where this CMakeCache.txt was created +CMAKE_CACHEFILE_DIR:INTERNAL=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug +//Major version of cmake used to create the current loaded cache +CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 +//Minor version of cmake used to create the current loaded cache +CMAKE_CACHE_MINOR_VERSION:INTERNAL=26 +//Patch version of cmake used to create the current loaded cache +CMAKE_CACHE_PATCH_VERSION:INTERNAL=4 +//Path to CMake executable. +CMAKE_COMMAND:INTERNAL=/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake +//Path to cpack program executable. +CMAKE_CPACK_COMMAND:INTERNAL=/Applications/CLion.app/Contents/bin/cmake/mac/bin/cpack +//Path to ctest program executable. +CMAKE_CTEST_COMMAND:INTERNAL=/Applications/CLion.app/Contents/bin/cmake/mac/bin/ctest +//ADVANCED property for variable: CMAKE_C_COMPILER +CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS +CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG +CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL +CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE +CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO +CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_DLLTOOL +CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 +//Executable file format +CMAKE_EXECUTABLE_FORMAT:INTERNAL=MACHO +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS +CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG +CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL +CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE +CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS +CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 +//Name of external makefile project generator. +CMAKE_EXTRA_GENERATOR:INTERNAL= +//Name of generator. +CMAKE_GENERATOR:INTERNAL=Ninja +//Generator instance identifier. +CMAKE_GENERATOR_INSTANCE:INTERNAL= +//Name of generator platform. +CMAKE_GENERATOR_PLATFORM:INTERNAL= +//Name of generator toolset. +CMAKE_GENERATOR_TOOLSET:INTERNAL= +//Source directory with the top level CMakeLists.txt file for this +// project +CMAKE_HOME_DIRECTORY:INTERNAL=/Users/saba/CLionProjects/pmuw_projekt_notebinder +//ADVANCED property for variable: CMAKE_INSTALL_NAME_TOOL +CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_LINKER +CMAKE_LINKER-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS +CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG +CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL +CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE +CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_NM +CMAKE_NM-ADVANCED:INTERNAL=1 +//number of local generators +CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJCOPY +CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_OBJDUMP +CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 +//Platform information initialized +CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_RANLIB +CMAKE_RANLIB-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_READELF +CMAKE_READELF-ADVANCED:INTERNAL=1 +//Path to CMake installation. +CMAKE_ROOT:INTERNAL=/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS +CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG +CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL +CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE +CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH +CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_SKIP_RPATH +CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS +CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG +CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL +CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE +CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO +CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 +//ADVANCED property for variable: CMAKE_STRIP +CMAKE_STRIP-ADVANCED:INTERNAL=1 +//uname command +CMAKE_UNAME:INTERNAL=/usr/bin/uname +//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE +CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 + diff --git a/cmake-build-debug/CMakeFiles/3.26.4/CMakeCCompiler.cmake b/cmake-build-debug/CMakeFiles/3.26.4/CMakeCCompiler.cmake new file mode 100644 index 0000000..57ab031 --- /dev/null +++ b/cmake-build-debug/CMakeFiles/3.26.4/CMakeCCompiler.cmake @@ -0,0 +1,72 @@ +set(CMAKE_C_COMPILER "/Library/Developer/CommandLineTools/usr/bin/cc") +set(CMAKE_C_COMPILER_ARG1 "") +set(CMAKE_C_COMPILER_ID "AppleClang") +set(CMAKE_C_COMPILER_VERSION "15.0.0.15000100") +set(CMAKE_C_COMPILER_VERSION_INTERNAL "") +set(CMAKE_C_COMPILER_WRAPPER "") +set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") +set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") +set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") +set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") +set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") +set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") +set(CMAKE_C17_COMPILE_FEATURES "c_std_17") +set(CMAKE_C23_COMPILE_FEATURES "c_std_23") + +set(CMAKE_C_PLATFORM_ID "Darwin") +set(CMAKE_C_SIMULATE_ID "") +set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") +set(CMAKE_C_SIMULATE_VERSION "") + + + + +set(CMAKE_AR "/Library/Developer/CommandLineTools/usr/bin/ar") +set(CMAKE_C_COMPILER_AR "") +set(CMAKE_RANLIB "/Library/Developer/CommandLineTools/usr/bin/ranlib") +set(CMAKE_C_COMPILER_RANLIB "") +set(CMAKE_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld") +set(CMAKE_MT "") +set(CMAKE_COMPILER_IS_GNUCC ) +set(CMAKE_C_COMPILER_LOADED 1) +set(CMAKE_C_COMPILER_WORKS TRUE) +set(CMAKE_C_ABI_COMPILED TRUE) + +set(CMAKE_C_COMPILER_ENV_VAR "CC") + +set(CMAKE_C_COMPILER_ID_RUN 1) +set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) +set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) +set(CMAKE_C_LINKER_PREFERENCE 10) + +# Save compiler ABI information. +set(CMAKE_C_SIZEOF_DATA_PTR "8") +set(CMAKE_C_COMPILER_ABI "") +set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") +set(CMAKE_C_LIBRARY_ARCHITECTURE "") + +if(CMAKE_C_SIZEOF_DATA_PTR) + set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") +endif() + +if(CMAKE_C_COMPILER_ABI) + set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") +endif() + +if(CMAKE_C_LIBRARY_ARCHITECTURE) + set(CMAKE_LIBRARY_ARCHITECTURE "") +endif() + +set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") +if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) + set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") +endif() + + + + + +set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include;/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include") +set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") +set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "") +set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") diff --git a/cmake-build-debug/CMakeFiles/3.26.4/CMakeDetermineCompilerABI_C.bin b/cmake-build-debug/CMakeFiles/3.26.4/CMakeDetermineCompilerABI_C.bin new file mode 100755 index 0000000000000000000000000000000000000000..d0263cc2b452862d9a24f33016cfc32225bfe328 GIT binary patch literal 17000 zcmeI4Uuau(6vuxzX`v-u8|S8uDrOAkpN_WvX$^(NWNW%cyQI}TgcbLrNp9@jnxv#D zHe+f*id`#WnLcfAgU!muhHRBEhV`W)B3s9BTLq2cLyPzz6^k7#e$UOl?TrxypU;7F zf4_6i?|1GwpPSc{>+8SXuM;6LPlB}CqG(Jz;~ zDlE$5#z85={z$kytl#&R`-EXv!%d2kbdfTvj%5u4%ir@AJf&vLBV_ z8B3=|%+rSO<+{#MJs-o)==AzAbTeV|mW7-LUEV(zQpRldy^R9jwDx9nfAV z37sLOZ$W4NkJRIm3yR;IXc-;JvCh2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjSO^r~5sSsgMZVA|@;^GnpT!1|UuhiAV}|#G zn!dd=wc3h%xxt&SQEDB_*4Qj!Ic@A8V>>++u>x}7T{H7``E4NB73vt#j;ZN{j1Ols z{jKiTga`&gUD1wgPO6!-8t=~p_Q?Z5f1oqy6Nu_}qPeUp)0w!M>F)`I!##fK4|WE8 zLBwgK_)()T>q;}sG~?{WN=ozTBwqcw`Jg%JI%IL`nP9l|@n`*j3(rX;fEMJt2q0D2L%Gz%{+K*W~hfR++lah2|nG(+o= z>xeNQ|B_)(8aBPAK`BjmQ+*GS4W~Jek9lvzODrhv!eoDCCHho;StU}hq~zbkFQeM) zQccCRft09-4QbizkZOkUE~~76UpEhegoer>*#;jfRqVo6MZBn$7&Jmb2fG50$I+z+BHEeTH>#ZtpMUe9=l71oPkc0$ zmlxhX|7j$>u#%Xsy1lq~)E0_V7mr^)er#gt+I07cJ?H)_{^9$frkQEy*Pq=xFHike zJo!^%b@GojZT5vPe#k_B&Mn-Gf3>{pyLVToCO%1RJ27zjy)T!4X`0?1S@4{?SY1e5 G6@LL&JT!>_ literal 0 HcmV?d00001 diff --git a/cmake-build-debug/CMakeFiles/3.26.4/CMakeSystem.cmake b/cmake-build-debug/CMakeFiles/3.26.4/CMakeSystem.cmake new file mode 100644 index 0000000..d0903e1 --- /dev/null +++ b/cmake-build-debug/CMakeFiles/3.26.4/CMakeSystem.cmake @@ -0,0 +1,15 @@ +set(CMAKE_HOST_SYSTEM "Darwin-23.2.0") +set(CMAKE_HOST_SYSTEM_NAME "Darwin") +set(CMAKE_HOST_SYSTEM_VERSION "23.2.0") +set(CMAKE_HOST_SYSTEM_PROCESSOR "arm64") + + + +set(CMAKE_SYSTEM "Darwin-23.2.0") +set(CMAKE_SYSTEM_NAME "Darwin") +set(CMAKE_SYSTEM_VERSION "23.2.0") +set(CMAKE_SYSTEM_PROCESSOR "arm64") + +set(CMAKE_CROSSCOMPILING "FALSE") + +set(CMAKE_SYSTEM_LOADED 1) diff --git a/cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.c b/cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.c new file mode 100644 index 0000000..88155ff --- /dev/null +++ b/cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.c @@ -0,0 +1,866 @@ +#ifdef __cplusplus +# error "A C++ compiler has been selected for C." +#endif + +#if defined(__18CXX) +# define ID_VOID_MAIN +#endif +#if defined(__CLASSIC_C__) +/* cv-qualifiers did not exist in K&R C */ +# define const +# define volatile +#endif + +#if !defined(__has_include) +/* If the compiler does not have __has_include, pretend the answer is + always no. */ +# define __has_include(x) 0 +#endif + + +/* Version number components: V=Version, R=Revision, P=Patch + Version date components: YYYY=Year, MM=Month, DD=Day */ + +#if defined(__INTEL_COMPILER) || defined(__ICC) +# define COMPILER_ID "Intel" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# if defined(__GNUC__) +# define SIMULATE_ID "GNU" +# endif + /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, + except that a few beta releases use the old format with V=2021. */ +# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) +# if defined(__INTEL_COMPILER_UPDATE) +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) +# else +# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) +# endif +# else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) +# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) + /* The third version component from --version is an update index, + but no macro is provided for it. */ +# define COMPILER_VERSION_PATCH DEC(0) +# endif +# if defined(__INTEL_COMPILER_BUILD_DATE) + /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ +# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) +# endif +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +# endif +# if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) +# define COMPILER_ID "IntelLLVM" +#if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +#endif +#if defined(__GNUC__) +# define SIMULATE_ID "GNU" +#endif +/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and + * later. Look for 6 digit vs. 8 digit version number to decide encoding. + * VVVV is no smaller than the current year when a version is released. + */ +#if __INTEL_LLVM_COMPILER < 1000000L +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) +#else +# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) +# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) +#endif +#if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +#endif +#if defined(__GNUC__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +#elif defined(__GNUG__) +# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) +#endif +#if defined(__GNUC_MINOR__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +#endif +#if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +#endif + +#elif defined(__PATHCC__) +# define COMPILER_ID "PathScale" +# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) +# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) +# if defined(__PATHCC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) +# endif + +#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) +# define COMPILER_ID "Embarcadero" +# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) +# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) +# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) + +#elif defined(__BORLANDC__) +# define COMPILER_ID "Borland" + /* __BORLANDC__ = 0xVRR */ +# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) +# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) + +#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 +# define COMPILER_ID "Watcom" + /* __WATCOMC__ = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__WATCOMC__) +# define COMPILER_ID "OpenWatcom" + /* __WATCOMC__ = VVRP + 1100 */ +# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) +# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) +# if (__WATCOMC__ % 10) > 0 +# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) +# endif + +#elif defined(__SUNPRO_C) +# define COMPILER_ID "SunPro" +# if __SUNPRO_C >= 0x5100 + /* __SUNPRO_C = 0xVRRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# else + /* __SUNPRO_CC = 0xVRP */ +# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) +# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) +# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) +# endif + +#elif defined(__HP_cc) +# define COMPILER_ID "HP" + /* __HP_cc = VVRRPP */ +# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) +# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) +# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) + +#elif defined(__DECC) +# define COMPILER_ID "Compaq" + /* __DECC_VER = VVRRTPPPP */ +# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) +# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) +# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) + +#elif defined(__IBMC__) && defined(__COMPILER_VER__) +# define COMPILER_ID "zOS" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__open_xl__) && defined(__clang__) +# define COMPILER_ID "IBMClang" +# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) +# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) +# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) + + +#elif defined(__ibmxl__) && defined(__clang__) +# define COMPILER_ID "XLClang" +# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) +# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) +# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) +# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) + + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 +# define COMPILER_ID "XL" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 +# define COMPILER_ID "VisualAge" + /* __IBMC__ = VRP */ +# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) +# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) +# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) + +#elif defined(__NVCOMPILER) +# define COMPILER_ID "NVHPC" +# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) +# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) +# if defined(__NVCOMPILER_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) +# endif + +#elif defined(__PGI) +# define COMPILER_ID "PGI" +# define COMPILER_VERSION_MAJOR DEC(__PGIC__) +# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) +# if defined(__PGIC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) +# endif + +#elif defined(_CRAYC) +# define COMPILER_ID "Cray" +# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) +# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) + +#elif defined(__TI_COMPILER_VERSION__) +# define COMPILER_ID "TI" + /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ +# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) +# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) +# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) + +#elif defined(__CLANG_FUJITSU) +# define COMPILER_ID "FujitsuClang" +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# define COMPILER_VERSION_INTERNAL_STR __clang_version__ + + +#elif defined(__FUJITSU) +# define COMPILER_ID "Fujitsu" +# if defined(__FCC_version__) +# define COMPILER_VERSION __FCC_version__ +# elif defined(__FCC_major__) +# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) +# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) +# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) +# endif +# if defined(__fcc_version) +# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) +# elif defined(__FCC_VERSION) +# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) +# endif + + +#elif defined(__ghs__) +# define COMPILER_ID "GHS" +/* __GHS_VERSION_NUMBER = VVVVRP */ +# ifdef __GHS_VERSION_NUMBER +# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) +# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) +# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) +# endif + +#elif defined(__TASKING__) +# define COMPILER_ID "Tasking" + # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) + # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) +# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) + +#elif defined(__TINYC__) +# define COMPILER_ID "TinyCC" + +#elif defined(__BCC__) +# define COMPILER_ID "Bruce" + +#elif defined(__SCO_VERSION__) +# define COMPILER_ID "SCO" + +#elif defined(__ARMCC_VERSION) && !defined(__clang__) +# define COMPILER_ID "ARMCC" +#if __ARMCC_VERSION >= 1000000 + /* __ARMCC_VERSION = VRRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#else + /* __ARMCC_VERSION = VRPPPP */ + # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) + # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) + # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) +#endif + + +#elif defined(__clang__) && defined(__apple_build_version__) +# define COMPILER_ID "AppleClang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif +# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) + +#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) +# define COMPILER_ID "ARMClang" + # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) + # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) + # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) +# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) + +#elif defined(__clang__) +# define COMPILER_ID "Clang" +# if defined(_MSC_VER) +# define SIMULATE_ID "MSVC" +# endif +# define COMPILER_VERSION_MAJOR DEC(__clang_major__) +# define COMPILER_VERSION_MINOR DEC(__clang_minor__) +# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) +# if defined(_MSC_VER) + /* _MSC_VER = VVRR */ +# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) +# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) +# endif + +#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) +# define COMPILER_ID "LCC" +# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) +# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) +# if defined(__LCC_MINOR__) +# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) +# endif +# if defined(__GNUC__) && defined(__GNUC_MINOR__) +# define SIMULATE_ID "GNU" +# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) +# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) +# if defined(__GNUC_PATCHLEVEL__) +# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif +# endif + +#elif defined(__GNUC__) +# define COMPILER_ID "GNU" +# define COMPILER_VERSION_MAJOR DEC(__GNUC__) +# if defined(__GNUC_MINOR__) +# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) +# endif +# if defined(__GNUC_PATCHLEVEL__) +# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) +# endif + +#elif defined(_MSC_VER) +# define COMPILER_ID "MSVC" + /* _MSC_VER = VVRR */ +# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) +# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) +# if defined(_MSC_FULL_VER) +# if _MSC_VER >= 1400 + /* _MSC_FULL_VER = VVRRPPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) +# else + /* _MSC_FULL_VER = VVRRPPPP */ +# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) +# endif +# endif +# if defined(_MSC_BUILD) +# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) +# endif + +#elif defined(_ADI_COMPILER) +# define COMPILER_ID "ADSP" +#if defined(__VERSIONNUM__) + /* __VERSIONNUM__ = 0xVVRRPPTT */ +# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) +# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) +# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) +# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) +#endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# define COMPILER_ID "IAR" +# if defined(__VER__) && defined(__ICCARM__) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) +# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) +# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) +# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) +# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) +# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) +# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) +# endif + +#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) +# define COMPILER_ID "SDCC" +# if defined(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) +# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) +# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) +# else + /* SDCC = VRP */ +# define COMPILER_VERSION_MAJOR DEC(SDCC/100) +# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) +# define COMPILER_VERSION_PATCH DEC(SDCC % 10) +# endif + + +/* These compilers are either not known or too old to define an + identification macro. Try to identify the platform and guess that + it is the native compiler. */ +#elif defined(__hpux) || defined(__hpua) +# define COMPILER_ID "HP" + +#else /* unknown compiler */ +# define COMPILER_ID "" +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; +#ifdef SIMULATE_ID +char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; +#endif + +#ifdef __QNXNTO__ +char const* qnxnto = "INFO" ":" "qnxnto[]"; +#endif + +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) +char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; +#endif + +#define STRINGIFY_HELPER(X) #X +#define STRINGIFY(X) STRINGIFY_HELPER(X) + +/* Identify known platforms by name. */ +#if defined(__linux) || defined(__linux__) || defined(linux) +# define PLATFORM_ID "Linux" + +#elif defined(__MSYS__) +# define PLATFORM_ID "MSYS" + +#elif defined(__CYGWIN__) +# define PLATFORM_ID "Cygwin" + +#elif defined(__MINGW32__) +# define PLATFORM_ID "MinGW" + +#elif defined(__APPLE__) +# define PLATFORM_ID "Darwin" + +#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) +# define PLATFORM_ID "Windows" + +#elif defined(__FreeBSD__) || defined(__FreeBSD) +# define PLATFORM_ID "FreeBSD" + +#elif defined(__NetBSD__) || defined(__NetBSD) +# define PLATFORM_ID "NetBSD" + +#elif defined(__OpenBSD__) || defined(__OPENBSD) +# define PLATFORM_ID "OpenBSD" + +#elif defined(__sun) || defined(sun) +# define PLATFORM_ID "SunOS" + +#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) +# define PLATFORM_ID "AIX" + +#elif defined(__hpux) || defined(__hpux__) +# define PLATFORM_ID "HP-UX" + +#elif defined(__HAIKU__) +# define PLATFORM_ID "Haiku" + +#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) +# define PLATFORM_ID "BeOS" + +#elif defined(__QNX__) || defined(__QNXNTO__) +# define PLATFORM_ID "QNX" + +#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) +# define PLATFORM_ID "Tru64" + +#elif defined(__riscos) || defined(__riscos__) +# define PLATFORM_ID "RISCos" + +#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) +# define PLATFORM_ID "SINIX" + +#elif defined(__UNIX_SV__) +# define PLATFORM_ID "UNIX_SV" + +#elif defined(__bsdos__) +# define PLATFORM_ID "BSDOS" + +#elif defined(_MPRAS) || defined(MPRAS) +# define PLATFORM_ID "MP-RAS" + +#elif defined(__osf) || defined(__osf__) +# define PLATFORM_ID "OSF1" + +#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) +# define PLATFORM_ID "SCO_SV" + +#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) +# define PLATFORM_ID "ULTRIX" + +#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) +# define PLATFORM_ID "Xenix" + +#elif defined(__WATCOMC__) +# if defined(__LINUX__) +# define PLATFORM_ID "Linux" + +# elif defined(__DOS__) +# define PLATFORM_ID "DOS" + +# elif defined(__OS2__) +# define PLATFORM_ID "OS2" + +# elif defined(__WINDOWS__) +# define PLATFORM_ID "Windows3x" + +# elif defined(__VXWORKS__) +# define PLATFORM_ID "VxWorks" + +# else /* unknown platform */ +# define PLATFORM_ID +# endif + +#elif defined(__INTEGRITY) +# if defined(INT_178B) +# define PLATFORM_ID "Integrity178" + +# else /* regular Integrity */ +# define PLATFORM_ID "Integrity" +# endif + +# elif defined(_ADI_COMPILER) +# define PLATFORM_ID "ADSP" + +#else /* unknown platform */ +# define PLATFORM_ID + +#endif + +/* For windows compilers MSVC and Intel we can determine + the architecture of the compiler being used. This is because + the compilers do not have flags that can change the architecture, + but rather depend on which compiler is being used +*/ +#if defined(_WIN32) && defined(_MSC_VER) +# if defined(_M_IA64) +# define ARCHITECTURE_ID "IA64" + +# elif defined(_M_ARM64EC) +# define ARCHITECTURE_ID "ARM64EC" + +# elif defined(_M_X64) || defined(_M_AMD64) +# define ARCHITECTURE_ID "x64" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# elif defined(_M_ARM64) +# define ARCHITECTURE_ID "ARM64" + +# elif defined(_M_ARM) +# if _M_ARM == 4 +# define ARCHITECTURE_ID "ARMV4I" +# elif _M_ARM == 5 +# define ARCHITECTURE_ID "ARMV5I" +# else +# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) +# endif + +# elif defined(_M_MIPS) +# define ARCHITECTURE_ID "MIPS" + +# elif defined(_M_SH) +# define ARCHITECTURE_ID "SHx" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__WATCOMC__) +# if defined(_M_I86) +# define ARCHITECTURE_ID "I86" + +# elif defined(_M_IX86) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) +# if defined(__ICCARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__ICCRX__) +# define ARCHITECTURE_ID "RX" + +# elif defined(__ICCRH850__) +# define ARCHITECTURE_ID "RH850" + +# elif defined(__ICCRL78__) +# define ARCHITECTURE_ID "RL78" + +# elif defined(__ICCRISCV__) +# define ARCHITECTURE_ID "RISCV" + +# elif defined(__ICCAVR__) +# define ARCHITECTURE_ID "AVR" + +# elif defined(__ICC430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__ICCV850__) +# define ARCHITECTURE_ID "V850" + +# elif defined(__ICC8051__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__ICCSTM8__) +# define ARCHITECTURE_ID "STM8" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__ghs__) +# if defined(__PPC64__) +# define ARCHITECTURE_ID "PPC64" + +# elif defined(__ppc__) +# define ARCHITECTURE_ID "PPC" + +# elif defined(__ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__x86_64__) +# define ARCHITECTURE_ID "x64" + +# elif defined(__i386__) +# define ARCHITECTURE_ID "X86" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +#elif defined(__TI_COMPILER_VERSION__) +# if defined(__TI_ARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__MSP430__) +# define ARCHITECTURE_ID "MSP430" + +# elif defined(__TMS320C28XX__) +# define ARCHITECTURE_ID "TMS320C28x" + +# elif defined(__TMS320C6X__) || defined(_TMS320C6X) +# define ARCHITECTURE_ID "TMS320C6x" + +# else /* unknown architecture */ +# define ARCHITECTURE_ID "" +# endif + +# elif defined(__ADSPSHARC__) +# define ARCHITECTURE_ID "SHARC" + +# elif defined(__ADSPBLACKFIN__) +# define ARCHITECTURE_ID "Blackfin" + +#elif defined(__TASKING__) + +# if defined(__CTC__) || defined(__CPTC__) +# define ARCHITECTURE_ID "TriCore" + +# elif defined(__CMCS__) +# define ARCHITECTURE_ID "MCS" + +# elif defined(__CARM__) +# define ARCHITECTURE_ID "ARM" + +# elif defined(__CARC__) +# define ARCHITECTURE_ID "ARC" + +# elif defined(__C51__) +# define ARCHITECTURE_ID "8051" + +# elif defined(__CPCP__) +# define ARCHITECTURE_ID "PCP" + +# else +# define ARCHITECTURE_ID "" +# endif + +#else +# define ARCHITECTURE_ID +#endif + +/* Convert integer to decimal digit literals. */ +#define DEC(n) \ + ('0' + (((n) / 10000000)%10)), \ + ('0' + (((n) / 1000000)%10)), \ + ('0' + (((n) / 100000)%10)), \ + ('0' + (((n) / 10000)%10)), \ + ('0' + (((n) / 1000)%10)), \ + ('0' + (((n) / 100)%10)), \ + ('0' + (((n) / 10)%10)), \ + ('0' + ((n) % 10)) + +/* Convert integer to hex digit literals. */ +#define HEX(n) \ + ('0' + ((n)>>28 & 0xF)), \ + ('0' + ((n)>>24 & 0xF)), \ + ('0' + ((n)>>20 & 0xF)), \ + ('0' + ((n)>>16 & 0xF)), \ + ('0' + ((n)>>12 & 0xF)), \ + ('0' + ((n)>>8 & 0xF)), \ + ('0' + ((n)>>4 & 0xF)), \ + ('0' + ((n) & 0xF)) + +/* Construct a string literal encoding the version number. */ +#ifdef COMPILER_VERSION +char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; + +/* Construct a string literal encoding the version number components. */ +#elif defined(COMPILER_VERSION_MAJOR) +char const info_version[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', + COMPILER_VERSION_MAJOR, +# ifdef COMPILER_VERSION_MINOR + '.', COMPILER_VERSION_MINOR, +# ifdef COMPILER_VERSION_PATCH + '.', COMPILER_VERSION_PATCH, +# ifdef COMPILER_VERSION_TWEAK + '.', COMPILER_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct a string literal encoding the internal version number. */ +#ifdef COMPILER_VERSION_INTERNAL +char const info_version_internal[] = { + 'I', 'N', 'F', 'O', ':', + 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', + 'i','n','t','e','r','n','a','l','[', + COMPILER_VERSION_INTERNAL,']','\0'}; +#elif defined(COMPILER_VERSION_INTERNAL_STR) +char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; +#endif + +/* Construct a string literal encoding the version number components. */ +#ifdef SIMULATE_VERSION_MAJOR +char const info_simulate_version[] = { + 'I', 'N', 'F', 'O', ':', + 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', + SIMULATE_VERSION_MAJOR, +# ifdef SIMULATE_VERSION_MINOR + '.', SIMULATE_VERSION_MINOR, +# ifdef SIMULATE_VERSION_PATCH + '.', SIMULATE_VERSION_PATCH, +# ifdef SIMULATE_VERSION_TWEAK + '.', SIMULATE_VERSION_TWEAK, +# endif +# endif +# endif + ']','\0'}; +#endif + +/* Construct the string literal in pieces to prevent the source from + getting matched. Store it in a pointer rather than an array + because some compilers will just produce instructions to fill the + array rather than assigning a pointer to a static array. */ +char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; +char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; + + + +#if !defined(__STDC__) && !defined(__clang__) +# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) +# define C_VERSION "90" +# else +# define C_VERSION +# endif +#elif __STDC_VERSION__ > 201710L +# define C_VERSION "23" +#elif __STDC_VERSION__ >= 201710L +# define C_VERSION "17" +#elif __STDC_VERSION__ >= 201000L +# define C_VERSION "11" +#elif __STDC_VERSION__ >= 199901L +# define C_VERSION "99" +#else +# define C_VERSION "90" +#endif +const char* info_language_standard_default = + "INFO" ":" "standard_default[" C_VERSION "]"; + +const char* info_language_extensions_default = "INFO" ":" "extensions_default[" +#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ + defined(__TI_COMPILER_VERSION__)) && \ + !defined(__STRICT_ANSI__) + "ON" +#else + "OFF" +#endif +"]"; + +/*--------------------------------------------------------------------------*/ + +#ifdef ID_VOID_MAIN +void main() {} +#else +# if defined(__CLASSIC_C__) +int main(argc, argv) int argc; char *argv[]; +# else +int main(int argc, char* argv[]) +# endif +{ + int require = 0; + require += info_compiler[argc]; + require += info_platform[argc]; + require += info_arch[argc]; +#ifdef COMPILER_VERSION_MAJOR + require += info_version[argc]; +#endif +#ifdef COMPILER_VERSION_INTERNAL + require += info_version_internal[argc]; +#endif +#ifdef SIMULATE_ID + require += info_simulate[argc]; +#endif +#ifdef SIMULATE_VERSION_MAJOR + require += info_simulate_version[argc]; +#endif +#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) + require += info_cray[argc]; +#endif + require += info_language_standard_default[argc]; + require += info_language_extensions_default[argc]; + (void)argv; + return require; +} +#endif diff --git a/cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.o b/cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.o new file mode 100644 index 0000000000000000000000000000000000000000..7b535879801fc78b203ff53280f4bb26a31c4358 GIT binary patch literal 1712 zcmb_cJ%|%Q6rOnJnKPOwSSSY?u(1l8^A1H>NVq5};qHnQk#LMlvdJxMHes{TD=ZEa zv=O|<%Hj$I!Pdf92{!3G8?lU5cZI!YVf^0CoBUnn&x6_Teecb@eY5k;e*F3U*D)a? z0!EK%jN&0Yk{GZv7+=C{NDn-^oZFx^FwKv^r*W8qFew9jBT&BLg=@vakZZ5Y4%MTQ z88n3csIg4~ZBmw7f$w-V4oEp(PuKA|pPAAt6>__Spp+FWum%+U=CXzCkY{+G7dZ45 z^{C`F`qO(H&ZhmA8(wR;;mQ8ix!zS?)SKvUv=;ePuimuEfoyyC9Iql}J~uk&71v90 zFp0jXWEaS(u`SOdcN#vqC*Yav>BFr>hE2uX7dMRi5I5v)2etEsbek-uNise^i#jaXy zHz=hqaR&Fr_F4{PG{~(iul?c29_vruwS6jBGD1r)rj%nCLnpn6SlTcqUKHM^WOyaV zI(Pww`82sWW9k30b!sk7HW%OiAp*4eHGW Zu9SiUdQnq2p!1r-0ZnTP2bAOy+HW9I5BC57 literal 0 HcmV?d00001 diff --git a/cmake-build-debug/CMakeFiles/CMakeConfigureLog.yaml b/cmake-build-debug/CMakeFiles/CMakeConfigureLog.yaml new file mode 100644 index 0000000..23e7ec2 --- /dev/null +++ b/cmake-build-debug/CMakeFiles/CMakeConfigureLog.yaml @@ -0,0 +1,192 @@ + +--- +events: + - + kind: "message-v1" + backtrace: + - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineSystem.cmake:204 (message)" + - "CMakeLists.txt:2 (project)" + message: | + The system is: Darwin - 23.2.0 - arm64 + - + kind: "message-v1" + backtrace: + - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. + Compiler: /Library/Developer/CommandLineTools/usr/bin/cc + Build flags: + Id flags: + + The output was: + 1 + ld: library 'System' not found + clang: error: linker command failed with exit code 1 (use -v to see invocation) + + + - + kind: "message-v1" + backtrace: + - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerId.cmake:17 (message)" + - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" + - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)" + - "CMakeLists.txt:2 (project)" + message: | + Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. + Compiler: /Library/Developer/CommandLineTools/usr/bin/cc + Build flags: + Id flags: -c + + The output was: + 0 + + + Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" + + The C compiler identification is AppleClang, found in: + /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.o + + - + kind: "try_compile-v1" + backtrace: + - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerABI.cmake:57 (try_compile)" + - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + checks: + - "Detecting C compiler ABI info" + directories: + source: "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy" + binary: "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy" + cmakeVariables: + CMAKE_C_FLAGS: "" + CMAKE_C_FLAGS_DEBUG: "-g" + CMAKE_EXE_LINKER_FLAGS: "" + CMAKE_OSX_ARCHITECTURES: "" + CMAKE_OSX_DEPLOYMENT_TARGET: "" + CMAKE_OSX_SYSROOT: "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk" + buildResult: + variable: "CMAKE_C_ABI_COMPILED" + cached: true + stdout: | + Change Dir: /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy + + Run Build Command(s):/Applications/CLion.app/Contents/bin/ninja/mac/ninja -v cmTC_66165 && [1/2] /Library/Developer/CommandLineTools/usr/bin/cc -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics -v -Wl,-v -MD -MT CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -c /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCCompilerABI.c + Apple clang version 15.0.0 (clang-1500.1.0.2.5) + Target: arm64-apple-darwin23.2.0 + Thread model: posix + InstalledDir: /Library/Developer/CommandLineTools/usr/bin + clang: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] + "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx14.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=14.2 -fvisibility-inlines-hidden-static-local-var -target-cpu apple-m1 -target-feature +v8.5a -target-feature +crc -target-feature +lse -target-feature +rdm -target-feature +crypto -target-feature +dotprod -target-feature +fp-armv8 -target-feature +neon -target-feature +fp16fml -target-feature +ras -target-feature +rcpc -target-feature +zcm -target-feature +zcz -target-feature +fullfp16 -target-feature +sm4 -target-feature +sha3 -target-feature +sha2 -target-feature +aes -target-abi darwinpcs -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=lldb -target-linker-version 1022.1 -v -fcoverage-compilation-dir=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0 -dependency-file CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -Wno-reserved-identifier -Wno-gnu-folding-constant -fdebug-compilation-dir=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fmax-type-align=16 -fcommon -fcolor-diagnostics -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -mllvm -disable-aligned-alloc-awareness=1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -x c /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCCompilerABI.c + clang -cc1 version 15.0.0 (clang-1500.1.0.2.5) default target arm64-apple-darwin23.2.0 + ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/local/include" + ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/Library/Frameworks" + #include "..." search starts here: + #include <...> search starts here: + /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include + /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include + /Library/Developer/CommandLineTools/usr/include + /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/System/Library/Frameworks (framework directory) + End of search list. + [2/2] : && /Library/Developer/CommandLineTools/usr/bin/cc -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -o cmTC_66165 && : + Apple clang version 15.0.0 (clang-1500.1.0.2.5) + Target: arm64-apple-darwin23.2.0 + Thread model: posix + InstalledDir: /Library/Developer/CommandLineTools/usr/bin + "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 14.0.0 14.2 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -o cmTC_66165 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/lib/darwin/libclang_rt.osx.a + @(#)PROGRAM:ld PROJECT:dyld-1022.1 + BUILD 13:21:42 Nov 10 2023 + configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h + will use ld-classic for: armv6 armv7 armv7s arm64_32 i386 armv6m armv7k armv7m armv7em + LTO support using: LLVM version 15.0.0 (static support for 29, runtime is 29) + TAPI support using: Apple TAPI version 15.0.0 (tapi-1500.0.12.8) + Library search paths: + Framework search paths: + + exitCode: 0 + - + kind: "message-v1" + backtrace: + - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerABI.cmake:127 (message)" + - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit include dir info: rv=done + found start of include info + found start of implicit include info + add: [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include] + add: [/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include] + add: [/Library/Developer/CommandLineTools/usr/include] + end of search list found + collapse include dir [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include] ==> [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include] + collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include] + collapse include dir [/Library/Developer/CommandLineTools/usr/include] ==> [/Library/Developer/CommandLineTools/usr/include] + implicit include dirs: [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include;/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include] + + + - + kind: "message-v1" + backtrace: + - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerABI.cmake:152 (message)" + - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" + - "CMakeLists.txt:2 (project)" + message: | + Parsed C implicit link information: + link line regex: [^( *|.*[/\\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] + ignore line: [Change Dir: /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy] + ignore line: [] + ignore line: [Run Build Command(s):/Applications/CLion.app/Contents/bin/ninja/mac/ninja -v cmTC_66165 && [1/2] /Library/Developer/CommandLineTools/usr/bin/cc -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics -v -Wl -v -MD -MT CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -c /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCCompilerABI.c] + ignore line: [Apple clang version 15.0.0 (clang-1500.1.0.2.5)] + ignore line: [Target: arm64-apple-darwin23.2.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + ignore line: [clang: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] + ignore line: [ "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx14.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=14.2 -fvisibility-inlines-hidden-static-local-var -target-cpu apple-m1 -target-feature +v8.5a -target-feature +crc -target-feature +lse -target-feature +rdm -target-feature +crypto -target-feature +dotprod -target-feature +fp-armv8 -target-feature +neon -target-feature +fp16fml -target-feature +ras -target-feature +rcpc -target-feature +zcm -target-feature +zcz -target-feature +fullfp16 -target-feature +sm4 -target-feature +sha3 -target-feature +sha2 -target-feature +aes -target-abi darwinpcs -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=lldb -target-linker-version 1022.1 -v -fcoverage-compilation-dir=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0 -dependency-file CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -Wno-reserved-identifier -Wno-gnu-folding-constant -fdebug-compilation-dir=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fmax-type-align=16 -fcommon -fcolor-diagnostics -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -mllvm -disable-aligned-alloc-awareness=1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -x c /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCCompilerABI.c] + ignore line: [clang -cc1 version 15.0.0 (clang-1500.1.0.2.5) default target arm64-apple-darwin23.2.0] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/local/include"] + ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/Library/Frameworks"] + ignore line: [#include "..." search starts here:] + ignore line: [#include <...> search starts here:] + ignore line: [ /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/usr/include] + ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/System/Library/Frameworks (framework directory)] + ignore line: [End of search list.] + ignore line: [[2/2] : && /Library/Developer/CommandLineTools/usr/bin/cc -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -Wl -search_paths_first -Wl -headerpad_max_install_names -v -Wl -v CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -o cmTC_66165 && :] + ignore line: [Apple clang version 15.0.0 (clang-1500.1.0.2.5)] + ignore line: [Target: arm64-apple-darwin23.2.0] + ignore line: [Thread model: posix] + ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] + link line: [ "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 14.0.0 14.2 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -o cmTC_66165 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/lib/darwin/libclang_rt.osx.a] + arg [/Library/Developer/CommandLineTools/usr/bin/ld] ==> ignore + arg [-demangle] ==> ignore + arg [-lto_library] ==> ignore, skip following value + arg [/Library/Developer/CommandLineTools/usr/lib/libLTO.dylib] ==> skip value of -lto_library + arg [-dynamic] ==> ignore + arg [-arch] ==> ignore + arg [arm64] ==> ignore + arg [-platform_version] ==> ignore + arg [macos] ==> ignore + arg [14.0.0] ==> ignore + arg [14.2] ==> ignore + arg [-syslibroot] ==> ignore + arg [/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk] ==> ignore + arg [-o] ==> ignore + arg [cmTC_66165] ==> ignore + arg [-search_paths_first] ==> ignore + arg [-headerpad_max_install_names] ==> ignore + arg [-v] ==> ignore + arg [CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o] ==> ignore + arg [-lSystem] ==> lib [System] + arg [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/lib/darwin/libclang_rt.osx.a] ==> lib [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/lib/darwin/libclang_rt.osx.a] + remove lib [System] + remove lib [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/lib/darwin/libclang_rt.osx.a] + implicit libs: [] + implicit objs: [] + implicit dirs: [] + implicit fwks: [] + + +... diff --git a/cmake-build-debug/CMakeFiles/TargetDirectories.txt b/cmake-build-debug/CMakeFiles/TargetDirectories.txt new file mode 100644 index 0000000..43a6cf4 --- /dev/null +++ b/cmake-build-debug/CMakeFiles/TargetDirectories.txt @@ -0,0 +1,3 @@ +/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir +/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/edit_cache.dir +/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/rebuild_cache.dir diff --git a/cmake-build-debug/CMakeFiles/clion-Debug-log.txt b/cmake-build-debug/CMakeFiles/clion-Debug-log.txt new file mode 100644 index 0000000..8ac5c4d --- /dev/null +++ b/cmake-build-debug/CMakeFiles/clion-Debug-log.txt @@ -0,0 +1,10 @@ +/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=/Applications/CLion.app/Contents/bin/ninja/mac/ninja -G Ninja -S /Users/saba/CLionProjects/pmuw_projekt_notebinder -B /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug +-- The C compiler identification is AppleClang 15.0.0.15000100 +-- Detecting C compiler ABI info +-- Detecting C compiler ABI info - done +-- Check for working C compiler: /Library/Developer/CommandLineTools/usr/bin/cc - skipped +-- Detecting C compile features +-- Detecting C compile features - done +-- Configuring done (0.5s) +-- Generating done (0.0s) +-- Build files have been written to: /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug diff --git a/cmake-build-debug/CMakeFiles/clion-environment.txt b/cmake-build-debug/CMakeFiles/clion-environment.txt new file mode 100644 index 0000000..b7d7a44 --- /dev/null +++ b/cmake-build-debug/CMakeFiles/clion-environment.txt @@ -0,0 +1,3 @@ +ToolSet: 1.0 (local)Options: + +Options:-DCMAKE_MAKE_PROGRAM=/Applications/CLion.app/Contents/bin/ninja/mac/ninja \ No newline at end of file diff --git a/cmake-build-debug/CMakeFiles/cmake.check_cache b/cmake-build-debug/CMakeFiles/cmake.check_cache new file mode 100644 index 0000000..3dccd73 --- /dev/null +++ b/cmake-build-debug/CMakeFiles/cmake.check_cache @@ -0,0 +1 @@ +# This file is generated by cmake for dependency checking of the CMakeCache.txt file diff --git a/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o b/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o new file mode 100644 index 0000000000000000000000000000000000000000..d4f2c70953be0c024e5cd4578c85474bcb7f1b00 GIT binary patch literal 3072 zcmb7G-D@0G6hE`Ov)RqYZJJd3h3%@bR3zC=Oli@6BsA5;t{9U@Q$>f_*_(8l`B-*l zlZK==vc*f6=> zGNK+3;(2~Ga76K*kb`uY=MryzD@E}1O2rbIquatmTomtZxnI)~<5sE_4A#1MZt1ka zkx{%`60b+X45p>h5bNRv`BiiyidQcRq7ZNTf8zOzm37zK6BHTI6`9ZS1Mv*kMqa*F za~4detZBuO#!`sBmv}kp%%P6?i1y-qIE|X;ySAv`v@q6o z-TUSteYPruEu6+fgmAr9HY0NrRjTfcz+^3;i$ZU)gSpB=w<2?6I8wY1({xOqbDwWs zX2rFvTI(W_(t?id!2IEASR$p8CG2Jw(Y!ci8dftP`jL`vRQdD z+pWg4=a;j;pUZY`-I?92bm4J}4N^Qi)_r9Avzg~IF_d6jQO3IQu0KX&-TP5~>K-UW z$sWWV&ScOdG3^mmU;I8D*ws@AuGY(ODkYZ~NqV`PzKyZZ~eIv##G;wRxq@J4J2+J{Mf6Gn0eVv|bSZirM{@)?M>1mC29 zc(7s*!Kv)J1U((QxcmxRk6-5gcE(J;0f(BPVSa#fhNU~Rxp`6bP?x#>eSL+#LT+#1 z?d{)JDD?HiGtjs1Dayaah2>T->ZofYvRuSVH08RM zm!BLt?&V+7jh82<`v;MWSDvGYx$)c#Tb~oXrJ8A#dxNKsI5n?m;-hYy!nM$};faai zliK9iYsa*yljFxUjcSf(&N`x;GjZeUtC&Elu6+VysT!zbSo#^_fYHg}QEYYaj`3TD z|D1r>r%?Tadk+*FyQ39uocrzo{QMRM#|If+7OoB+GXQ1^aoNWd#bwNm#Bi}PZ(%SH zzqg!U9ItOe{z36vL9UR6m3K2gethsNBlqd@>)r>qrs10dzXir)OI%+Ze;M2Z2636P zi=R*F;yPv*7qxV8O|y%OUb>(KByU9`v_tthltcilD9Yd2hX{fp7-_>rfh~V<#WFhX z6}L?BM-_E@`yEwHzNl_Z9#?lI&#URL)kl&=wF9d9N2~)m(GWtBeDPpi9^!AHO4Q4H zj!Nk5gv2jXuMdeCl1CshM{%+s0J%@p&o;i%;eS9E>`hJa ztZr(Ge;RgEcd-41_2-1Sq^6kn1aoZoX{3e3_1-Tu; A>;M1& literal 0 HcmV?d00001 diff --git a/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o b/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o new file mode 100644 index 0000000000000000000000000000000000000000..123f3d68a0e8a309efd0c037d7e2a1b57dd2602e GIT binary patch literal 2688 zcmb7GO=u)V6n;H3J(;AllV5S8ml3iW51F2c3Cad{GbGXc$%Z6qc16pcPAAT0rhAy~ z$tLXL24O+LgF%G_4|!-;dGPA})T^&v zb-hz=HMYl|FU&o)A96`)Zz%b310LL*?mk6$C3o3lXCvMZD)N?+!+NN!N9X+)JRDjE zHsZZ4Z;)tG$zK$nf@jf?pH;1v9pPFP$H!zN-W?SkUD+UC=3zP#&nsTGIjj+HR@G3i z!q`40p3JXm*^PKX1KwB1#0xg6N1pel!n>jJ`|W@6Y_Ed60#SFbl-wmDX2#S~DKe@) zMwD|sMZ{a&#Qmxd*YN$q`YV@QhnF;-_hp6mzQVf=Jf>~nsVhH(H-Nd*;BYRDO~D`z zV*f3yV~AV}(JUnQDN82aikV}RNdOc2LMN@+!2A}+&6ceVba^(LZJ7_e>iHJZIq9F52ib`PUIOIq{*(c#;_5?0pprB*@a^~1mEL0oZd_E^f|+Tnq<{5&OvR; z60aRO9Z&PZ^LXu2S!~dm{PB8EQyS1yEKEMU+}!LZ_bZR`{py2ePMnvKZrE^ zrB!M$Po9=tu~wb_V!c#e>X%(c_A6EmEmoMDD_j)wlb6QD!o}HfA&C6Iss%zNO}GReDz3}1WN-;-mQ8u#S=qP&h1!+A4zGZ=_<&OJ^#irSF*GbYdF zHeWaF%)8fK@ZY>M0~?=7=EZfzdvOK!fNus#FHbQa8ZL@K|?lyL{9iOM3& j|3Sox6NFuKxJU3TpiP#k98{_Ua?HyyN8)g6sU7|X+R}e= literal 0 HcmV?d00001 diff --git a/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o b/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o new file mode 100644 index 0000000000000000000000000000000000000000..2a5eeb64be975b43967bf85184ac6cf20620c30d GIT binary patch literal 3816 zcmcInT}&KR6uz^=EITZ0OLqyhCbF7VtA_pIr;ygIP{07)rUcN^Rx_Pl23XjgU3Uix zmRLgjKq65|YBavI4}GACFSRc;ZBk=3F($?|CdR}*G(PD1VA`0Nv^EvLGjoS73yt#N z$=>Ezp;YWdNM_Cq4b;HMdr4~I%Z6LNyG!-|I z5JfSxDZ|n&d!Tc0;IVCMNwX)6Q9K98JOb2GWeJ-lutibgIU}3UM>wG;w}^}V|4@{srIZO-&NSF3DgO-MUlLLW|(Lvg$b z?rre6-|~2Ouo(D}Y#0xNHY1EgdA^>0PToO0TB6npzS*9zzR85HQIq2FF7bH3 z@Obvd>Uu)Fdid3#Sn1%w+fX1hDa7}pT_x}Y=y@RR(_R!3%0DX97H;O50N9kQ++?>N zopM}ybcQY7xLLcro6YtuU8!wBOyANKr6n)3J*M8kZskkagB$I&%Xq;DD2piP{trE0 z+WG+dWO28^9u&ntx74mI=e_KzOJZ;3tIzKk6&YzK~lK%y)dvSTp9`M+NEO!B`U?AZ1M`M;^HF~;udGxv%;lp~2QFcb z7e5!3AL2<(&9Wn^Hk#CQe}6*rYse!1;f#?;>wC+X91iqn5?V6s&lzgg&~#As7FAzB zHCR+b0o7wgDSA?S-s^F1D`@RqlgD80& z4=0mW2n1&d99^Xjom{ubV%Cg}5v;oIV2*dGa;q#ZtgH0$%1T*0&nqqOZL;{;8p11! zU)jV@6wfD%Kdy^c%^dfsvPu^3uB()pqY9)@EsOWpRf^_~jJAx?aD~)%dX{Qb33duq86m1FCr2#Q(*UVNdJ*6dSQ}j<{&-T=NBomoHiwk+hnoVSK*+z_ zWb49BNSQF0`ashQEcjXuUcsCiQ-keMc=u-0V_MwE1v9CMlS+oHaYND5h8DxQs%3+@ zY&@7!6ME2sK%51miC9+6P6s=*NiCVqz^Of*N~!u#6p25OPA7B0{*HsW;2|}BxPLI* zh*#%^##xcM`L4uM>bO=Hn@A*w>dfy279YjdQrwN$GT`1;~0iU5t zNDYv#QabP7M4|7Kk5HCSuA+Q{@+%7EFp2$MZmxUp3S=`rwB4xCfki@h9Q9vh5_s%j z2*o6!afW8+-S>jGJ#qhsGsklaw+F$Eqr8Jc2R|hj^^J0EClEr3MigZxr)XmmMLUpF zG(e(g>v9U(s!(G{$tuB>pH1>Oo`N7e^i&X#D@EIMelWH^SIzgzG;~vHq_Q$sM3SOX zxwA)-dc?^&slq9i&q?z2YnGfvePvXVopa*wAL5RlCq2>b&qENWc%;WEzBDIQ9h52# z9+D*S80^U&$>9_mdK~2#64o7MD`RyXG%&`ZtrkY;V8k6?NBOb^coB$vie9iVLKiYV z5$YCzxSOK$7Dmo;ein%PDmr6fWQy~2=pu`w84Dvx&W{4|sTCcvFmi(PZve44QOXBk zWPtO%K;%?3YGI^{^Bq7;YP8kD$jd+)AMFzwU!#SQZfl%Q^Ke6#Dqy3X^Pbht`8~%k zI9}#>f#VsD!yNZu)kO7n{Z1(|6Q;PO!L23q5XVO zJw8s>__L%Ep#Ln&h-O%4rFkwYx#^str5Mh89FfCJ$;DNDm^%krY^B*&_Sj03tu)$7 U14|mIOucPFff=?ScCzT87TfY-VN) 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 Date: Thu, 25 Jan 2024 11:38:19 +0100 Subject: [PATCH 030/375] adding difficulty options --- src/main/c/Snake/snake_start.c | 24 +++++++++++++++++++++--- src/main/c/main.c | 8 ++++---- 2 files changed, 25 insertions(+), 7 deletions(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 68de781..f6b7996 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -5,7 +5,7 @@ #include #include "snake_start.h" #include "get_character.h" -#define TIME_TURN 0.3 +#define TURN 0.5 #define START_LENGTH 3 #define START_DIRECTION 1 #define START_TILE 8 * 16 + 8 @@ -13,6 +13,7 @@ #pragma region Funktion_heads void main_menu(); void game(); +void options(); Snake initialize_snake(); void get_next_move(double limit, Snake *snake, bool *running); void move_snake(Snake *snake); @@ -23,6 +24,10 @@ unsigned char spawn_fruit(Snake *snake); unsigned char eating_fruit(Snake *snake); #pragma endregion +#pragma region Global +double TIME_TURN = 0.5; +#pragma endregion //Global + void snake_start(){ system("clear"); main_menu(); @@ -36,7 +41,8 @@ void main_menu(){ system("clear"); printf("Waehlen Sie eine Option:\n"); printf("\t1.Start\n"); - printf("\t2.Exit\n"); + printf("\t2.Options\n"); + printf("\t3.Exit\n"); scanf("%d", &option); getchar(); @@ -48,6 +54,9 @@ void main_menu(){ game(); break; case 2: + options(); + break; + case 3: running = false; break; @@ -75,6 +84,14 @@ void game(){ } } +void options(){ + int difficulty = 1; + system("clear"); + printf("Please select a difficulty(1 - 10): "); + scanf("%d", &difficulty); + TIME_TURN = TURN / difficulty;//(11 - difficulty) * TURN / 10; +} + Snake initialize_snake(){ Snake snake; snake.direction = START_DIRECTION; @@ -123,7 +140,7 @@ void move_snake(Snake *snake){ } void draw(Snake *snake, unsigned char fruit){ - printf("%d\n", fruit); + printf("Score:%d Speed:%f\n", snake->length - START_LENGTH, TIME_TURN); printf("+"); for(int i = 0; i < WIDTH; i++){printf("-");} printf("+\n"); @@ -141,6 +158,7 @@ void draw(Snake *snake, unsigned char fruit){ printf("+"); for(int i = 0; i < WIDTH; i++){printf("-");} printf("+\n"); + printf("(Press q to Quit)\n"); } //returns index of segments which is identical to tile; -1 if not found diff --git a/src/main/c/main.c b/src/main/c/main.c index 27cfcae..922c8d4 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -14,9 +14,9 @@ int main(){ system("clear"); printf("Waehlen Sie eine Option:\n"); - printf("\t1.Snake starten\n"); + printf("\t1.Spiel1 starten\n"); printf("\t2.Spiel2 starten\n"); - printf("\t3.Spiel3 starten\n"); + printf("\t3.Snake starten\n"); printf("\t4.Spiel4 starten\n"); printf("\t100.Template starten\n"); printf("\t6.Exit\n"); @@ -26,13 +26,13 @@ int main(){ switch (option){ case 1: - snake_start(); + //start_game1(); break; case 2: //start_game2(); break; case 3: - //start_game3(); + snake_start(); break; case 4: //start_game4(); From 7450135530b2079a2910e6b7a6aeba980f0fab11 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 11:42:09 +0100 Subject: [PATCH 031/375] minesweeper rough structure --- src/main/c/Minesweeper/minesweeper_start.c | 62 ++++++++++++++++++++++ src/main/c/Minesweeper/minesweeper_start.h | 16 ++++++ src/main/c/Snake/snake_start.c | 22 ++++---- src/main/c/Snake/snake_start.h | 8 +-- src/main/c/main.c | 12 ++--- 5 files changed, 98 insertions(+), 22 deletions(-) create mode 100644 src/main/c/Minesweeper/minesweeper_start.c create mode 100644 src/main/c/Minesweeper/minesweeper_start.h diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c new file mode 100644 index 0000000..7b28bd1 --- /dev/null +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -0,0 +1,62 @@ +#include +#include +#define BLOCK 219 +#define FLAG '?' +#define EMPTY ' ' + + +#pragma region Funktion_heads +void main_menu_minesweeper(); +void game_minesweeper(); +void options_minesweeper(); +#pragma endregion + +#pragma region Global +#pragma endregion //Global + + +int minesweeper_start(){ + system("clear"); + main_menu_minesweeper(); +} + +void main_menu_minesweeper(){ + bool running = true; + while (running){ + int option = 0; + + system("clear"); + printf("Waehlen Sie eine Option:\n"); + printf("\t1.Start\n"); + printf("\t2.Options\n"); + printf("\t3.Exit\n"); + + scanf("%d", &option); + getchar(); + + system("clear"); + + switch (option){ + case 1: + game_minesweeper(); + break; + case 2: + options_minesweeper(); + break; + case 3: + running = false; + break; + + default: + break; + } + } +} + +void game_minesweeper(){ + +} + +void options_minesweeper(){ + +} \ No newline at end of file diff --git a/src/main/c/Minesweeper/minesweeper_start.h b/src/main/c/Minesweeper/minesweeper_start.h new file mode 100644 index 0000000..1bb6a7d --- /dev/null +++ b/src/main/c/Minesweeper/minesweeper_start.h @@ -0,0 +1,16 @@ +#ifndef MINESWEEPER_START_H +#define MINESWEEPER_START_H + +typedef struct Minesweeper_Board{ + unsigned int width; + unsigned int height; + char *tiles; + int num_bombs; + unsigned int bombs[]; +}Minesweeper_Board; + + +void minesweeper_start(); + + +#endif // MINESWEEPER_START_H \ No newline at end of file diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index f6b7996..f3ce799 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -5,15 +5,17 @@ #include #include "snake_start.h" #include "get_character.h" +#define WIDTH 15 +#define HEIGHT 15 #define TURN 0.5 #define START_LENGTH 3 #define START_DIRECTION 1 #define START_TILE 8 * 16 + 8 #pragma region Funktion_heads -void main_menu(); -void game(); -void options(); +void main_menu_snake(); +void game_snake(); +void options_snake(); Snake initialize_snake(); void get_next_move(double limit, Snake *snake, bool *running); void move_snake(Snake *snake); @@ -30,10 +32,10 @@ double TIME_TURN = 0.5; void snake_start(){ system("clear"); - main_menu(); + main_menu_snake(); } -void main_menu(){ +void main_menu_snake(){ bool running = true; while (running){ int option = 0; @@ -51,10 +53,10 @@ void main_menu(){ switch (option){ case 1: - game(); + game_snake(); break; case 2: - options(); + options_snake(); break; case 3: running = false; @@ -66,7 +68,7 @@ void main_menu(){ } } -void game(){ +void game_snake(){ Snake snake = initialize_snake(); bool running = true; clock_t t = clock(); @@ -84,12 +86,12 @@ void game(){ } } -void options(){ +void options_snake(){ int difficulty = 1; system("clear"); printf("Please select a difficulty(1 - 10): "); scanf("%d", &difficulty); - TIME_TURN = TURN / difficulty;//(11 - difficulty) * TURN / 10; + TIME_TURN = TURN / difficulty; } Snake initialize_snake(){ diff --git a/src/main/c/Snake/snake_start.h b/src/main/c/Snake/snake_start.h index 1634146..359f548 100644 --- a/src/main/c/Snake/snake_start.h +++ b/src/main/c/Snake/snake_start.h @@ -1,14 +1,10 @@ #ifndef SNAKE_START_H #define SNAKE_START_H -#define HEIGHT 15 -#define WIDTH 15 -#define AREA HEIGHT * WIDTH - -typedef struct{ +typedef struct Snake{ signed char direction; char length; - unsigned char segments[AREA]; + unsigned char segments[225]; }Snake; diff --git a/src/main/c/main.c b/src/main/c/main.c index 922c8d4..11be6b7 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -2,8 +2,8 @@ #include #include -#include "Template/game100.h" #include "Snake/snake_start.h" +#include "Minesweeper/minesweeper_start.h" int main(){ bool running = true; @@ -18,8 +18,8 @@ int main(){ printf("\t2.Spiel2 starten\n"); printf("\t3.Snake starten\n"); printf("\t4.Spiel4 starten\n"); - printf("\t100.Template starten\n"); - printf("\t6.Exit\n"); + printf("\t7.Minesweeper starten\n"); + printf("\t10.Exit\n"); scanf("%d", &option); getchar(); @@ -37,10 +37,10 @@ int main(){ case 4: //start_game4(); break; - case 100: - start_game100(); + case 7: + minesweeper_start(); break; - case 6: + case 10: system("clear"); running = false; break; From 7f81bd04dd2cccac2e941e44a5a8e1102681ca06 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 12:31:57 +0100 Subject: [PATCH 032/375] added game options --- src/main/c/Minesweeper/minesweeper_start.c | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 7b28bd1..2737d4d 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -1,8 +1,16 @@ #include #include +#pragma region defines #define BLOCK 219 #define FLAG '?' #define EMPTY ' ' +#define SMALL 10 +#define MIDDLE 15 +#define LARGE 20 +#define EASY 7 +#define NORMAL 5 +#define HARD 3 +#pragma endregion #pragma region Funktion_heads @@ -12,6 +20,9 @@ void options_minesweeper(); #pragma endregion #pragma region Global +unsigned int width = MIDDLE; +unsigned int height = MIDDLE; +int num_bombs = MIDDLE * MIDDLE / NORMAL; #pragma endregion //Global @@ -58,5 +69,54 @@ void game_minesweeper(){ } void options_minesweeper(){ + bool running = true; + while (running){ + int option = 0; + + system("clear"); + printf("Waehlen Sie eine Option:\n"); + printf("\t1.Schwierigkeit\t\t%s\n", num_bombs < 2 * width * height / (NORMAL + EASY) ? "Einfach" : num_bombs < 2 * width * height / (NORMAL + HARD) ? "Normal" : "Schwer"); + printf("\t2.Groesse\t\t%s\n", width * height < MIDDLE * SMALL ? "Klein" : width * height < MIDDLE * LARGE ? "Mittel" : "Gross"); + printf("\t3.Custom\n"); + printf("\t4.Exit\n"); + + scanf("%d", &option); + getchar(); + switch (option){ + case 1: + printf("Bitte neu Schwierigkeit eingeben (1 - 3):"); + scanf("%d", &num_bombs); + getchar(); + num_bombs = num_bombs == 1 ? EASY : num_bombs == 2 ? NORMAL : HARD; + num_bombs = width * height / num_bombs; + break; + case 2: + num_bombs = num_bombs < width * height / NORMAL ? EASY : num_bombs == width * height / NORMAL ? NORMAL : HARD; + printf("Bitte neu Groesse eingeben (1 - 3):"); + scanf("%d", &width); + getchar(); + width = width == 1 ? SMALL : width == 2 ? MIDDLE : LARGE; + height = width; + num_bombs = width * height / num_bombs; + break; + case 3: + printf("Bitte Breite des Spielfeld eingeben:"); + scanf("%d", &width); + getchar(); + printf("Bitte Hoehe des Spielfeld eingeben:"); + scanf("%d", &height); + getchar(); + printf("Bitte Anzahl der Bomben eingeben:"); + scanf("%d", &num_bombs); + getchar(); + break; + case 4: + running = false; + break; + + default: + break; + } + } } \ No newline at end of file From c1e8a99e7a7b9a7895f0ea396466170a5d49947d Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 12:55:28 +0100 Subject: [PATCH 033/375] initialize minesweeper --- src/main/c/Minesweeper/minesweeper_start.c | 25 ++++++++++++++++++++-- src/main/c/Minesweeper/minesweeper_start.h | 2 +- src/main/c/Snake/snake_start.c | 6 +++--- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 2737d4d..3f46eec 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -1,5 +1,7 @@ #include +#include #include +#include "minesweeper_start.h" #pragma region defines #define BLOCK 219 #define FLAG '?' @@ -17,6 +19,8 @@ void main_menu_minesweeper(); void game_minesweeper(); void options_minesweeper(); +Minesweeper_Board initialize_minesweeper(); +void draw_minesweeper(); #pragma endregion #pragma region Global @@ -26,7 +30,7 @@ int num_bombs = MIDDLE * MIDDLE / NORMAL; #pragma endregion //Global -int minesweeper_start(){ +void minesweeper_start(){ system("clear"); main_menu_minesweeper(); } @@ -65,7 +69,8 @@ void main_menu_minesweeper(){ } void game_minesweeper(){ - + Minesweeper_Board board = initialize_minesweeper(); + draw_minesweeper(); } void options_minesweeper(){ @@ -119,4 +124,20 @@ void options_minesweeper(){ break; } } +} + +Minesweeper_Board initialize_minesweeper(){ + Minesweeper_Board board; + board.width = width; + board.height = height; + char *tiles = (char*) malloc(width * height * sizeof(char)); + for(int i = 0; i < width * height; i++){tiles[i] = FLAG;} + board.tiles = tiles; + board.num_bombs = num_bombs; + + return board; +} + +void draw_minesweeper(){ + } \ No newline at end of file diff --git a/src/main/c/Minesweeper/minesweeper_start.h b/src/main/c/Minesweeper/minesweeper_start.h index 1bb6a7d..bf0f21a 100644 --- a/src/main/c/Minesweeper/minesweeper_start.h +++ b/src/main/c/Minesweeper/minesweeper_start.h @@ -6,7 +6,7 @@ typedef struct Minesweeper_Board{ unsigned int height; char *tiles; int num_bombs; - unsigned int bombs[]; + int *bombs; }Minesweeper_Board; diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index f3ce799..26c83c4 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -19,7 +19,7 @@ void options_snake(); Snake initialize_snake(); void get_next_move(double limit, Snake *snake, bool *running); void move_snake(Snake *snake); -void draw(Snake *snake, unsigned char fruit); +void draw_snake(Snake *snake, unsigned char fruit); int part_of_snake(Snake *snake, unsigned char tile); bool check_if_dead(Snake *snake); unsigned char spawn_fruit(Snake *snake); @@ -76,7 +76,7 @@ void game_snake(){ while (running){ system("clear"); - draw(&snake, fruit); + draw_snake(&snake, fruit); if(check_if_dead(&snake)){break;} t = clock() - t; get_next_move(TIME_TURN - (double)t / CLOCKS_PER_SEC, &snake, &running); @@ -141,7 +141,7 @@ void move_snake(Snake *snake){ snake->segments[0] += snake->direction; } -void draw(Snake *snake, unsigned char fruit){ +void draw_snake(Snake *snake, unsigned char fruit){ printf("Score:%d Speed:%f\n", snake->length - START_LENGTH, TIME_TURN); printf("+"); for(int i = 0; i < WIDTH; i++){printf("-");} From e1afeb3974b1a2fc4b4a8a254bf091d36e6621f4 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 13:23:22 +0100 Subject: [PATCH 034/375] draw minesweeper --- src/main/c/Minesweeper/minesweeper_start.c | 46 ++++++++++++++++------ 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 3f46eec..8dcc78f 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -3,7 +3,7 @@ #include #include "minesweeper_start.h" #pragma region defines -#define BLOCK 219 +#define BLOCK '#' #define FLAG '?' #define EMPTY ' ' #define SMALL 10 @@ -20,7 +20,7 @@ void main_menu_minesweeper(); void game_minesweeper(); void options_minesweeper(); Minesweeper_Board initialize_minesweeper(); -void draw_minesweeper(); +void draw_minesweeper(Minesweeper_Board board); #pragma endregion #pragma region Global @@ -69,8 +69,15 @@ void main_menu_minesweeper(){ } void game_minesweeper(){ - Minesweeper_Board board = initialize_minesweeper(); - draw_minesweeper(); + bool running = true; + int q = 0; + while (running){ + Minesweeper_Board board = initialize_minesweeper(); + draw_minesweeper(board); + + scanf("%d", &q); + if (q == 1){break;} + } } void options_minesweeper(){ @@ -90,7 +97,7 @@ void options_minesweeper(){ switch (option){ case 1: - printf("Bitte neu Schwierigkeit eingeben (1 - 3):"); + printf("Bitte neu Schwierigkeit eingeben (1 - 3): "); scanf("%d", &num_bombs); getchar(); num_bombs = num_bombs == 1 ? EASY : num_bombs == 2 ? NORMAL : HARD; @@ -98,7 +105,7 @@ void options_minesweeper(){ break; case 2: num_bombs = num_bombs < width * height / NORMAL ? EASY : num_bombs == width * height / NORMAL ? NORMAL : HARD; - printf("Bitte neu Groesse eingeben (1 - 3):"); + printf("Bitte neu Groesse eingeben (1 - 3): "); scanf("%d", &width); getchar(); width = width == 1 ? SMALL : width == 2 ? MIDDLE : LARGE; @@ -106,13 +113,13 @@ void options_minesweeper(){ num_bombs = width * height / num_bombs; break; case 3: - printf("Bitte Breite des Spielfeld eingeben:"); + printf("Bitte Breite des Spielfeld eingeben: "); scanf("%d", &width); getchar(); - printf("Bitte Hoehe des Spielfeld eingeben:"); + printf("Bitte Hoehe des Spielfeld eingeben: "); scanf("%d", &height); getchar(); - printf("Bitte Anzahl der Bomben eingeben:"); + printf("Bitte Anzahl der Bomben eingeben: "); scanf("%d", &num_bombs); getchar(); break; @@ -131,13 +138,28 @@ Minesweeper_Board initialize_minesweeper(){ board.width = width; board.height = height; char *tiles = (char*) malloc(width * height * sizeof(char)); - for(int i = 0; i < width * height; i++){tiles[i] = FLAG;} + for(int i = 0; i < width * height; i++){tiles[i] = BLOCK;} board.tiles = tiles; board.num_bombs = num_bombs; return board; } -void draw_minesweeper(){ - +void draw_minesweeper(Minesweeper_Board board){ + printf(" "); + for(int i = 0; i < board.width; i++){printf("%d", i / 10);} + printf("\n "); + for(int i = 0; i < board.width; i++){printf("%d", i % 10);} + printf("\n +"); + for(int i = 0; i < board.width; i++){printf("-");} + printf("+\n"); + for(int i = 0; i < board.height; i++){ + printf("%d", i / 10); + printf("%d|", i % 10); + for(int j = 0; j < board.width; j++){printf("%c", board.tiles[i * width + j]);} + printf("|\n"); + } + printf(" +"); + for(int i = 0; i < board.width; i++){printf("-");} + printf("+\n"); } \ No newline at end of file From 50608d06187f4d860ba282586443197adcafcfa6 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 14:00:13 +0100 Subject: [PATCH 035/375] placing bombs --- src/main/c/Minesweeper/minesweeper_start.c | 38 ++++++++++++++++++---- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 8dcc78f..298f61d 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -1,6 +1,7 @@ #include #include #include +#include #include "minesweeper_start.h" #pragma region defines #define BLOCK '#' @@ -20,6 +21,8 @@ void main_menu_minesweeper(); void game_minesweeper(); void options_minesweeper(); Minesweeper_Board initialize_minesweeper(); +void place_bombs(Minesweeper_Board *board); +bool bomb_in_array(int array[], int bomb, int length); void draw_minesweeper(Minesweeper_Board board); #pragma endregion @@ -70,13 +73,15 @@ void main_menu_minesweeper(){ void game_minesweeper(){ bool running = true; - int q = 0; + int x, y, t; while (running){ Minesweeper_Board board = initialize_minesweeper(); draw_minesweeper(board); - scanf("%d", &q); - if (q == 1){break;} + printf("Next turn (x, y, t(0 = open, 1 = flag)): "); + scanf("%d %d %d", &x, &y, &t); + getchar(); + if (t == 2){break;} } } @@ -137,14 +142,33 @@ Minesweeper_Board initialize_minesweeper(){ Minesweeper_Board board; board.width = width; board.height = height; - char *tiles = (char*) malloc(width * height * sizeof(char)); - for(int i = 0; i < width * height; i++){tiles[i] = BLOCK;} - board.tiles = tiles; + board.tiles = (char*) malloc(width * height * sizeof(char)); + for(int i = 0; i < width * height; i++){board.tiles[i] = BLOCK;} board.num_bombs = num_bombs; - + place_bombs(&board); return board; } +void place_bombs(Minesweeper_Board *board){ + board->bombs = (int*) malloc(board->num_bombs * sizeof(int)); + srand(time(NULL)); + int r; + for(int i = 0; i < board->num_bombs; i++){ + while (1){ + r = rand() % (board->width * board->height); + if(!bomb_in_array(board->bombs, r, board->num_bombs)){break;} + } + board->bombs[i] = r; + } +} + +bool bomb_in_array(int array[], int bomb, int length){ + for(int i = 0; i < length; i++){ + if(array[i] == bomb){return true;} + } + return false; +} + void draw_minesweeper(Minesweeper_Board board){ printf(" "); for(int i = 0; i < board.width; i++){printf("%d", i / 10);} From a910d7d7098296cac7b1db991be35a40942d672f Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 14:16:10 +0100 Subject: [PATCH 036/375] marking and unmarking flags --- src/main/c/Minesweeper/minesweeper_start.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 298f61d..fd58cfe 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -74,13 +74,17 @@ void main_menu_minesweeper(){ void game_minesweeper(){ bool running = true; int x, y, t; + Minesweeper_Board board = initialize_minesweeper(); while (running){ - Minesweeper_Board board = initialize_minesweeper(); + system("clear"); draw_minesweeper(board); printf("Next turn (x, y, t(0 = open, 1 = flag)): "); scanf("%d %d %d", &x, &y, &t); getchar(); + if(t == 1){board.tiles[x + y * board.width] = board.tiles[x + y * board.width] == EMPTY ? EMPTY : board.tiles[x + y * board.width] == FLAG ? BLOCK : FLAG;} + + if (t == 2){break;} } } From c49cdc2e37aa5551297c61fae1ba8919ed51692c Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 14:26:04 +0100 Subject: [PATCH 037/375] refactoring: placing bombs calculating marking tile --- src/main/c/Minesweeper/minesweeper_start.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index fd58cfe..85dc9d1 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -75,6 +75,8 @@ void game_minesweeper(){ bool running = true; int x, y, t; Minesweeper_Board board = initialize_minesweeper(); + place_bombs(&board); + while (running){ system("clear"); draw_minesweeper(board); @@ -82,9 +84,10 @@ void game_minesweeper(){ printf("Next turn (x, y, t(0 = open, 1 = flag)): "); scanf("%d %d %d", &x, &y, &t); getchar(); - if(t == 1){board.tiles[x + y * board.width] = board.tiles[x + y * board.width] == EMPTY ? EMPTY : board.tiles[x + y * board.width] == FLAG ? BLOCK : FLAG;} - - + if(x < board.width && y < board.height){ + x = x + y * board.width; + if(t == 1){board.tiles[x] = board.tiles[x] == FLAG ? BLOCK : board.tiles[x] == BLOCK ? FLAG : board.tiles[x];} + } if (t == 2){break;} } } @@ -149,12 +152,12 @@ Minesweeper_Board initialize_minesweeper(){ board.tiles = (char*) malloc(width * height * sizeof(char)); for(int i = 0; i < width * height; i++){board.tiles[i] = BLOCK;} board.num_bombs = num_bombs; - place_bombs(&board); + board.bombs = (int*) malloc(board.num_bombs * sizeof(int)); + for(int i = 0; i < num_bombs; i++){board.bombs[i] = -1;} return board; } void place_bombs(Minesweeper_Board *board){ - board->bombs = (int*) malloc(board->num_bombs * sizeof(int)); srand(time(NULL)); int r; for(int i = 0; i < board->num_bombs; i++){ From 063eb9ebe040e53d5f170ffd62089f2e847ec2a6 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 14:39:53 +0100 Subject: [PATCH 038/375] Test test if tile has a bomb --- src/main/c/Minesweeper/minesweeper_start.h | 1 + test/Minesweeper/test_bomb_in_array.c | 25 ++++++++++++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 test/Minesweeper/test_bomb_in_array.c diff --git a/src/main/c/Minesweeper/minesweeper_start.h b/src/main/c/Minesweeper/minesweeper_start.h index bf0f21a..a73d944 100644 --- a/src/main/c/Minesweeper/minesweeper_start.h +++ b/src/main/c/Minesweeper/minesweeper_start.h @@ -11,6 +11,7 @@ typedef struct Minesweeper_Board{ void minesweeper_start(); +bool bomb_in_array(int array[], int bomb, int length); #endif // MINESWEEPER_START_H \ No newline at end of file diff --git a/test/Minesweeper/test_bomb_in_array.c b/test/Minesweeper/test_bomb_in_array.c new file mode 100644 index 0000000..710791b --- /dev/null +++ b/test/Minesweeper/test_bomb_in_array.c @@ -0,0 +1,25 @@ +#ifdef TEST +#include "unity.h" +#include +#include "../../src/main/c/Minesweeper/minesweeper_start.h" + + +void setUp(void){} +void tearDown(void){} + + +void test_bomb_in_array(void){ + /* arrange */ + bool result; + int array[] = {5, 9, 42, 6, 87, 95, 202, 13, 45 ,78}; + int bomb = 42; + int length = 10; + + /* act */ + result = bomb_in_array(array, bomb, length); + + /* assert */ + TEST_ASSERT_TRUE(result);//head collides with body +} + +#endif // TEST \ No newline at end of file From 72f8a44cc1d2c5ab3cefe1fa2ab0f679abc44671 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 15:59:03 +0100 Subject: [PATCH 039/375] Test if tile has no bomb --- src/main/c/Minesweeper/minesweeper_start.c | 9 ++++++++- test/Minesweeper/test_bomb_in_array.c | 15 +++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 85dc9d1..50bb461 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -24,6 +24,7 @@ Minesweeper_Board initialize_minesweeper(); void place_bombs(Minesweeper_Board *board); bool bomb_in_array(int array[], int bomb, int length); void draw_minesweeper(Minesweeper_Board board); +int open_tile(Minesweeper_Board *board, int tile); #pragma endregion #pragma region Global @@ -84,8 +85,9 @@ void game_minesweeper(){ printf("Next turn (x, y, t(0 = open, 1 = flag)): "); scanf("%d %d %d", &x, &y, &t); getchar(); - if(x < board.width && y < board.height){ + if(x < board.width && x > -1 && y < board.height && y > -1){ x = x + y * board.width; + if(t == 0){running = open_tile(&board, x);} if(t == 1){board.tiles[x] = board.tiles[x] == FLAG ? BLOCK : board.tiles[x] == BLOCK ? FLAG : board.tiles[x];} } if (t == 2){break;} @@ -193,4 +195,9 @@ void draw_minesweeper(Minesweeper_Board board){ printf(" +"); for(int i = 0; i < board.width; i++){printf("-");} printf("+\n"); +} + +int open_tile(Minesweeper_Board *board, int tile){ + if(bomb_in_array(board->bombs, tile, board->num_bombs)){return -1;} + } \ No newline at end of file diff --git a/test/Minesweeper/test_bomb_in_array.c b/test/Minesweeper/test_bomb_in_array.c index 710791b..2e97c56 100644 --- a/test/Minesweeper/test_bomb_in_array.c +++ b/test/Minesweeper/test_bomb_in_array.c @@ -22,4 +22,19 @@ void test_bomb_in_array(void){ TEST_ASSERT_TRUE(result);//head collides with body } + +void test_bomb_not_in_array(void){ + /* arrange */ + bool result; + int array[] = {5, 9, 42, 6, 87, 95, 202, 13, 45 ,78}; + int bomb = 0; + int length = 10; + + /* act */ + result = bomb_in_array(array, bomb, length); + + /* assert */ + TEST_ASSERT_FALSE(result);//head collides with body +} + #endif // TEST \ No newline at end of file From 2a8cefa322d5359746f4591563a20c269b933c66 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 17:30:10 +0100 Subject: [PATCH 040/375] Test no bombs araound tile --- src/main/c/Minesweeper/minesweeper_start.c | 19 +++++++++++++++++ src/main/c/Minesweeper/minesweeper_start.h | 2 ++ test/Minesweeper/test_number_of_bombs.c | 24 ++++++++++++++++++++++ 3 files changed, 45 insertions(+) create mode 100644 test/Minesweeper/test_number_of_bombs.c diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 50bb461..43a1eed 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -25,6 +25,7 @@ void place_bombs(Minesweeper_Board *board); bool bomb_in_array(int array[], int bomb, int length); void draw_minesweeper(Minesweeper_Board board); int open_tile(Minesweeper_Board *board, int tile); +int number_of_bombs(Minesweeper_Board *board, int tile); #pragma endregion #pragma region Global @@ -199,5 +200,23 @@ void draw_minesweeper(Minesweeper_Board board){ int open_tile(Minesweeper_Board *board, int tile){ if(bomb_in_array(board->bombs, tile, board->num_bombs)){return -1;} + int num = number_of_bombs(board, tile); +} + +int number_of_bombs(Minesweeper_Board *board, int tile){ + int sum = 0; + for(int i = 0; i < 8; i++){ + int check_tile = tile; + if(i < 3 && tile % board->width == 0){continue;} + else{check_tile - 1;} + if(i > 4 && tile % board->width + 1 == board->width){continue;} + else{check_tile + 1;} + if(i % 3 == 0 && i != 0 && tile / board->width == 0){continue;} + else{check_tile - board->width;} + if(i % 3 == 1 && tile / board->width + 1 == height){continue;} + else{check_tile + board->width;} + if(bomb_in_array(board->bombs, check_tile, board->num_bombs)){sum++;} + } + return sum; } \ No newline at end of file diff --git a/src/main/c/Minesweeper/minesweeper_start.h b/src/main/c/Minesweeper/minesweeper_start.h index a73d944..c62977b 100644 --- a/src/main/c/Minesweeper/minesweeper_start.h +++ b/src/main/c/Minesweeper/minesweeper_start.h @@ -11,7 +11,9 @@ typedef struct Minesweeper_Board{ void minesweeper_start(); +Minesweeper_Board initialize_minesweeper(); bool bomb_in_array(int array[], int bomb, int length); +int number_of_bombs(Minesweeper_Board *board, int tile); #endif // MINESWEEPER_START_H \ No newline at end of file diff --git a/test/Minesweeper/test_number_of_bombs.c b/test/Minesweeper/test_number_of_bombs.c new file mode 100644 index 0000000..3f899f7 --- /dev/null +++ b/test/Minesweeper/test_number_of_bombs.c @@ -0,0 +1,24 @@ +#ifdef TEST +#include "unity.h" +#include +#include "../../src/main/c/Minesweeper/minesweeper_start.h" + + +void setUp(void){} +void tearDown(void){} + + +void test_no_bombs_placed_around_tile(void){ + /* arrange */ + int result; + Minesweeper_Board board = initialize_minesweeper(); + int tile = 1 + board.width * 1; + + /* act */ + result = number_of_bombs(&board, tile); + + /* assert */ + TEST_ASSERT_EQUAL_INT(0, result);//no bombs placed +} + +#endif // TEST \ No newline at end of file From 6e0233c784d56d4cdfe10d3120ee0159d572a3c0 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 17:39:25 +0100 Subject: [PATCH 041/375] Test bombs near but not around tile --- test/Minesweeper/test_bomb_in_array.c | 4 ++-- test/Minesweeper/test_number_of_bombs.c | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/test/Minesweeper/test_bomb_in_array.c b/test/Minesweeper/test_bomb_in_array.c index 2e97c56..8aae16d 100644 --- a/test/Minesweeper/test_bomb_in_array.c +++ b/test/Minesweeper/test_bomb_in_array.c @@ -19,7 +19,7 @@ void test_bomb_in_array(void){ result = bomb_in_array(array, bomb, length); /* assert */ - TEST_ASSERT_TRUE(result);//head collides with body + TEST_ASSERT_TRUE(result); } @@ -34,7 +34,7 @@ void test_bomb_not_in_array(void){ result = bomb_in_array(array, bomb, length); /* assert */ - TEST_ASSERT_FALSE(result);//head collides with body + TEST_ASSERT_FALSE(result); } #endif // TEST \ No newline at end of file diff --git a/test/Minesweeper/test_number_of_bombs.c b/test/Minesweeper/test_number_of_bombs.c index 3f899f7..e449f33 100644 --- a/test/Minesweeper/test_number_of_bombs.c +++ b/test/Minesweeper/test_number_of_bombs.c @@ -21,4 +21,21 @@ void test_no_bombs_placed_around_tile(void){ TEST_ASSERT_EQUAL_INT(0, result);//no bombs placed } +void test_searching_for_bombs_on_correct_tiles(void){ + /* arrange */ + int result; + Minesweeper_Board board = initialize_minesweeper(); + int tile = 0 + board.width * 1; + board.bombs[0] = 0 + board.width * 2; + board.bombs[0] = 2 + board.width * 1; + board.bombs[0] = board.width - 1 + board.width * 1; + board.bombs[0] = 0 + board.width * (board.height - 1); + + /* act */ + result = number_of_bombs(&board, tile); + + /* assert */ + TEST_ASSERT_EQUAL_INT(0, result);//no bombs placed around tile +} + #endif // TEST \ No newline at end of file From 79c871c7ff3ead2265e8f9a390d8f829e5924bb1 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 18:13:20 +0100 Subject: [PATCH 042/375] Test 2 bombs around tile --- src/main/c/Minesweeper/minesweeper_start.c | 16 ++++++------- test/Minesweeper/test_number_of_bombs.c | 27 ++++++++++++++++++---- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 43a1eed..98eb0eb 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -208,14 +208,14 @@ int number_of_bombs(Minesweeper_Board *board, int tile){ int sum = 0; for(int i = 0; i < 8; i++){ int check_tile = tile; - if(i < 3 && tile % board->width == 0){continue;} - else{check_tile - 1;} - if(i > 4 && tile % board->width + 1 == board->width){continue;} - else{check_tile + 1;} - if(i % 3 == 0 && i != 0 && tile / board->width == 0){continue;} - else{check_tile - board->width;} - if(i % 3 == 1 && tile / board->width + 1 == height){continue;} - else{check_tile + board->width;} + if(i < 3){if(tile % board->width == 0){continue;} + else{check_tile -= 1;}} + if(i > 4){if(tile % board->width + 1 == board->width){continue;} + else{check_tile += 1;}} + if(i % 3 == 0){if(i != 0 && tile / board->width == 0){continue;} + else{check_tile -= board->width;}} + if(i % 3 == 1){if(tile / board->width + 1 == height){continue;} + else{check_tile += board->width;}} if(bomb_in_array(board->bombs, check_tile, board->num_bombs)){sum++;} } return sum; diff --git a/test/Minesweeper/test_number_of_bombs.c b/test/Minesweeper/test_number_of_bombs.c index e449f33..047c475 100644 --- a/test/Minesweeper/test_number_of_bombs.c +++ b/test/Minesweeper/test_number_of_bombs.c @@ -12,7 +12,7 @@ void test_no_bombs_placed_around_tile(void){ /* arrange */ int result; Minesweeper_Board board = initialize_minesweeper(); - int tile = 1 + board.width * 1; + int tile = 0 + board.width * 1; /* act */ result = number_of_bombs(&board, tile); @@ -26,10 +26,10 @@ void test_searching_for_bombs_on_correct_tiles(void){ int result; Minesweeper_Board board = initialize_minesweeper(); int tile = 0 + board.width * 1; - board.bombs[0] = 0 + board.width * 2; - board.bombs[0] = 2 + board.width * 1; - board.bombs[0] = board.width - 1 + board.width * 1; - board.bombs[0] = 0 + board.width * (board.height - 1); + board.bombs[0] = 0 + board.width * 3; + board.bombs[1] = 2 + board.width * 1; + board.bombs[2] = board.width - 1 + board.width * 1; + board.bombs[3] = 0 + board.width * (board.height - 1); /* act */ result = number_of_bombs(&board, tile); @@ -38,4 +38,21 @@ void test_searching_for_bombs_on_correct_tiles(void){ TEST_ASSERT_EQUAL_INT(0, result);//no bombs placed around tile } +void test_2_bombs_around_tile(void){ + /* arrange */ + int result; + Minesweeper_Board board = initialize_minesweeper(); + int tile = 0 + board.width * 1; + board.bombs[0] = 0 + board.width * 2; + board.bombs[1] = 1 + board.width * 1; + board.bombs[2] = board.width - 1 + board.width * 1; + board.bombs[3] = 0 + board.width * (board.height - 1); + + /* act */ + result = number_of_bombs(&board, tile); + + /* assert */ + TEST_ASSERT_EQUAL_INT(2, result);//2 bombs placed around tile +} + #endif // TEST \ No newline at end of file From 616ffae6b48f45dc917d61e4962d6a54fc43594a Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 18:21:30 +0100 Subject: [PATCH 043/375] Test 5 or 8 bombs around tile --- test/Minesweeper/test_number_of_bombs.c | 39 +++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/test/Minesweeper/test_number_of_bombs.c b/test/Minesweeper/test_number_of_bombs.c index 047c475..6a0dd4f 100644 --- a/test/Minesweeper/test_number_of_bombs.c +++ b/test/Minesweeper/test_number_of_bombs.c @@ -55,4 +55,43 @@ void test_2_bombs_around_tile(void){ TEST_ASSERT_EQUAL_INT(2, result);//2 bombs placed around tile } +void test_5_bombs_around_tile(void){ + /* arrange */ + int result; + Minesweeper_Board board = initialize_minesweeper(); + int tile = 1 + board.width * 0; + board.bombs[0] = 0 + board.width * 0; + board.bombs[1] = 2 + board.width * 0; + board.bombs[2] = 0 + board.width * 1; + board.bombs[3] = 1 + board.width * 1; + board.bombs[4] = 2 + board.width * 1; + + /* act */ + result = number_of_bombs(&board, tile); + + /* assert */ + TEST_ASSERT_EQUAL_INT(5, result);//5 bombs placed around tile +} + +void test_8_bombs_around_tile(void){ + /* arrange */ + int result; + Minesweeper_Board board = initialize_minesweeper(); + int tile = 7 + board.width * 7; + board.bombs[0] = 6 + board.width * 6; + board.bombs[1] = 7 + board.width * 6; + board.bombs[2] = 8 + board.width * 6; + board.bombs[3] = 6 + board.width * 7; + board.bombs[4] = 8 + board.width * 7; + board.bombs[5] = 6 + board.width * 8; + board.bombs[6] = 7 + board.width * 8; + board.bombs[7] = 8 + board.width * 8; + + /* act */ + result = number_of_bombs(&board, tile); + + /* assert */ + TEST_ASSERT_EQUAL_INT(8, result);//2 bombs placed around tile +} + #endif // TEST \ No newline at end of file From a004b66a33412dcc9e49ea169d08116a428374e3 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 20:22:53 +0100 Subject: [PATCH 044/375] Minesweeper is playable --- src/main/c/Minesweeper/minesweeper_start.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 98eb0eb..48bf4d9 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -88,7 +88,12 @@ void game_minesweeper(){ getchar(); if(x < board.width && x > -1 && y < board.height && y > -1){ x = x + y * board.width; - if(t == 0){running = open_tile(&board, x);} + if(t == 0){ + int bombs = open_tile(&board, x); + if(bombs == -1){running = false;} + else if(bombs == 0){board.tiles[x] = EMPTY;} + else{board.tiles[x] = bombs + 48;} + } if(t == 1){board.tiles[x] = board.tiles[x] == FLAG ? BLOCK : board.tiles[x] == BLOCK ? FLAG : board.tiles[x];} } if (t == 2){break;} @@ -201,7 +206,7 @@ void draw_minesweeper(Minesweeper_Board board){ int open_tile(Minesweeper_Board *board, int tile){ if(bomb_in_array(board->bombs, tile, board->num_bombs)){return -1;} int num = number_of_bombs(board, tile); - + if(1){return num;} } int number_of_bombs(Minesweeper_Board *board, int tile){ From 2367550137e9c3c30e57e53bb00d4d36e6bba6b8 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 21:03:38 +0100 Subject: [PATCH 045/375] wip batch opening --- src/main/c/Minesweeper/minesweeper_start.c | 54 ++++++++++++++++------ src/main/c/Minesweeper/minesweeper_start.h | 5 +- 2 files changed, 44 insertions(+), 15 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 48bf4d9..a16a24b 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -22,10 +22,12 @@ void game_minesweeper(); void options_minesweeper(); Minesweeper_Board initialize_minesweeper(); void place_bombs(Minesweeper_Board *board); -bool bomb_in_array(int array[], int bomb, int length); -void draw_minesweeper(Minesweeper_Board board); +bool bomb_in_array(int *array, int bomb, int length); +bool array_contains_value(int *array, int value, int length); +void draw_minesweeper(Minesweeper_Board *board); int open_tile(Minesweeper_Board *board, int tile); int number_of_bombs(Minesweeper_Board *board, int tile); +void open_empty_space(Minesweeper_Board *board, int tile, int index); #pragma endregion #pragma region Global @@ -77,11 +79,12 @@ void game_minesweeper(){ bool running = true; int x, y, t; Minesweeper_Board board = initialize_minesweeper(); + place_bombs(&board); while (running){ system("clear"); - draw_minesweeper(board); + draw_minesweeper(&board); printf("Next turn (x, y, t(0 = open, 1 = flag)): "); scanf("%d %d %d", &x, &y, &t); @@ -91,7 +94,7 @@ void game_minesweeper(){ if(t == 0){ int bombs = open_tile(&board, x); if(bombs == -1){running = false;} - else if(bombs == 0){board.tiles[x] = EMPTY;} + else if(bombs == 0){open_empty_space(&board, x, 0);} else{board.tiles[x] = bombs + 48;} } if(t == 1){board.tiles[x] = board.tiles[x] == FLAG ? BLOCK : board.tiles[x] == BLOCK ? FLAG : board.tiles[x];} @@ -157,8 +160,10 @@ Minesweeper_Board initialize_minesweeper(){ Minesweeper_Board board; board.width = width; board.height = height; - board.tiles = (char*) malloc(width * height * sizeof(char)); + board.tiles = (int*) malloc(width * height * sizeof(int)); for(int i = 0; i < width * height; i++){board.tiles[i] = BLOCK;} + board.marked = (int*) malloc(width * height * sizeof(int)); + for(int i = 0; i < width * height; i++){board.tiles[i] = 0;} board.num_bombs = num_bombs; board.bombs = (int*) malloc(board.num_bombs * sizeof(int)); for(int i = 0; i < num_bombs; i++){board.bombs[i] = -1;} @@ -177,29 +182,33 @@ void place_bombs(Minesweeper_Board *board){ } } -bool bomb_in_array(int array[], int bomb, int length){ +bool bomb_in_array(int *array, int bomb, int length){ for(int i = 0; i < length; i++){ if(array[i] == bomb){return true;} } return false; } -void draw_minesweeper(Minesweeper_Board board){ +bool array_contains_value(int *array, int value, int length){ + +} + +void draw_minesweeper(Minesweeper_Board *board){ printf(" "); - for(int i = 0; i < board.width; i++){printf("%d", i / 10);} + for(int i = 0; i < board->width; i++){printf("%d", i / 10);} printf("\n "); - for(int i = 0; i < board.width; i++){printf("%d", i % 10);} + for(int i = 0; i < board->width; i++){printf("%d", i % 10);} printf("\n +"); - for(int i = 0; i < board.width; i++){printf("-");} + for(int i = 0; i < board->width; i++){printf("-");} printf("+\n"); - for(int i = 0; i < board.height; i++){ + for(int i = 0; i < board->height; i++){ printf("%d", i / 10); printf("%d|", i % 10); - for(int j = 0; j < board.width; j++){printf("%c", board.tiles[i * width + j]);} + for(int j = 0; j < board->width; j++){printf("%c", board->tiles[i * width + j]);} printf("|\n"); } printf(" +"); - for(int i = 0; i < board.width; i++){printf("-");} + for(int i = 0; i < board->width; i++){printf("-");} printf("+\n"); } @@ -224,4 +233,23 @@ int number_of_bombs(Minesweeper_Board *board, int tile){ if(bomb_in_array(board->bombs, check_tile, board->num_bombs)){sum++;} } return sum; +} + +void open_empty_space(Minesweeper_Board *board, int tile, int index){ + board->tiles[tile] = EMPTY; + board->marked[index++] = tile; + for(int i = 0; i < 8; i++){ + int check_tile = tile; + if(i < 3){if(tile % board->width == 0){continue;} + else{check_tile -= 1;}} + if(i > 4){if(tile % board->width + 1 == board->width){continue;} + else{check_tile += 1;}} + if(i % 3 == 0){if(i != 0 && tile / board->width == 0){continue;} + else{check_tile -= board->width;}} + if(i % 3 == 1){if(tile / board->width + 1 == height){continue;} + else{check_tile += board->width;}} + int sum = open_tile(board, check_tile); + if(sum != 0){board->tiles[check_tile] = sum + 48;} + else if(!array_contains_value(board->marked, check_tile, index)){open_empty_space(board, check_tile, index);} + } } \ No newline at end of file diff --git a/src/main/c/Minesweeper/minesweeper_start.h b/src/main/c/Minesweeper/minesweeper_start.h index c62977b..b577233 100644 --- a/src/main/c/Minesweeper/minesweeper_start.h +++ b/src/main/c/Minesweeper/minesweeper_start.h @@ -4,7 +4,8 @@ typedef struct Minesweeper_Board{ unsigned int width; unsigned int height; - char *tiles; + int *tiles; + int *marked; int num_bombs; int *bombs; }Minesweeper_Board; @@ -12,7 +13,7 @@ typedef struct Minesweeper_Board{ void minesweeper_start(); Minesweeper_Board initialize_minesweeper(); -bool bomb_in_array(int array[], int bomb, int length); +bool bomb_in_array(int *array, int bomb, int length); int number_of_bombs(Minesweeper_Board *board, int tile); From 3203609f1abeef01468d8d5cf5ab837158156a5b Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 26 Jan 2024 21:27:55 +0100 Subject: [PATCH 046/375] refactoring: Minesweeper_Board and bomb_in_array to array_contains_value --- src/main/c/Minesweeper/minesweeper_start.c | 28 ++++++++++++++-------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index a16a24b..3025597 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -5,7 +5,7 @@ #include "minesweeper_start.h" #pragma region defines #define BLOCK '#' -#define FLAG '?' +#define FLAG 'x' #define EMPTY ' ' #define SMALL 10 #define MIDDLE 15 @@ -163,7 +163,7 @@ Minesweeper_Board initialize_minesweeper(){ board.tiles = (int*) malloc(width * height * sizeof(int)); for(int i = 0; i < width * height; i++){board.tiles[i] = BLOCK;} board.marked = (int*) malloc(width * height * sizeof(int)); - for(int i = 0; i < width * height; i++){board.tiles[i] = 0;} + for(int i = 0; i < width * height; i++){board.marked[i] = 0;} board.num_bombs = num_bombs; board.bombs = (int*) malloc(board.num_bombs * sizeof(int)); for(int i = 0; i < num_bombs; i++){board.bombs[i] = -1;} @@ -176,21 +176,24 @@ void place_bombs(Minesweeper_Board *board){ for(int i = 0; i < board->num_bombs; i++){ while (1){ r = rand() % (board->width * board->height); - if(!bomb_in_array(board->bombs, r, board->num_bombs)){break;} + if(!array_contains_value(board->bombs, r, board->num_bombs)){break;} } board->bombs[i] = r; } } -bool bomb_in_array(int *array, int bomb, int length){ +bool bomb_in_array(int *array, int value, int length){ for(int i = 0; i < length; i++){ - if(array[i] == bomb){return true;} + if(array[i] == value){return true;} } return false; } bool array_contains_value(int *array, int value, int length){ - + for(int i = 0; i < length; i++){ + if(array[i] == value){return true;} + } + return false; } void draw_minesweeper(Minesweeper_Board *board){ @@ -205,15 +208,20 @@ void draw_minesweeper(Minesweeper_Board *board){ printf("%d", i / 10); printf("%d|", i % 10); for(int j = 0; j < board->width; j++){printf("%c", board->tiles[i * width + j]);} - printf("|\n"); + printf("|%d", i / 10); + printf("%d\n", i % 10); } printf(" +"); for(int i = 0; i < board->width; i++){printf("-");} - printf("+\n"); + printf("+\n "); + for(int i = 0; i < board->width; i++){printf("%d", i / 10);} + printf("\n "); + for(int i = 0; i < board->width; i++){printf("%d", i % 10);} + printf("\n"); } int open_tile(Minesweeper_Board *board, int tile){ - if(bomb_in_array(board->bombs, tile, board->num_bombs)){return -1;} + if(array_contains_value(board->bombs, tile, board->num_bombs)){return -1;} int num = number_of_bombs(board, tile); if(1){return num;} } @@ -230,7 +238,7 @@ int number_of_bombs(Minesweeper_Board *board, int tile){ else{check_tile -= board->width;}} if(i % 3 == 1){if(tile / board->width + 1 == height){continue;} else{check_tile += board->width;}} - if(bomb_in_array(board->bombs, check_tile, board->num_bombs)){sum++;} + if(array_contains_value(board->bombs, check_tile, board->num_bombs)){sum++;} } return sum; } From ad8fc5d7bcb1279df272e1ed3d33f2a4d9d6f5d8 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Sat, 27 Jan 2024 16:05:11 +0100 Subject: [PATCH 047/375] minor fixes --- src/main/c/Minesweeper/minesweeper_start.c | 8 -------- src/main/c/Minesweeper/minesweeper_start.h | 2 +- test/Minesweeper/test_bomb_in_array.c | 4 ++-- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 3025597..fae882a 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -22,7 +22,6 @@ void game_minesweeper(); void options_minesweeper(); Minesweeper_Board initialize_minesweeper(); void place_bombs(Minesweeper_Board *board); -bool bomb_in_array(int *array, int bomb, int length); bool array_contains_value(int *array, int value, int length); void draw_minesweeper(Minesweeper_Board *board); int open_tile(Minesweeper_Board *board, int tile); @@ -182,13 +181,6 @@ void place_bombs(Minesweeper_Board *board){ } } -bool bomb_in_array(int *array, int value, int length){ - for(int i = 0; i < length; i++){ - if(array[i] == value){return true;} - } - return false; -} - bool array_contains_value(int *array, int value, int length){ for(int i = 0; i < length; i++){ if(array[i] == value){return true;} diff --git a/src/main/c/Minesweeper/minesweeper_start.h b/src/main/c/Minesweeper/minesweeper_start.h index b577233..c37d731 100644 --- a/src/main/c/Minesweeper/minesweeper_start.h +++ b/src/main/c/Minesweeper/minesweeper_start.h @@ -13,7 +13,7 @@ typedef struct Minesweeper_Board{ void minesweeper_start(); Minesweeper_Board initialize_minesweeper(); -bool bomb_in_array(int *array, int bomb, int length); +bool array_contains_value(int *array, int bomb, int length); int number_of_bombs(Minesweeper_Board *board, int tile); diff --git a/test/Minesweeper/test_bomb_in_array.c b/test/Minesweeper/test_bomb_in_array.c index 8aae16d..7073857 100644 --- a/test/Minesweeper/test_bomb_in_array.c +++ b/test/Minesweeper/test_bomb_in_array.c @@ -16,7 +16,7 @@ void test_bomb_in_array(void){ int length = 10; /* act */ - result = bomb_in_array(array, bomb, length); + result = array_contains_value(array, bomb, length); /* assert */ TEST_ASSERT_TRUE(result); @@ -31,7 +31,7 @@ void test_bomb_not_in_array(void){ int length = 10; /* act */ - result = bomb_in_array(array, bomb, length); + result = array_contains_value(array, bomb, length); /* assert */ TEST_ASSERT_FALSE(result); From 705f20406ca6fa001744da7802c72d12669f6dc8 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Mon, 29 Jan 2024 18:52:24 +0100 Subject: [PATCH 048/375] Draw Hangman in ASCII art --- CMakeLists.txt | 4 +- .../codemodel-v2-c6ffc0b664e1b12e7dfc.json | 60 ------- .../reply/index-2024-01-24T18-53-34-0975.json | 108 ------------ ...notebinder-Debug-439d4177ec694957d283.json | 159 ------------------ cmake-build-debug/.ninja_deps | Bin 11160 -> 10288 bytes cmake-build-debug/.ninja_log | 9 +- .../CMakeFiles/clion-Debug-log.txt | 8 +- .../Testing/Temporary/LastTest.log | 4 +- cmake-build-debug/build.ninja | 9 +- cmake-build-debug/pmuw_projekt_notebinder | Bin 34520 -> 0 bytes src/main/c/Hangman/drawHangman.c | 84 +++++++++ src/main/c/Hangman/drawHangman.h | 8 + 12 files changed, 110 insertions(+), 343 deletions(-) delete mode 100644 cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-c6ffc0b664e1b12e7dfc.json delete mode 100644 cmake-build-debug/.cmake/api/v1/reply/index-2024-01-24T18-53-34-0975.json delete mode 100644 cmake-build-debug/.cmake/api/v1/reply/target-pmuw_projekt_notebinder-Debug-439d4177ec694957d283.json delete mode 100755 cmake-build-debug/pmuw_projekt_notebinder create mode 100644 src/main/c/Hangman/drawHangman.c create mode 100644 src/main/c/Hangman/drawHangman.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 55c5ea3..5538ad5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,4 +13,6 @@ add_executable(pmuw_projekt_notebinder src/main/c/Hangman/word_selector.h src/main/c/main.c src/main/c/main.h - ) + src/main/c/Hangman/drawHangman.c + src/main/c/Hangman/drawHangman.h +) diff --git a/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-c6ffc0b664e1b12e7dfc.json b/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-c6ffc0b664e1b12e7dfc.json deleted file mode 100644 index a13cb3d..0000000 --- a/cmake-build-debug/.cmake/api/v1/reply/codemodel-v2-c6ffc0b664e1b12e7dfc.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "configurations" : - [ - { - "directories" : - [ - { - "build" : ".", - "jsonFile" : "directory-.-Debug-f5ebdc15457944623624.json", - "minimumCMakeVersion" : - { - "string" : "3.26" - }, - "projectIndex" : 0, - "source" : ".", - "targetIndexes" : - [ - 0 - ] - } - ], - "name" : "Debug", - "projects" : - [ - { - "directoryIndexes" : - [ - 0 - ], - "name" : "pmuw_projekt_notebinder", - "targetIndexes" : - [ - 0 - ] - } - ], - "targets" : - [ - { - "directoryIndex" : 0, - "id" : "pmuw_projekt_notebinder::@6890427a1f51a3e7e1df", - "jsonFile" : "target-pmuw_projekt_notebinder-Debug-439d4177ec694957d283.json", - "name" : "pmuw_projekt_notebinder", - "projectIndex" : 0 - } - ] - } - ], - "kind" : "codemodel", - "paths" : - { - "build" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug", - "source" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder" - }, - "version" : - { - "major" : 2, - "minor" : 5 - } -} diff --git a/cmake-build-debug/.cmake/api/v1/reply/index-2024-01-24T18-53-34-0975.json b/cmake-build-debug/.cmake/api/v1/reply/index-2024-01-24T18-53-34-0975.json deleted file mode 100644 index 21c2ccd..0000000 --- a/cmake-build-debug/.cmake/api/v1/reply/index-2024-01-24T18-53-34-0975.json +++ /dev/null @@ -1,108 +0,0 @@ -{ - "cmake" : - { - "generator" : - { - "multiConfig" : false, - "name" : "Ninja" - }, - "paths" : - { - "cmake" : "/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake", - "cpack" : "/Applications/CLion.app/Contents/bin/cmake/mac/bin/cpack", - "ctest" : "/Applications/CLion.app/Contents/bin/cmake/mac/bin/ctest", - "root" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26" - }, - "version" : - { - "isDirty" : false, - "major" : 3, - "minor" : 26, - "patch" : 4, - "string" : "3.26.4", - "suffix" : "" - } - }, - "objects" : - [ - { - "jsonFile" : "codemodel-v2-c6ffc0b664e1b12e7dfc.json", - "kind" : "codemodel", - "version" : - { - "major" : 2, - "minor" : 5 - } - }, - { - "jsonFile" : "cache-v2-797367ee73be0946ea69.json", - "kind" : "cache", - "version" : - { - "major" : 2, - "minor" : 0 - } - }, - { - "jsonFile" : "cmakeFiles-v1-9ac3996b5bf98606de02.json", - "kind" : "cmakeFiles", - "version" : - { - "major" : 1, - "minor" : 0 - } - }, - { - "jsonFile" : "toolchains-v1-e0f424cc4383644d699f.json", - "kind" : "toolchains", - "version" : - { - "major" : 1, - "minor" : 0 - } - } - ], - "reply" : - { - "cache-v2" : - { - "jsonFile" : "cache-v2-797367ee73be0946ea69.json", - "kind" : "cache", - "version" : - { - "major" : 2, - "minor" : 0 - } - }, - "cmakeFiles-v1" : - { - "jsonFile" : "cmakeFiles-v1-9ac3996b5bf98606de02.json", - "kind" : "cmakeFiles", - "version" : - { - "major" : 1, - "minor" : 0 - } - }, - "codemodel-v2" : - { - "jsonFile" : "codemodel-v2-c6ffc0b664e1b12e7dfc.json", - "kind" : "codemodel", - "version" : - { - "major" : 2, - "minor" : 5 - } - }, - "toolchains-v1" : - { - "jsonFile" : "toolchains-v1-e0f424cc4383644d699f.json", - "kind" : "toolchains", - "version" : - { - "major" : 1, - "minor" : 0 - } - } - } -} diff --git a/cmake-build-debug/.cmake/api/v1/reply/target-pmuw_projekt_notebinder-Debug-439d4177ec694957d283.json b/cmake-build-debug/.cmake/api/v1/reply/target-pmuw_projekt_notebinder-Debug-439d4177ec694957d283.json deleted file mode 100644 index b84f699..0000000 --- a/cmake-build-debug/.cmake/api/v1/reply/target-pmuw_projekt_notebinder-Debug-439d4177ec694957d283.json +++ /dev/null @@ -1,159 +0,0 @@ -{ - "artifacts" : - [ - { - "path" : "pmuw_projekt_notebinder" - } - ], - "backtrace" : 1, - "backtraceGraph" : - { - "commands" : - [ - "add_executable", - "include_directories" - ], - "files" : - [ - "CMakeLists.txt" - ], - "nodes" : - [ - { - "file" : 0 - }, - { - "command" : 0, - "file" : 0, - "line" : 10, - "parent" : 0 - }, - { - "command" : 1, - "file" : 0, - "line" : 6, - "parent" : 0 - }, - { - "command" : 1, - "file" : 0, - "line" : 7, - "parent" : 0 - }, - { - "command" : 1, - "file" : 0, - "line" : 8, - "parent" : 0 - } - ] - }, - "compileGroups" : - [ - { - "compileCommandFragments" : - [ - { - "fragment" : "-g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics" - } - ], - "includes" : - [ - { - "backtrace" : 2, - "path" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c" - }, - { - "backtrace" : 3, - "path" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman" - }, - { - "backtrace" : 4, - "path" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template" - } - ], - "language" : "C", - "languageStandard" : - { - "backtraces" : - [ - 1 - ], - "standard" : "11" - }, - "sourceIndexes" : - [ - 0, - 2 - ] - } - ], - "id" : "pmuw_projekt_notebinder::@6890427a1f51a3e7e1df", - "link" : - { - "commandFragments" : - [ - { - "fragment" : "-g", - "role" : "flags" - }, - { - "fragment" : "", - "role" : "flags" - } - ], - "language" : "C" - }, - "name" : "pmuw_projekt_notebinder", - "nameOnDisk" : "pmuw_projekt_notebinder", - "paths" : - { - "build" : ".", - "source" : "." - }, - "sourceGroups" : - [ - { - "name" : "Source Files", - "sourceIndexes" : - [ - 0, - 2 - ] - }, - { - "name" : "Header Files", - "sourceIndexes" : - [ - 1, - 3 - ] - } - ], - "sources" : - [ - { - "backtrace" : 1, - "compileGroupIndex" : 0, - "path" : "src/main/c/Hangman/word_selector.c", - "sourceGroupIndex" : 0 - }, - { - "backtrace" : 1, - "path" : "src/main/c/Hangman/word_selector.h", - "sourceGroupIndex" : 1 - }, - { - "backtrace" : 1, - "compileGroupIndex" : 0, - "path" : "src/main/c/main.c", - "sourceGroupIndex" : 0 - }, - { - "backtrace" : 1, - "path" : "src/main/c/main.h", - "sourceGroupIndex" : 1 - } - ], - "type" : "EXECUTABLE" -} diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index 6c9cd667e0ac75eb9e3472fe5dfca889d2226340..5e1fdca1799d8b8b7eb21c0b7194a018e361620e 100644 GIT binary patch delta 808 zcmaiyOH30{6o&6X3R5XzN*}yREh185GD#P1Of=vIl9telrYP2NoRW654A_>K7!xsZ z;f6#w8y6;mg7_-7f^Sjrjf#T!T)61g9ea{`X21w57jx#^f6l%Cch21N!L;98>rxf< zh!pPZNvzLjj5Q3Hw-t3siYmxLH)A<0F7ak2lf`(*?k$KZhlS`*l=53~sf2?cxL6Rx z13U-cDQm|mz7W1?UyTVRqDnC#`jzxnjG1}(f~WJmI8?#moSB0K%vAiV`i!1Z5$18A zv;*c)s&2vU7CU^xfJKCln6Vs%S**53-~(p4cKl^6g7+9G3}S=L1n)EkW3LhxlR}iu zXfA_!`M6{=8Q$h{IX_BJk7=jNsHj>2V{b5IZ-dvEv5W8u&1E9I#A6g+;5^0W=qVRr z8V4vo!^LtLp00rN@Pwd)Ftu!9zb6yv>Wrw)A&8yzCt#bJjGcXT&@H4l?C2pJ~y5j&h5+}5*` zPR@{7)tB3rrd2brK5C6E{odl)6-t!>2I|nTnUs3W){Ws=mk(~Cr)GbiJWj6;NMV0X z8{8xk8E)tYU)adOb!xa{u$F^sG^3WnxS~dc=v8gh#qor4Vwsk)F`TZI;R^j|pDC#o zCG^3L(m6hy*<^tcy$N?6UvZh>dI-)>C_6$nWB<8SS%C80YXC1A+eq6(&tB}>y218$ z$3$wuIhq~+{|-Fk+Gz>LrQ^+#8tIZ&?k>ATz54hyI%C6{=w2<-tr#NC5ytvL#4vkm L+4UghqQ?0LK&KmW delta 1037 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 + +void drawHangman(int incorrectGuesses) { + + if (incorrectGuesses == 0) { + printf(" +---+\n"); + printf(" |\n"); + printf(" |\n"); + printf(" |\n"); + printf(" |\n"); + printf(" |\n"); + printf("=========\n"); + } + + if (incorrectGuesses == 1) { + printf(" +---+\n"); + printf(" | |\n"); + printf(" |\n"); + printf(" |\n"); + printf(" |\n"); + printf(" |\n"); + printf("=========\n"); + } + + if (incorrectGuesses == 2) { + printf(" +---+\n"); + printf(" | |\n"); + printf(" O |\n"); + printf(" |\n"); + printf(" |\n"); + printf(" |\n"); + printf("=========\n"); + } + + if (incorrectGuesses == 3) { + printf(" +---+\n"); + printf(" | |\n"); + printf(" O |\n"); + printf(" | |\n"); + printf(" |\n"); + printf(" |\n"); + printf("=========\n"); + } + + if (incorrectGuesses == 4) { + printf(" +---+\n"); + printf(" | |\n"); + printf(" O |\n"); + printf(" /| |\n"); + printf(" |\n"); + printf(" |\n"); + printf("=========\n"); + } + + if (incorrectGuesses == 5) { + printf(" +---+\n"); + printf(" | |\n"); + printf(" O |\n"); + printf(" /|\\ |\n"); + printf(" |\n"); + printf(" |\n"); + printf("=========\n"); + } + + if (incorrectGuesses == 6) { + printf(" +---+\n"); + printf(" | |\n"); + printf(" O |\n"); + printf(" /|\\ |\n"); + printf(" / \\ |\n"); + printf(" |\n"); + printf("=========\n"); + } + + if (incorrectGuesses >= 7) { + printf(" \n"); + printf(" __ _ __ _ _ __ ___ ___ _____ _____ _ __ \n"); + printf(" / _` |/ _` | '_ ` _ \\ / _ \\ / _ \\ \\ / / _ \\ '__|\n"); + printf(" | (_| | (_| | | | | | | __/ | (_) \\ V / __/ | \n"); + printf(" \\__, |\\__,_|_| |_| |_|\\___| \\___/ \\_/ \\___|_| \n"); + printf(" |___/ \n"); + + } +} \ No newline at end of file diff --git a/src/main/c/Hangman/drawHangman.h b/src/main/c/Hangman/drawHangman.h new file mode 100644 index 0000000..6c6334f --- /dev/null +++ b/src/main/c/Hangman/drawHangman.h @@ -0,0 +1,8 @@ +// +// Created by Saba Fazlali on 29.01.24. +// + +#ifndef PMUW_PROJEKT_NOTEBINDER_DRAWHANGMAN_H +#define PMUW_PROJEKT_NOTEBINDER_DRAWHANGMAN_H + +#endif //PMUW_PROJEKT_NOTEBINDER_DRAWHANGMAN_H From 85a1bdae5c01c50080a3be804dfc2c404f37bc30 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Mon, 29 Jan 2024 19:18:39 +0100 Subject: [PATCH 049/375] basic rules are explained --- CMakeLists.txt | 2 ++ cmake-build-debug/.ninja_deps | Bin 10288 -> 10492 bytes cmake-build-debug/.ninja_log | 10 ++++++---- .../Testing/Temporary/LastTest.log | 4 ++-- cmake-build-debug/build.ninja | 9 ++++++++- src/main/c/Hangman/rules.c | 8 ++++++++ src/main/c/Hangman/rules.h | 8 ++++++++ 7 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 src/main/c/Hangman/rules.c create mode 100644 src/main/c/Hangman/rules.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 5538ad5..5cae33b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,4 +15,6 @@ add_executable(pmuw_projekt_notebinder src/main/c/main.h src/main/c/Hangman/drawHangman.c src/main/c/Hangman/drawHangman.h + src/main/c/Hangman/rules.c + src/main/c/Hangman/rules.h ) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index 5e1fdca1799d8b8b7eb21c0b7194a018e361620e..cb10c6589443374fa7cade54fbbf5488f591e6c2 100644 GIT binary patch delta 117 zcmdlG@F#G?9OcadstU}43m6z0Vi_11o@ZDH#XVjp9yfWR>|{odiGrq+&&qS~7nSCu y7V9PJ%MPu_6WesKk>;DV` diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index eb76abb..971a097 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -1,9 +1,11 @@ # ninja log v5 1 38 1706122217155672196 CMakeFiles/pmuw_projekt_notebinder.dir/test/Hangman/word_selector_test.c.o e932f546d59a9d76 -2 168 1706178769260469565 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 -0 40 1706549371890997682 build.ninja f2183aada2fc9ffc +0 40 1706551052328412558 build.ninja f2183aada2fc9ffc 1 38 1706122372717341436 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o f1dbf76e6b4bc97d -1 44 1706122039878920765 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o 69a5bcd8c57a43b3 -168 257 1706178769348509184 pmuw_projekt_notebinder d4d2c5136dd5469e 1 145 1706549408123039155 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 1 145 1706549408123027405 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 +1 44 1706122039878920765 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o 69a5bcd8c57a43b3 +168 257 1706178769348509184 pmuw_projekt_notebinder d4d2c5136dd5469e +0 106 1706551301992114407 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 +0 106 1706551301992128657 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o cdaff7b94c55641c +106 195 1706551302079685763 pmuw_projekt_notebinder fbb48fd3bf0b96c1 diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index e29350d..370c1c4 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Jan 29 18:29 CET +Start testing: Jan 29 19:01 CET ---------------------------------------------------------- -End testing: Jan 29 18:29 CET +End testing: Jan 29 19:01 CET diff --git a/cmake-build-debug/build.ninja b/cmake-build-debug/build.ninja index 46fbc18..1c8a21f 100644 --- a/cmake-build-debug/build.ninja +++ b/cmake-build-debug/build.ninja @@ -70,6 +70,13 @@ build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o: OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman +build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/rules.c || cmake_object_order_depends_target_pmuw_projekt_notebinder + DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o.d + FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics + INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template + OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir + OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman + # ============================================================================= # Link build statements for EXECUTABLE target pmuw_projekt_notebinder @@ -78,7 +85,7 @@ build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o: ############################################# # Link the executable pmuw_projekt_notebinder -build pmuw_projekt_notebinder: C_EXECUTABLE_LINKER__pmuw_projekt_notebinder_Debug CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o +build pmuw_projekt_notebinder: C_EXECUTABLE_LINKER__pmuw_projekt_notebinder_Debug CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o FLAGS = -g -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir POST_BUILD = : diff --git a/src/main/c/Hangman/rules.c b/src/main/c/Hangman/rules.c new file mode 100644 index 0000000..6286db9 --- /dev/null +++ b/src/main/c/Hangman/rules.c @@ -0,0 +1,8 @@ +#include "rules.h" +#include + +void printRules(){ + printf("Rules: \n"); + printf(" - You are allowed a maximum of 6 mistakes.\n"); + printf(" - All alphabet are in lower case.\n"); +} \ No newline at end of file diff --git a/src/main/c/Hangman/rules.h b/src/main/c/Hangman/rules.h new file mode 100644 index 0000000..5e52710 --- /dev/null +++ b/src/main/c/Hangman/rules.h @@ -0,0 +1,8 @@ +// +// Created by Saba Fazlali on 29.01.24. +// + +#ifndef PMUW_PROJEKT_NOTEBINDER_RULES_H +#define PMUW_PROJEKT_NOTEBINDER_RULES_H + +#endif //PMUW_PROJEKT_NOTEBINDER_RULES_H From 8957916a23fb9ac4b6548b6942b421cc5c0dad24 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 11:44:47 +0000 Subject: [PATCH 050/375] display the game board --- src/main/c/GameTic_Tac_Toe/game.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 7d5c061..aeec7e0 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -4,3 +4,16 @@ char board[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}}; char currentPlayer = 'X'; + +// Funktionen zur Anzeige des Spielbretts +void displayBoard() { + printf("Tic-Tac-Toe\n"); + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + printf("%c", board[i][j]); + if (j < 2) printf(" | "); + } + printf("\n"); + if (i < 2) printf("---------\n"); + } +} From a2b296651064ff9c44370ae4494e2bbb0b4a5e7e Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 11:45:48 +0000 Subject: [PATCH 051/375] Verification of the winner --- src/main/c/GameTic_Tac_Toe/game.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index aeec7e0..2937166 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -17,3 +17,6 @@ void displayBoard() { if (i < 2) printf("---------\n"); } } + +// Funktion zur Überprüfung des Gewinners +char checkWinner() { From 2d7b1b0e8cda5029a6694ca40002147c4b37f86d Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 11:46:46 +0000 Subject: [PATCH 052/375] Check horizontal and vertical lines --- src/main/c/GameTic_Tac_Toe/game.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 2937166..a08e501 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -20,3 +20,8 @@ void displayBoard() { // Funktion zur Überprüfung des Gewinners char checkWinner() { + // Überprüfe horizontale und vertikale Linien + for (int i = 0; i < 3; i++) { + if (board[i][0] == board[i][1] && board[i][1] == board[i][2]) return board[i][0]; + if (board[0][i] == board[1][i] && board[1][i] == board[2][i]) return board[0][i]; + } From 00ee1fdb18c618c51a313b7a0faa1a1294286c34 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 11:47:58 +0000 Subject: [PATCH 053/375] Check diagonal lines --- src/main/c/GameTic_Tac_Toe/game.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index a08e501..3f1dc5a 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -25,3 +25,7 @@ char checkWinner() { if (board[i][0] == board[i][1] && board[i][1] == board[i][2]) return board[i][0]; if (board[0][i] == board[1][i] && board[1][i] == board[2][i]) return board[0][i]; } + // Überprüfe diagonale Linien + if (board[0][0] == board[1][1] && board[1][1] == board[2][2]) return board[0][0]; + if (board[0][2] == board[1][1] && board[1][1] == board[2][0]) return board[0][2]; + From 22ce5b5fc45d3de430691a3439044bfb96a2d4f7 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 11:52:41 +0000 Subject: [PATCH 054/375] No winner --- src/main/c/GameTic_Tac_Toe/game.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 3f1dc5a..a91ba51 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -29,3 +29,6 @@ char checkWinner() { if (board[0][0] == board[1][1] && board[1][1] == board[2][2]) return board[0][0]; if (board[0][2] == board[1][1] && board[1][1] == board[2][0]) return board[0][2]; + // Kein Gewinner + return ' '; +} From f770bfd5d647d60b268f0a267b006343b50c2aaa Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 11:58:28 +0000 Subject: [PATCH 055/375] Verification function --- src/main/c/GameTic_Tac_Toe/game.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index a91ba51..6432f7f 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -32,3 +32,15 @@ char checkWinner() { // Kein Gewinner return ' '; } + +// Funktion zur Überprüfung, ob das Spiel unentschieden ist +int isBoardFull() { + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + if (board[i][j] != 'X' && board[i][j] != 'O') { + return 0; + } + } + } + return 1; +} From d75ff5cdbf9d229e47f300ecee996e83ec902ae4 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 11:59:42 +0000 Subject: [PATCH 056/375] Function: A player's turn --- src/main/c/GameTic_Tac_Toe/game.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 6432f7f..089012b 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -44,3 +44,11 @@ int isBoardFull() { } return 1; } + + +// Funktion zum Zug eines Spielers +void makeMove() { + int choice; + printf("Spieler %c, wähle eine Zahl (1-9): ", currentPlayer); + scanf("%d", &choice); + From 95c97636763ff420483d77a59bf813e4fac5b54d Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 12:00:33 +0000 Subject: [PATCH 057/375] Convert the number --- src/main/c/GameTic_Tac_Toe/game.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 089012b..48035ae 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -52,3 +52,7 @@ void makeMove() { printf("Spieler %c, wähle eine Zahl (1-9): ", currentPlayer); scanf("%d", &choice); +// Konvertiere die Zahl in Zeilen- und Spaltenindex + int row = (choice - 1) / 3; + int col = (choice - 1) % 3; + From c0df50c14754154612ecd07674579ea5abdeb251 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 12:01:52 +0000 Subject: [PATCH 058/375] Check whether the selected field is valid --- src/main/c/GameTic_Tac_Toe/game.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 48035ae..f0ddb37 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -56,3 +56,7 @@ void makeMove() { int row = (choice - 1) / 3; int col = (choice - 1) % 3; + // Überprüfe, ob das gewählte Feld gültig ist + if (choice >= 1 && choice <= 9 && board[row][col] != 'X' && board[row][col] != 'O') { + + From 68f804befc16b175915ddd7c4aa066c3b5667d32 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 12:02:18 +0000 Subject: [PATCH 059/375] Update game.c --- src/main/c/GameTic_Tac_Toe/game.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index f0ddb37..5129548 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -58,5 +58,6 @@ void makeMove() { // Überprüfe, ob das gewählte Feld gültig ist if (choice >= 1 && choice <= 9 && board[row][col] != 'X' && board[row][col] != 'O') { - + board[row][col] = currentPlayer; + } else { From 57ff8f28ae42deb751d92346429a7eb54dee673d Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 12:03:21 +0000 Subject: [PATCH 060/375] Invalid move --- src/main/c/GameTic_Tac_Toe/game.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 5129548..51f5c7c 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -60,4 +60,7 @@ void makeMove() { if (choice >= 1 && choice <= 9 && board[row][col] != 'X' && board[row][col] != 'O') { board[row][col] = currentPlayer; } else { - + printf("Ungültiger Zug! Bitte wähle erneut.\n"); + makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird + } +} From e99a489aa351de1759d2f54cc771860fb8a7e88b Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 12:04:05 +0000 Subject: [PATCH 061/375] Update main --- src/main/c/GameTic_Tac_Toe/game.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 51f5c7c..85a08a2 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -64,3 +64,8 @@ void makeMove() { makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird } } + +int main() { + while (1) { + displayBoard(); + makeMove(); From 097e26462eaec31300dc48366252ef1f57ebbd12 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 12:05:23 +0000 Subject: [PATCH 062/375] check winner --- src/main/c/GameTic_Tac_Toe/game.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 85a08a2..215af00 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -69,3 +69,10 @@ int main() { while (1) { displayBoard(); makeMove(); + + char winner = checkWinner(); + if (winner == 'X' || winner == 'O') { + displayBoard(); + printf("Spieler %c gewinnt!\n", winner); + break; + } From c4c5255c32e69b0b45164e5fe6098ead52f76bcb Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 12:20:45 +0000 Subject: [PATCH 063/375] possibility: draw --- src/main/c/GameTic_Tac_Toe/game.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 215af00..0f0d6f8 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -76,3 +76,9 @@ int main() { printf("Spieler %c gewinnt!\n", winner); break; } + + if (isBoardFull()) { + displayBoard(); + printf("Unentschieden!\n"); + break; + } From 44325c521fed24d036f30b85d670ff9f5af962e8 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 12:22:57 +0000 Subject: [PATCH 064/375] Change player --- src/main/c/GameTic_Tac_Toe/game.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 0f0d6f8..b20f125 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -82,3 +82,10 @@ int main() { printf("Unentschieden!\n"); break; } + + // Wechsle den Spieler + currentPlayer = (currentPlayer == 'X') ? 'O' : 'X'; + } + + return 0; +} From eb9a2755fe911b7b7760353dc20384acbea304d5 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 16:57:40 +0000 Subject: [PATCH 065/375] refactoring: lear condition for an invalid move --- src/main/c/GameTic_Tac_Toe/game.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index b20f125..11d2a79 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -57,11 +57,11 @@ void makeMove() { int col = (choice - 1) % 3; // Überprüfe, ob das gewählte Feld gültig ist - if (choice >= 1 && choice <= 9 && board[row][col] != 'X' && board[row][col] != 'O') { - board[row][col] = currentPlayer; - } else { - printf("Ungültiger Zug! Bitte wähle erneut.\n"); + if (choice < 1 || choice > 9 || board[row][col] == 'X' || board[row][col] == 'O') { + printf("Ungültiger Zug! Bitte wähle erneut.\n"); makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird + } else { + board[row][col] = currentPlayer; } } From 5567f10afcad179c0a7def3929b264a963b207a5 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 17:05:35 +0000 Subject: [PATCH 066/375] refactoring: using else and if --- src/main/c/GameTic_Tac_Toe/game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 11d2a79..278b1e5 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -27,7 +27,7 @@ char checkWinner() { } // Überprüfe diagonale Linien if (board[0][0] == board[1][1] && board[1][1] == board[2][2]) return board[0][0]; - if (board[0][2] == board[1][1] && board[1][1] == board[2][0]) return board[0][2]; + else if (board[0][2] == board[1][1] && board[1][1] == board[2][0]) return board[0][2]; // Kein Gewinner return ' '; From 4af8ceda5d461297fa85ba5c0bf158a4874f1090 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 17:15:30 +0000 Subject: [PATCH 067/375] refactoring: using an auxiliary feature for win conditions --- src/main/c/GameTic_Tac_Toe/game.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 278b1e5..0765c17 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -17,13 +17,19 @@ void displayBoard() { if (i < 2) printf("---------\n"); } } - +char checkLine(char a, char b, char c) { + if (a == b && b == c) return a; + return ' '; +} // Funktion zur Überprüfung des Gewinners char checkWinner() { // Überprüfe horizontale und vertikale Linien - for (int i = 0; i < 3; i++) { - if (board[i][0] == board[i][1] && board[i][1] == board[i][2]) return board[i][0]; - if (board[0][i] == board[1][i] && board[1][i] == board[2][i]) return board[0][i]; + for (int i = 0; i < 3; i++) { + char horizontalWinner = checkLine(board[i][0], board[i][1], board[i][2]); + char verticalWinner = checkLine(board[0][i], board[1][i], board[2][i]); + + if (horizontalWinner != ' ') return horizontalWinner; + if (verticalWinner != ' ') return verticalWinner; } // Überprüfe diagonale Linien if (board[0][0] == board[1][1] && board[1][1] == board[2][2]) return board[0][0]; From ad6d3bbdcfe3e7aad435dee8e30e4bcfb7ff818a Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 17:18:52 +0000 Subject: [PATCH 068/375] refactoring: using an auxiliary function for diagonal lines --- src/main/c/GameTic_Tac_Toe/game.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 0765c17..215f890 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -32,8 +32,11 @@ char checkWinner() { if (verticalWinner != ' ') return verticalWinner; } // Überprüfe diagonale Linien - if (board[0][0] == board[1][1] && board[1][1] == board[2][2]) return board[0][0]; - else if (board[0][2] == board[1][1] && board[1][1] == board[2][0]) return board[0][2]; + char diagonal1Winner = checkLine(board[0][0], board[1][1], board[2][2]); + char diagonal2Winner = checkLine(board[0][2], board[1][1], board[2][0]); + + if (diagonal1Winner != ' ') return diagonal1Winner; + if (diagonal2Winner != ' ') return diagonal2Winner; // Kein Gewinner return ' '; From a6c12ae026290794ac6649cdae8e9da72d85f285 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 17:43:49 +0000 Subject: [PATCH 069/375] refactoring: logic functions for player exchange --- src/main/c/GameTic_Tac_Toe/game.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 215f890..a3f3ae2 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -56,6 +56,10 @@ int isBoardFull() { // Funktion zum Zug eines Spielers +char switchPlayer(char currentPlayer) { + return (currentPlayer == 'X') ? 'O' : 'X'; +} + void makeMove() { int choice; printf("Spieler %c, wähle eine Zahl (1-9): ", currentPlayer); @@ -71,6 +75,7 @@ void makeMove() { makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird } else { board[row][col] = currentPlayer; + currentPlayer = switchPlayer(currentPlayer); } } From 6e55a92f3ee10ff8330579b75aec2beff2e2b58d Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 17:53:55 +0000 Subject: [PATCH 070/375] refactoring: separation of the game loop into functions --- src/main/c/GameTic_Tac_Toe/game.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index a3f3ae2..f193efa 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -79,7 +79,7 @@ void makeMove() { } } -int main() { +void playGame() { while (1) { displayBoard(); makeMove(); @@ -95,11 +95,10 @@ int main() { displayBoard(); printf("Unentschieden!\n"); break; - } - - // Wechsle den Spieler - currentPlayer = (currentPlayer == 'X') ? 'O' : 'X'; + } } - +} +int main(){ + playGame(); return 0; } From 36d75c111cbcc1a583de5762d5d8ef4b44f708c1 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 17:56:28 +0000 Subject: [PATCH 071/375] refactoring: using const --- src/main/c/GameTic_Tac_Toe/game.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index f193efa..f20e298 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -43,9 +43,11 @@ char checkWinner() { } // Funktion zur Überprüfung, ob das Spiel unentschieden ist +const int BOARD_SIZE = 3; + int isBoardFull() { - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { + for (int i = 0; i < BOARD_SIZE; i++) { + for (int j = 0; j < BOARD_SIZE; j++) { if (board[i][j] != 'X' && board[i][j] != 'O') { return 0; } From 6c7fc28dc481897bcb97ca729968930eb764239c Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 18:04:27 +0000 Subject: [PATCH 072/375] refactoring: Clear condition in makeMove --- src/main/c/GameTic_Tac_Toe/game.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index f20e298..ece4bb7 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -62,22 +62,28 @@ char switchPlayer(char currentPlayer) { return (currentPlayer == 'X') ? 'O' : 'X'; } +int isValidMove(int choice) { + int row = (choice - 1) / BOARD_SIZE; + int col = (choice - 1) % BOARD_SIZE; + + return (choice >= 1 && choice <= BOARD_SIZE * BOARD_SIZE && board[row][col] != 'X' && board[row][col] != 'O'); +} + void makeMove() { int choice; - printf("Spieler %c, wähle eine Zahl (1-9): ", currentPlayer); + printf("Spieler %c, waehle eine Zahl (1-9): ", currentPlayer); scanf("%d", &choice); // Konvertiere die Zahl in Zeilen- und Spaltenindex - int row = (choice - 1) / 3; - int col = (choice - 1) % 3; - - // Überprüfe, ob das gewählte Feld gültig ist - if (choice < 1 || choice > 9 || board[row][col] == 'X' || board[row][col] == 'O') { - printf("Ungültiger Zug! Bitte wähle erneut.\n"); - makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird - } else { - board[row][col] = currentPlayer; - currentPlayer = switchPlayer(currentPlayer); +if (isValidMove(choice)) { + int row = (choice - 1) / / BOARD_SIZE; + int col = (choice - 1) % % BOARD_SIZE; + board[row][col] = currentPlayer; + currentPlayer = switchPlayer(currentPlayer); + +} else { + printf("Ungueltiger Zug! Bitte waehle erneut.\n"); + makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird } } From 18a2eeaa64286be27a672a14db8e5d93166e5d17 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 18:07:39 +0000 Subject: [PATCH 073/375] Update: corrected errors --- src/main/c/GameTic_Tac_Toe/game.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index ece4bb7..e56e55f 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -76,8 +76,8 @@ void makeMove() { // Konvertiere die Zahl in Zeilen- und Spaltenindex if (isValidMove(choice)) { - int row = (choice - 1) / / BOARD_SIZE; - int col = (choice - 1) % % BOARD_SIZE; + int row = (choice - 1) / BOARD_SIZE; + int col = (choice - 1) % BOARD_SIZE; board[row][col] = currentPlayer; currentPlayer = switchPlayer(currentPlayer); From 1abf73507ee06529b853a80e64fbae52006217dc Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 18:14:59 +0000 Subject: [PATCH 075/375] refactoring: Using const for game symbol constants --- src/main/c/GameTic_Tac_Toe/game.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index e56e55f..ec98aec 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -4,7 +4,8 @@ char board[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}}; char currentPlayer = 'X'; - +const char PLAYER_X = 'X'; +const char PLAYER_O = 'O'; // Funktionen zur Anzeige des Spielbretts void displayBoard() { printf("Tic-Tac-Toe\n"); From 98533bbc98c2651716fbe3ed42f4f902a0cfb337 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 18:16:46 +0000 Subject: [PATCH 076/375] refactoring: Removing the currentPlayer global variable --- src/main/c/GameTic_Tac_Toe/game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index ec98aec..8615cb8 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -60,7 +60,7 @@ int isBoardFull() { // Funktion zum Zug eines Spielers char switchPlayer(char currentPlayer) { - return (currentPlayer == 'X') ? 'O' : 'X'; + return (currentPlayer == PLAYER_X) ? PLAYER_O : PLAYER_X; } int isValidMove(int choice) { From 6a843132cff3f0493108d4e31870d35d49c0f615 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 18:20:35 +0000 Subject: [PATCH 077/375] refactoring: Using a loop --- src/main/c/GameTic_Tac_Toe/game.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 8615cb8..177acc8 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -6,16 +6,22 @@ char board[3][3] = {{'1', '2', '3'}, char currentPlayer = 'X'; const char PLAYER_X = 'X'; const char PLAYER_O = 'O'; + // Funktionen zur Anzeige des Spielbretts void displayBoard() { printf("Tic-Tac-Toe\n"); - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { + for (int i = 0; i < BOARD_SIZE; i++) { + for (int j = 0; j < BOARD_SIZE; j++) { printf("%c", board[i][j]); - if (j < 2) printf(" | "); - } + if (j < BOARD_SIZE - 1) printf(" | "); + } printf("\n"); - if (i < 2) printf("---------\n"); + if (i < BOARD_SIZE - 1) { + for (int k = 0; k < BOARD_SIZE * 4 - 1; k++) { + printf("-"); + } + printf("\n"); + } } } char checkLine(char a, char b, char c) { From 6956db884ccb4754d4f78c00e834035ca2244b8d Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 18:35:42 +0000 Subject: [PATCH 078/375] refactoring: char replaced with enum --- src/main/c/GameTic_Tac_Toe/game.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 177acc8..ea95618 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -24,14 +24,16 @@ void displayBoard() { } } } + char checkLine(char a, char b, char c) { if (a == b && b == c) return a; return ' '; } + // Funktion zur Überprüfung des Gewinners char checkWinner() { // Überprüfe horizontale und vertikale Linien - for (int i = 0; i < 3; i++) { + for (int i = 0; i < BOARD_SIZE; i++) { char horizontalWinner = checkLine(board[i][0], board[i][1], board[i][2]); char verticalWinner = checkLine(board[0][i], board[1][i], board[2][i]); @@ -65,7 +67,7 @@ int isBoardFull() { // Funktion zum Zug eines Spielers -char switchPlayer(char currentPlayer) { +enum switchPlayer(enum currentPlayer) { return (currentPlayer == PLAYER_X) ? PLAYER_O : PLAYER_X; } From 2ce9e44041607a5540c09bd2e23d749023f89b9b Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 18:44:21 +0000 Subject: [PATCH 079/375] refactoring: replacing larger parts --- src/main/c/GameTic_Tac_Toe/game.c | 35 ++++++++++++++++--------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index ea95618..3b7f017 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -80,14 +80,14 @@ int isValidMove(int choice) { void makeMove() { int choice; - printf("Spieler %c, waehle eine Zahl (1-9): ", currentPlayer); + printf("Spieler %c, waehle eine Zahl (1-9): ", currentPlayer == PLAYER_X) ? 'X' : 'O'); scanf("%d", &choice); // Konvertiere die Zahl in Zeilen- und Spaltenindex if (isValidMove(choice)) { int row = (choice - 1) / BOARD_SIZE; int col = (choice - 1) % BOARD_SIZE; - board[row][col] = currentPlayer; + board[row][col] = currentPlayer == PLAYER_X) ? 'X' : 'O'; currentPlayer = switchPlayer(currentPlayer); } else { @@ -96,25 +96,26 @@ if (isValidMove(choice)) { } } +int isGameOver() { + char winner = checkWinner(); + return (winner == PLAYER_X || winner == PLAYER_O || isBoardFull()); +} + +void printGameResult(char winner) { + if (winner == PLAYER_X || winner == PLAYER_O) { + printf("Spieler %c gewinnt!\n", (winner == PLAYER_X) ? 'X' : 'O'); + } else { + printf("Unentschieden!\n"); + } +} + void playGame() { - while (1) { + while (!isGameOver()) { displayBoard(); makeMove(); - - char winner = checkWinner(); - if (winner == 'X' || winner == 'O') { - displayBoard(); - printf("Spieler %c gewinnt!\n", winner); - break; - } - - if (isBoardFull()) { - displayBoard(); - printf("Unentschieden!\n"); - break; - } } -} + + //Fehlt etwas, änderung folgt; int main(){ playGame(); return 0; From 673de7e2e293f3540618bd7bdec3b39ec5fd28c6 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 18:45:51 +0000 Subject: [PATCH 080/375] refactoring: added missing part --- src/main/c/GameTic_Tac_Toe/game.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 3b7f017..f72b814 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -115,7 +115,11 @@ void playGame() { makeMove(); } - //Fehlt etwas, änderung folgt; + displayBoard(); + char winner = checkWinner(); + printGameResult(winner); +} + int main(){ playGame(); return 0; From b12449338944ee154d3da893562a62fd897012e8 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Tue, 30 Jan 2024 19:14:53 +0000 Subject: [PATCH 081/375] refactoring: correct the errors --- src/main/c/GameTic_Tac_Toe/game.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index f72b814..443fe8d 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -1,5 +1,6 @@ #include +const int BOARD_SIZE = 3; char board[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}}; @@ -52,8 +53,6 @@ char checkWinner() { } // Funktion zur Überprüfung, ob das Spiel unentschieden ist -const int BOARD_SIZE = 3; - int isBoardFull() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { @@ -67,7 +66,7 @@ int isBoardFull() { // Funktion zum Zug eines Spielers -enum switchPlayer(enum currentPlayer) { +char switchPlayer(char currentPlayer) { return (currentPlayer == PLAYER_X) ? PLAYER_O : PLAYER_X; } @@ -80,14 +79,14 @@ int isValidMove(int choice) { void makeMove() { int choice; - printf("Spieler %c, waehle eine Zahl (1-9): ", currentPlayer == PLAYER_X) ? 'X' : 'O'); + printf("Spieler %c, waehle eine Zahl (1-9): ", (currentPlayer == PLAYER_X) ? 'X' : 'O'); scanf("%d", &choice); // Konvertiere die Zahl in Zeilen- und Spaltenindex if (isValidMove(choice)) { int row = (choice - 1) / BOARD_SIZE; int col = (choice - 1) % BOARD_SIZE; - board[row][col] = currentPlayer == PLAYER_X) ? 'X' : 'O'; + board[row][col] = (currentPlayer == PLAYER_X) ? 'X' : 'O'; currentPlayer = switchPlayer(currentPlayer); } else { From 151b2ac99475c89c4f726f3775b1987abe320cfc Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 31 Jan 2024 13:17:31 +0100 Subject: [PATCH 082/375] Hangman Initialization --- CMakeLists.txt | 2 ++ cmake-build-debug/.ninja_deps | Bin 10492 -> 10232 bytes cmake-build-debug/.ninja_log | 8 +++----- .../Testing/Temporary/LastTest.log | 4 ++-- cmake-build-debug/build.ninja | 9 ++++++++- src/main/c/Hangman/initializeHangman.c | 16 ++++++++++++++++ src/main/c/Hangman/initializeHangman.h | 8 ++++++++ 7 files changed, 39 insertions(+), 8 deletions(-) create mode 100644 src/main/c/Hangman/initializeHangman.c create mode 100644 src/main/c/Hangman/initializeHangman.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 5cae33b..a6af89f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -17,4 +17,6 @@ add_executable(pmuw_projekt_notebinder src/main/c/Hangman/drawHangman.h src/main/c/Hangman/rules.c src/main/c/Hangman/rules.h + src/main/c/Hangman/initializeHangman.c + src/main/c/Hangman/initializeHangman.h ) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index cb10c6589443374fa7cade54fbbf5488f591e6c2..884aefbf537551877b2baf6c41e2bbd0018e5860 100644 GIT binary patch delta 54 zcmewp_``q04%Nwf)ZQ>InEY2gh$(qKkP4QZ_y7O@B@7G=@eB+M6Bk$r#XVjpo&aPg JPF^TG835JE7nlG5 delta 124 zcmez2|0i(64%Nv9@}3$gMTzAeiFxU{iFtY%3=9kY|Np;)fuSLmfq~&{{bjkO57&vu z0on1B7s^hayhHU3>wKV!fXRmP9y~>*IjO~Z$@5?W3J`&exll6_fchpbun>xSyiPn3 J$W8*80RRe;G&cYM diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index 971a097..58af875 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -1,11 +1,9 @@ # ninja log v5 1 38 1706122217155672196 CMakeFiles/pmuw_projekt_notebinder.dir/test/Hangman/word_selector_test.c.o e932f546d59a9d76 -0 40 1706551052328412558 build.ninja f2183aada2fc9ffc +0 40 1706703246979925624 build.ninja f2183aada2fc9ffc 1 38 1706122372717341436 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o f1dbf76e6b4bc97d 1 145 1706549408123039155 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 -1 145 1706549408123027405 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 -1 44 1706122039878920765 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o 69a5bcd8c57a43b3 -168 257 1706178769348509184 pmuw_projekt_notebinder d4d2c5136dd5469e -0 106 1706551301992114407 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 0 106 1706551301992128657 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o cdaff7b94c55641c +0 106 1706551301992114407 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 +1 44 1706122039878920765 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o 69a5bcd8c57a43b3 106 195 1706551302079685763 pmuw_projekt_notebinder fbb48fd3bf0b96c1 diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index 370c1c4..678f644 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Jan 29 19:01 CET +Start testing: Jan 31 13:14 CET ---------------------------------------------------------- -End testing: Jan 29 19:01 CET +End testing: Jan 31 13:14 CET diff --git a/cmake-build-debug/build.ninja b/cmake-build-debug/build.ninja index 1c8a21f..042faf8 100644 --- a/cmake-build-debug/build.ninja +++ b/cmake-build-debug/build.ninja @@ -77,6 +77,13 @@ build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o: C_COM OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman +build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/initializeHangman.c || cmake_object_order_depends_target_pmuw_projekt_notebinder + DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o.d + FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics + INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template + OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir + OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman + # ============================================================================= # Link build statements for EXECUTABLE target pmuw_projekt_notebinder @@ -85,7 +92,7 @@ build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o: C_COM ############################################# # Link the executable pmuw_projekt_notebinder -build pmuw_projekt_notebinder: C_EXECUTABLE_LINKER__pmuw_projekt_notebinder_Debug CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o +build pmuw_projekt_notebinder: C_EXECUTABLE_LINKER__pmuw_projekt_notebinder_Debug CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o FLAGS = -g -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir POST_BUILD = : diff --git a/src/main/c/Hangman/initializeHangman.c b/src/main/c/Hangman/initializeHangman.c new file mode 100644 index 0000000..08b980d --- /dev/null +++ b/src/main/c/Hangman/initializeHangman.c @@ -0,0 +1,16 @@ +#include +#include +#include + +void initializeHangman(char *wordToGuess, char *currentGuess) { + int wordLength = strlen(wordToGuess); + + for (int i = 0; i < wordLength; ++i) { + if (isalpha(wordToGuess[i])) { + currentGuess[i] = '_'; + } else { + currentGuess[i] = wordToGuess[i]; + } + } + currentGuess[wordLength] = '\0'; +} \ No newline at end of file diff --git a/src/main/c/Hangman/initializeHangman.h b/src/main/c/Hangman/initializeHangman.h new file mode 100644 index 0000000..2ea55ca --- /dev/null +++ b/src/main/c/Hangman/initializeHangman.h @@ -0,0 +1,8 @@ +// +// Created by Saba Fazlali on 31.01.24. +// + +#ifndef PMUW_PROJEKT_NOTEBINDER_INITIALIZEHANGMAN_H +#define PMUW_PROJEKT_NOTEBINDER_INITIALIZEHANGMAN_H + +#endif //PMUW_PROJEKT_NOTEBINDER_INITIALIZEHANGMAN_H From 1ac053a2dca41b1b2e44ef8c012ab77c8c29311a Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 12:19:57 +0000 Subject: [PATCH 083/375] Erstelle eine neues Verzeichnis --- src/main/c/Pong/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/c/Pong/.gitkeep diff --git a/src/main/c/Pong/.gitkeep b/src/main/c/Pong/.gitkeep new file mode 100644 index 0000000..e69de29 From 0c2593924dddf30a0603fb7c451850ac045f1e00 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 12:21:06 +0000 Subject: [PATCH 084/375] Add new file --- src/main/c/Pong/game.c | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/main/c/Pong/game.c diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/main/c/Pong/game.c @@ -0,0 +1 @@ + From d0cf9a6ff074cdd60590b9247bd9d12d361244fa Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 31 Jan 2024 13:22:54 +0100 Subject: [PATCH 085/375] Current State added + small changes in header files --- CMakeLists.txt | 2 ++ src/main/c/Hangman/currentState.c | 6 ++++++ src/main/c/Hangman/currentState.h | 4 ++++ src/main/c/Hangman/drawHangman.c | 2 +- src/main/c/Hangman/drawHangman.h | 6 ++---- src/main/c/Hangman/initializeHangman.c | 5 +---- src/main/c/Hangman/initializeHangman.h | 8 +++----- src/main/c/Hangman/rules.c | 1 - src/main/c/Hangman/rules.h | 6 +----- src/main/c/Hangman/word_selector.c | 4 ---- src/main/c/Hangman/word_selector.h | 4 ---- 11 files changed, 20 insertions(+), 28 deletions(-) create mode 100644 src/main/c/Hangman/currentState.c create mode 100644 src/main/c/Hangman/currentState.h diff --git a/CMakeLists.txt b/CMakeLists.txt index a6af89f..fb852cf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,4 +19,6 @@ add_executable(pmuw_projekt_notebinder src/main/c/Hangman/rules.h src/main/c/Hangman/initializeHangman.c src/main/c/Hangman/initializeHangman.h + src/main/c/Hangman/currentState.c + src/main/c/Hangman/currentState.h ) diff --git a/src/main/c/Hangman/currentState.c b/src/main/c/Hangman/currentState.c new file mode 100644 index 0000000..6ee9bac --- /dev/null +++ b/src/main/c/Hangman/currentState.c @@ -0,0 +1,6 @@ +#include "currentState.h" + +void currentState(char *currentGuess, int mistakes) { + printf("Current Word: %s \n", currentGuess); + printf("Mistakes Made: %d/6 \n", mistakes); +} \ No newline at end of file diff --git a/src/main/c/Hangman/currentState.h b/src/main/c/Hangman/currentState.h new file mode 100644 index 0000000..41a99ec --- /dev/null +++ b/src/main/c/Hangman/currentState.h @@ -0,0 +1,4 @@ +#ifndef PMUW_PROJEKT_NOTEBINDER_CURRENTSTATE_H +#define PMUW_PROJEKT_NOTEBINDER_CURRENTSTATE_H +#include +#endif //PMUW_PROJEKT_NOTEBINDER_CURRENTSTATE_H diff --git a/src/main/c/Hangman/drawHangman.c b/src/main/c/Hangman/drawHangman.c index a4ae31f..4a78ad5 100644 --- a/src/main/c/Hangman/drawHangman.c +++ b/src/main/c/Hangman/drawHangman.c @@ -1,4 +1,4 @@ -#include +#include "drawHangman.h" void drawHangman(int incorrectGuesses) { diff --git a/src/main/c/Hangman/drawHangman.h b/src/main/c/Hangman/drawHangman.h index 6c6334f..2c31273 100644 --- a/src/main/c/Hangman/drawHangman.h +++ b/src/main/c/Hangman/drawHangman.h @@ -1,8 +1,6 @@ -// -// Created by Saba Fazlali on 29.01.24. -// - #ifndef PMUW_PROJEKT_NOTEBINDER_DRAWHANGMAN_H #define PMUW_PROJEKT_NOTEBINDER_DRAWHANGMAN_H +#include + #endif //PMUW_PROJEKT_NOTEBINDER_DRAWHANGMAN_H diff --git a/src/main/c/Hangman/initializeHangman.c b/src/main/c/Hangman/initializeHangman.c index 08b980d..221e50e 100644 --- a/src/main/c/Hangman/initializeHangman.c +++ b/src/main/c/Hangman/initializeHangman.c @@ -1,7 +1,4 @@ -#include -#include -#include - +#include "initializeHangman.h" void initializeHangman(char *wordToGuess, char *currentGuess) { int wordLength = strlen(wordToGuess); diff --git a/src/main/c/Hangman/initializeHangman.h b/src/main/c/Hangman/initializeHangman.h index 2ea55ca..58f5700 100644 --- a/src/main/c/Hangman/initializeHangman.h +++ b/src/main/c/Hangman/initializeHangman.h @@ -1,8 +1,6 @@ -// -// Created by Saba Fazlali on 31.01.24. -// - #ifndef PMUW_PROJEKT_NOTEBINDER_INITIALIZEHANGMAN_H #define PMUW_PROJEKT_NOTEBINDER_INITIALIZEHANGMAN_H - +#include +#include +#include #endif //PMUW_PROJEKT_NOTEBINDER_INITIALIZEHANGMAN_H diff --git a/src/main/c/Hangman/rules.c b/src/main/c/Hangman/rules.c index 6286db9..f7802bb 100644 --- a/src/main/c/Hangman/rules.c +++ b/src/main/c/Hangman/rules.c @@ -1,5 +1,4 @@ #include "rules.h" -#include void printRules(){ printf("Rules: \n"); diff --git a/src/main/c/Hangman/rules.h b/src/main/c/Hangman/rules.h index 5e52710..35b01a1 100644 --- a/src/main/c/Hangman/rules.h +++ b/src/main/c/Hangman/rules.h @@ -1,8 +1,4 @@ -// -// Created by Saba Fazlali on 29.01.24. -// - #ifndef PMUW_PROJEKT_NOTEBINDER_RULES_H #define PMUW_PROJEKT_NOTEBINDER_RULES_H - +#include #endif //PMUW_PROJEKT_NOTEBINDER_RULES_H diff --git a/src/main/c/Hangman/word_selector.c b/src/main/c/Hangman/word_selector.c index 0375253..157fb93 100644 --- a/src/main/c/Hangman/word_selector.c +++ b/src/main/c/Hangman/word_selector.c @@ -1,7 +1,3 @@ -// -// Created by Saba Fazlali on 22.01.24. -// - #include "word_selector.h" const char wordsList[NUM_WORDS][MAX_WORD_LENGTH + 1] = { diff --git a/src/main/c/Hangman/word_selector.h b/src/main/c/Hangman/word_selector.h index 9d5dd39..d606871 100644 --- a/src/main/c/Hangman/word_selector.h +++ b/src/main/c/Hangman/word_selector.h @@ -1,7 +1,3 @@ -// -// Created by Saba Fazlali on 24.01.24. -// - #ifndef PMUW_PROJEKT_NOTEBINDER_WORD_SELECTOR_H #define PMUW_PROJEKT_NOTEBINDER_WORD_SELECTOR_H From 66b03b0a20621e2660b7f2c9077a7023d8ce5da4 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Wed, 31 Jan 2024 12:23:59 +0000 Subject: [PATCH 086/375] Add new directory --- test/tests_tictactoe.game/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/tests_tictactoe.game/.gitkeep diff --git a/test/tests_tictactoe.game/.gitkeep b/test/tests_tictactoe.game/.gitkeep new file mode 100644 index 0000000..e69de29 From 5e74794e40fd23875ccb0ff5b9056fd47fe2c236 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Wed, 31 Jan 2024 12:27:00 +0000 Subject: [PATCH 087/375] Delete .gitkeep --- test/tests_tictactoe.game/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/tests_tictactoe.game/.gitkeep diff --git a/test/tests_tictactoe.game/.gitkeep b/test/tests_tictactoe.game/.gitkeep deleted file mode 100644 index e69de29..0000000 From d6dd92dc1e6a83cac81770d4236ab31892ad02b1 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Wed, 31 Jan 2024 12:28:08 +0000 Subject: [PATCH 088/375] Add new file --- test/test_tictactoe.c | 1 + 1 file changed, 1 insertion(+) create mode 100644 test/test_tictactoe.c diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/test/test_tictactoe.c @@ -0,0 +1 @@ + From 556ecbe863183e310fe004c143da33133a1cf60d Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Wed, 31 Jan 2024 12:32:21 +0000 Subject: [PATCH 089/375] Update game.c --- src/main/c/GameTic_Tac_Toe/game.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 443fe8d..62b99bc 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -64,7 +64,6 @@ int isBoardFull() { return 1; } - // Funktion zum Zug eines Spielers char switchPlayer(char currentPlayer) { return (currentPlayer == PLAYER_X) ? PLAYER_O : PLAYER_X; From 81858366e7b4b30ed3cf855b4d18b140f6f71aad Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 31 Jan 2024 13:36:13 +0100 Subject: [PATCH 091/375] hang man main body (basics) --- CMakeLists.txt | 2 ++ cmake-build-debug/.ninja_log | 4 +-- .../Testing/Temporary/LastTest.log | 4 +-- cmake-build-debug/build.ninja | 16 ++++++++- src/main/c/Hangman/playHangman.c | 33 +++++++++++++++++++ src/main/c/Hangman/playHangman.h | 12 +++++++ 6 files changed, 66 insertions(+), 5 deletions(-) create mode 100644 src/main/c/Hangman/playHangman.c create mode 100644 src/main/c/Hangman/playHangman.h diff --git a/CMakeLists.txt b/CMakeLists.txt index fb852cf..1856cfe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,4 +21,6 @@ add_executable(pmuw_projekt_notebinder src/main/c/Hangman/initializeHangman.h src/main/c/Hangman/currentState.c src/main/c/Hangman/currentState.h + src/main/c/Hangman/playHangman.c + src/main/c/Hangman/playHangman.h ) diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index 58af875..0a3593e 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -1,9 +1,9 @@ # ninja log v5 1 38 1706122217155672196 CMakeFiles/pmuw_projekt_notebinder.dir/test/Hangman/word_selector_test.c.o e932f546d59a9d76 -0 40 1706703246979925624 build.ninja f2183aada2fc9ffc +0 40 1706703919580754893 build.ninja f2183aada2fc9ffc 1 38 1706122372717341436 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o f1dbf76e6b4bc97d -1 145 1706549408123039155 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 0 106 1706551301992128657 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o cdaff7b94c55641c +1 145 1706549408123039155 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 0 106 1706551301992114407 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 1 44 1706122039878920765 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o 69a5bcd8c57a43b3 106 195 1706551302079685763 pmuw_projekt_notebinder fbb48fd3bf0b96c1 diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index 678f644..f24ee92 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Jan 31 13:14 CET +Start testing: Jan 31 13:25 CET ---------------------------------------------------------- -End testing: Jan 31 13:14 CET +End testing: Jan 31 13:25 CET diff --git a/cmake-build-debug/build.ninja b/cmake-build-debug/build.ninja index 042faf8..8c168ac 100644 --- a/cmake-build-debug/build.ninja +++ b/cmake-build-debug/build.ninja @@ -84,6 +84,20 @@ build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangma OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman +build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/currentState.c || cmake_object_order_depends_target_pmuw_projekt_notebinder + DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o.d + FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics + INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template + OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir + OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman + +build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/playHangman.c || cmake_object_order_depends_target_pmuw_projekt_notebinder + DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o.d + FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics + INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template + OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir + OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman + # ============================================================================= # Link build statements for EXECUTABLE target pmuw_projekt_notebinder @@ -92,7 +106,7 @@ build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangma ############################################# # Link the executable pmuw_projekt_notebinder -build pmuw_projekt_notebinder: C_EXECUTABLE_LINKER__pmuw_projekt_notebinder_Debug CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o +build pmuw_projekt_notebinder: C_EXECUTABLE_LINKER__pmuw_projekt_notebinder_Debug CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o FLAGS = -g -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir POST_BUILD = : diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c new file mode 100644 index 0000000..4712c5e --- /dev/null +++ b/src/main/c/Hangman/playHangman.c @@ -0,0 +1,33 @@ +#include "playHangman.h" + +void playHangman(char *wordToGuess) { + int mistakes = 0; + char guessedLetters[30]; //guessed letters + char currentGuess[50]; //current state of the guessed word + + // Initialize the current guess and print the rules + initializeHangman(wordToGuess, currentGuess); + printRules(); + + while (mistakes < MAX_MISTAKES) { + currentState(currentGuess, mistakes); + + // Get a letter from the player + char guess; + printf("\n\t Enter your guess (lower case): "); + scanf(" %c", &guess); + + // Add the guessed letter to the list + guessedLetters[strlen(guessedLetters)] = guess; + + // Check if the guessed letter is in the word + int found = 0; + for (int i = 0; i < strlen(wordToGuess); ++i) { + if (wordToGuess[i] == guess) { + currentGuess[i] = guess; + found = 1; + } + } + + } +} \ No newline at end of file diff --git a/src/main/c/Hangman/playHangman.h b/src/main/c/Hangman/playHangman.h new file mode 100644 index 0000000..c28fb46 --- /dev/null +++ b/src/main/c/Hangman/playHangman.h @@ -0,0 +1,12 @@ +// +// Created by Saba Fazlali on 31.01.24. +// + +#ifndef PMUW_PROJEKT_NOTEBINDER_PLAYHANGMAN_H +#define PMUW_PROJEKT_NOTEBINDER_PLAYHANGMAN_H +#include +#define MAX_MISTAKES 6 +#include "initializeHangman.c" +#include "rules.c" +#include "currentState.c" +#endif //PMUW_PROJEKT_NOTEBINDER_PLAYHANGMAN_H From dcceee5faf9ef8bfc529df270ae539dccb702d56 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 31 Jan 2024 13:42:38 +0100 Subject: [PATCH 092/375] check the validation of the guessed letter --- src/main/c/Hangman/playHangman.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 4712c5e..20380e5 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -14,9 +14,21 @@ void playHangman(char *wordToGuess) { // Get a letter from the player char guess; - printf("\n\t Enter your guess (lower case): "); + printf("Enter your guess: \n"); scanf(" %c", &guess); + // check if the guess is lower case and is a letter (valid) + if (!isalpha(guess) || isupper(guess)) { + printf("Please enter a valid lowercase alphabet.\n"); + continue; + } + + // Check if the letter has already been guessed by the player + if (strchr(guessedLetters, guess) != NULL) { + printf("You already guessed that letter. Try another letter.\n"); + continue; + } + // Add the guessed letter to the list guessedLetters[strlen(guessedLetters)] = guess; From f2fbc269bb2083be7fbfac4e01a46317b7c7aecc Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 31 Jan 2024 13:50:01 +0100 Subject: [PATCH 093/375] update mistakes --- src/main/c/Hangman/playHangman.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 20380e5..0fe32f7 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -41,5 +41,11 @@ void playHangman(char *wordToGuess) { } } + // Update mistakes (if the guess is wrong) + if(!found){ + mistakes++; + } + + } } \ No newline at end of file From 575824a102828b2f4bf401c16d72e039250b5dac Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 31 Jan 2024 13:54:24 +0100 Subject: [PATCH 094/375] all letters guessed correctly --- src/main/c/Hangman/playHangman.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 0fe32f7..178c872 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -46,6 +46,14 @@ void playHangman(char *wordToGuess) { mistakes++; } + // Check if the player guessed all the letters + if (strcmp(currentGuess,wordToGuess) == 0){ + currentState(currentGuess, mistakes); + printf("Bravo! You guessed the word: %s \n", wordToGuess); + break; + } + + } } \ No newline at end of file From 8b88c2fbc974b4564ca0977ee294a7979f941a2b Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Wed, 24 Jan 2024 12:36:32 +0000 Subject: [PATCH 095/375] Add new directory Author: Ariana Ginju --- src/main/c/GameTic_Tac_Toe/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/main/c/GameTic_Tac_Toe/.gitkeep diff --git a/src/main/c/GameTic_Tac_Toe/.gitkeep b/src/main/c/GameTic_Tac_Toe/.gitkeep new file mode 100644 index 0000000..e69de29 From 2c08c49fdf287f7dcb61a0f36b8d25a2472da8a7 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Wed, 24 Jan 2024 12:45:27 +0000 Subject: [PATCH 096/375] Add new file --- src/main/c/GameTic_Tac_Toe/temp | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/main/c/GameTic_Tac_Toe/temp diff --git a/src/main/c/GameTic_Tac_Toe/temp b/src/main/c/GameTic_Tac_Toe/temp new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/main/c/GameTic_Tac_Toe/temp @@ -0,0 +1 @@ + From eca9fef7a13af1ef19f0765d5feeebc03878c48b Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Wed, 24 Jan 2024 13:04:28 +0000 Subject: [PATCH 097/375] Delete temp --- src/main/c/GameTic_Tac_Toe/temp | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/main/c/GameTic_Tac_Toe/temp diff --git a/src/main/c/GameTic_Tac_Toe/temp b/src/main/c/GameTic_Tac_Toe/temp deleted file mode 100644 index 8b13789..0000000 --- a/src/main/c/GameTic_Tac_Toe/temp +++ /dev/null @@ -1 +0,0 @@ - From a8c427c5b2c361bb6739f9188bfc24184eb4802d Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Wed, 24 Jan 2024 14:21:33 +0100 Subject: [PATCH 098/375] added global board --- src/main/c/GameTic_Tac_Toe/game.c | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 src/main/c/GameTic_Tac_Toe/game.c diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c new file mode 100644 index 0000000..7d5c061 --- /dev/null +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -0,0 +1,6 @@ +#include + +char board[3][3] = {{'1', '2', '3'}, + {'4', '5', '6'}, + {'7', '8', '9'}}; +char currentPlayer = 'X'; From 794f052fa746757d14dba5d6de325061cb229aca Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 11:44:47 +0000 Subject: [PATCH 099/375] display the game board --- src/main/c/GameTic_Tac_Toe/game.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 7d5c061..aeec7e0 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -4,3 +4,16 @@ char board[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}}; char currentPlayer = 'X'; + +// Funktionen zur Anzeige des Spielbretts +void displayBoard() { + printf("Tic-Tac-Toe\n"); + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + printf("%c", board[i][j]); + if (j < 2) printf(" | "); + } + printf("\n"); + if (i < 2) printf("---------\n"); + } +} From 7999eb79fe7155da4fc5b3b8d94f54fdd2d395c4 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 11:45:48 +0000 Subject: [PATCH 100/375] Verification of the winner --- src/main/c/GameTic_Tac_Toe/game.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index aeec7e0..2937166 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -17,3 +17,6 @@ void displayBoard() { if (i < 2) printf("---------\n"); } } + +// Funktion zur Überprüfung des Gewinners +char checkWinner() { From a9fb21881e83ecb0337d2e60b5ff9bca5bb78e33 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 11:46:46 +0000 Subject: [PATCH 101/375] Check horizontal and vertical lines --- src/main/c/GameTic_Tac_Toe/game.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 2937166..a08e501 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -20,3 +20,8 @@ void displayBoard() { // Funktion zur Überprüfung des Gewinners char checkWinner() { + // Überprüfe horizontale und vertikale Linien + for (int i = 0; i < 3; i++) { + if (board[i][0] == board[i][1] && board[i][1] == board[i][2]) return board[i][0]; + if (board[0][i] == board[1][i] && board[1][i] == board[2][i]) return board[0][i]; + } From 30f7147c18b85d24caa91288a8d7e6cd7f45f4d5 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 11:47:58 +0000 Subject: [PATCH 102/375] Check diagonal lines --- src/main/c/GameTic_Tac_Toe/game.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index a08e501..3f1dc5a 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -25,3 +25,7 @@ char checkWinner() { if (board[i][0] == board[i][1] && board[i][1] == board[i][2]) return board[i][0]; if (board[0][i] == board[1][i] && board[1][i] == board[2][i]) return board[0][i]; } + // Überprüfe diagonale Linien + if (board[0][0] == board[1][1] && board[1][1] == board[2][2]) return board[0][0]; + if (board[0][2] == board[1][1] && board[1][1] == board[2][0]) return board[0][2]; + From 970382ae3c968897fb7925f33e52b2f3ca643152 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 11:52:41 +0000 Subject: [PATCH 103/375] No winner --- src/main/c/GameTic_Tac_Toe/game.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 3f1dc5a..a91ba51 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -29,3 +29,6 @@ char checkWinner() { if (board[0][0] == board[1][1] && board[1][1] == board[2][2]) return board[0][0]; if (board[0][2] == board[1][1] && board[1][1] == board[2][0]) return board[0][2]; + // Kein Gewinner + return ' '; +} From 7f8de3f06bb9fa26aca2ef129c4b6041b24dc4f1 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 11:58:28 +0000 Subject: [PATCH 104/375] Verification function --- src/main/c/GameTic_Tac_Toe/game.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index a91ba51..6432f7f 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -32,3 +32,15 @@ char checkWinner() { // Kein Gewinner return ' '; } + +// Funktion zur Überprüfung, ob das Spiel unentschieden ist +int isBoardFull() { + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + if (board[i][j] != 'X' && board[i][j] != 'O') { + return 0; + } + } + } + return 1; +} From 1ec3169a5b6edffa9c36a7a30e3d2df7a3943381 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 11:59:42 +0000 Subject: [PATCH 105/375] Function: A player's turn --- src/main/c/GameTic_Tac_Toe/game.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 6432f7f..089012b 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -44,3 +44,11 @@ int isBoardFull() { } return 1; } + + +// Funktion zum Zug eines Spielers +void makeMove() { + int choice; + printf("Spieler %c, wähle eine Zahl (1-9): ", currentPlayer); + scanf("%d", &choice); + From 22d08f9a4b27e6ed72339a872ad860226106cd85 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 12:00:33 +0000 Subject: [PATCH 106/375] Convert the number --- src/main/c/GameTic_Tac_Toe/game.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 089012b..48035ae 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -52,3 +52,7 @@ void makeMove() { printf("Spieler %c, wähle eine Zahl (1-9): ", currentPlayer); scanf("%d", &choice); +// Konvertiere die Zahl in Zeilen- und Spaltenindex + int row = (choice - 1) / 3; + int col = (choice - 1) % 3; + From f1b61336a5a5beb5d08874fb901e9657932f9b1e Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 12:01:52 +0000 Subject: [PATCH 107/375] Check whether the selected field is valid --- src/main/c/GameTic_Tac_Toe/game.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 48035ae..f0ddb37 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -56,3 +56,7 @@ void makeMove() { int row = (choice - 1) / 3; int col = (choice - 1) % 3; + // Überprüfe, ob das gewählte Feld gültig ist + if (choice >= 1 && choice <= 9 && board[row][col] != 'X' && board[row][col] != 'O') { + + From 9ef4f2f96690b5e7cdf6af931d9ffcbac1abaec5 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 12:02:18 +0000 Subject: [PATCH 108/375] Update game.c --- src/main/c/GameTic_Tac_Toe/game.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index f0ddb37..5129548 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -58,5 +58,6 @@ void makeMove() { // Überprüfe, ob das gewählte Feld gültig ist if (choice >= 1 && choice <= 9 && board[row][col] != 'X' && board[row][col] != 'O') { - + board[row][col] = currentPlayer; + } else { From d47cb68db8380e185c9556709a41c366ccd0a30d Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 12:03:21 +0000 Subject: [PATCH 109/375] Invalid move --- src/main/c/GameTic_Tac_Toe/game.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 5129548..51f5c7c 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -60,4 +60,7 @@ void makeMove() { if (choice >= 1 && choice <= 9 && board[row][col] != 'X' && board[row][col] != 'O') { board[row][col] = currentPlayer; } else { - + printf("Ungültiger Zug! Bitte wähle erneut.\n"); + makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird + } +} From 87f5a6c5d8267494d57cd5302e9e5517ef909f61 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 12:04:05 +0000 Subject: [PATCH 110/375] Update main --- src/main/c/GameTic_Tac_Toe/game.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 51f5c7c..85a08a2 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -64,3 +64,8 @@ void makeMove() { makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird } } + +int main() { + while (1) { + displayBoard(); + makeMove(); From bd7b0a63c647e259a8fb7ab9255d3a7d289996a8 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 12:05:23 +0000 Subject: [PATCH 111/375] check winner --- src/main/c/GameTic_Tac_Toe/game.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 85a08a2..215af00 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -69,3 +69,10 @@ int main() { while (1) { displayBoard(); makeMove(); + + char winner = checkWinner(); + if (winner == 'X' || winner == 'O') { + displayBoard(); + printf("Spieler %c gewinnt!\n", winner); + break; + } From b02a1f7f6cf0cc7727c125ff136099760d521075 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 12:20:45 +0000 Subject: [PATCH 112/375] possibility: draw --- src/main/c/GameTic_Tac_Toe/game.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 215af00..0f0d6f8 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -76,3 +76,9 @@ int main() { printf("Spieler %c gewinnt!\n", winner); break; } + + if (isBoardFull()) { + displayBoard(); + printf("Unentschieden!\n"); + break; + } From 421db299f35517a88096b718f0af89ab65693137 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 12:22:57 +0000 Subject: [PATCH 113/375] Change player --- src/main/c/GameTic_Tac_Toe/game.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 0f0d6f8..b20f125 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -82,3 +82,10 @@ int main() { printf("Unentschieden!\n"); break; } + + // Wechsle den Spieler + currentPlayer = (currentPlayer == 'X') ? 'O' : 'X'; + } + + return 0; +} From 04b9365a8ac416738f3555c3f6eb17ea18a4ae2f Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 16:57:40 +0000 Subject: [PATCH 114/375] refactoring: lear condition for an invalid move --- src/main/c/GameTic_Tac_Toe/game.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index b20f125..11d2a79 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -57,11 +57,11 @@ void makeMove() { int col = (choice - 1) % 3; // Überprüfe, ob das gewählte Feld gültig ist - if (choice >= 1 && choice <= 9 && board[row][col] != 'X' && board[row][col] != 'O') { - board[row][col] = currentPlayer; - } else { - printf("Ungültiger Zug! Bitte wähle erneut.\n"); + if (choice < 1 || choice > 9 || board[row][col] == 'X' || board[row][col] == 'O') { + printf("Ungültiger Zug! Bitte wähle erneut.\n"); makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird + } else { + board[row][col] = currentPlayer; } } From a0ecdb63f1cbbe0fc19f296d86830176e43793b3 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 17:05:35 +0000 Subject: [PATCH 115/375] refactoring: using else and if --- src/main/c/GameTic_Tac_Toe/game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 11d2a79..278b1e5 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -27,7 +27,7 @@ char checkWinner() { } // Überprüfe diagonale Linien if (board[0][0] == board[1][1] && board[1][1] == board[2][2]) return board[0][0]; - if (board[0][2] == board[1][1] && board[1][1] == board[2][0]) return board[0][2]; + else if (board[0][2] == board[1][1] && board[1][1] == board[2][0]) return board[0][2]; // Kein Gewinner return ' '; From 990b115c96fed40a214baed9d0fe6d5dc5c63ec9 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 17:15:30 +0000 Subject: [PATCH 116/375] refactoring: using an auxiliary feature for win conditions --- src/main/c/GameTic_Tac_Toe/game.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 278b1e5..0765c17 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -17,13 +17,19 @@ void displayBoard() { if (i < 2) printf("---------\n"); } } - +char checkLine(char a, char b, char c) { + if (a == b && b == c) return a; + return ' '; +} // Funktion zur Überprüfung des Gewinners char checkWinner() { // Überprüfe horizontale und vertikale Linien - for (int i = 0; i < 3; i++) { - if (board[i][0] == board[i][1] && board[i][1] == board[i][2]) return board[i][0]; - if (board[0][i] == board[1][i] && board[1][i] == board[2][i]) return board[0][i]; + for (int i = 0; i < 3; i++) { + char horizontalWinner = checkLine(board[i][0], board[i][1], board[i][2]); + char verticalWinner = checkLine(board[0][i], board[1][i], board[2][i]); + + if (horizontalWinner != ' ') return horizontalWinner; + if (verticalWinner != ' ') return verticalWinner; } // Überprüfe diagonale Linien if (board[0][0] == board[1][1] && board[1][1] == board[2][2]) return board[0][0]; From fec03368ca2cd1c5a0c2648c81f7709e179c9dd6 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 17:18:52 +0000 Subject: [PATCH 117/375] refactoring: using an auxiliary function for diagonal lines --- src/main/c/GameTic_Tac_Toe/game.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 0765c17..215f890 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -32,8 +32,11 @@ char checkWinner() { if (verticalWinner != ' ') return verticalWinner; } // Überprüfe diagonale Linien - if (board[0][0] == board[1][1] && board[1][1] == board[2][2]) return board[0][0]; - else if (board[0][2] == board[1][1] && board[1][1] == board[2][0]) return board[0][2]; + char diagonal1Winner = checkLine(board[0][0], board[1][1], board[2][2]); + char diagonal2Winner = checkLine(board[0][2], board[1][1], board[2][0]); + + if (diagonal1Winner != ' ') return diagonal1Winner; + if (diagonal2Winner != ' ') return diagonal2Winner; // Kein Gewinner return ' '; From 483f2b54800761f661f66ec9e4f931386e707620 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 17:43:49 +0000 Subject: [PATCH 118/375] refactoring: logic functions for player exchange Author: Ariana Ginju --- src/main/c/GameTic_Tac_Toe/game.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 215f890..a3f3ae2 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -56,6 +56,10 @@ int isBoardFull() { // Funktion zum Zug eines Spielers +char switchPlayer(char currentPlayer) { + return (currentPlayer == 'X') ? 'O' : 'X'; +} + void makeMove() { int choice; printf("Spieler %c, wähle eine Zahl (1-9): ", currentPlayer); @@ -71,6 +75,7 @@ void makeMove() { makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird } else { board[row][col] = currentPlayer; + currentPlayer = switchPlayer(currentPlayer); } } From 29759098ad1f386a32dc74eb2b89f87d99ff4196 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 17:53:55 +0000 Subject: [PATCH 119/375] refactoring: separation of the game loop into functions Author: Ariana Ginju --- src/main/c/GameTic_Tac_Toe/game.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index a3f3ae2..f193efa 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -79,7 +79,7 @@ void makeMove() { } } -int main() { +void playGame() { while (1) { displayBoard(); makeMove(); @@ -95,11 +95,10 @@ int main() { displayBoard(); printf("Unentschieden!\n"); break; - } - - // Wechsle den Spieler - currentPlayer = (currentPlayer == 'X') ? 'O' : 'X'; + } } - +} +int main(){ + playGame(); return 0; } From 0d188261b2ad94bb5efa2a48e553496662ef42b1 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 17:56:28 +0000 Subject: [PATCH 120/375] refactoring: using const --- src/main/c/GameTic_Tac_Toe/game.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index f193efa..f20e298 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -43,9 +43,11 @@ char checkWinner() { } // Funktion zur Überprüfung, ob das Spiel unentschieden ist +const int BOARD_SIZE = 3; + int isBoardFull() { - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { + for (int i = 0; i < BOARD_SIZE; i++) { + for (int j = 0; j < BOARD_SIZE; j++) { if (board[i][j] != 'X' && board[i][j] != 'O') { return 0; } From f0480af37136c2200c5e0486ef55e54a1336f045 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 18:04:27 +0000 Subject: [PATCH 121/375] refactoring: Clear condition in makeMove --- src/main/c/GameTic_Tac_Toe/game.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index f20e298..ece4bb7 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -62,22 +62,28 @@ char switchPlayer(char currentPlayer) { return (currentPlayer == 'X') ? 'O' : 'X'; } +int isValidMove(int choice) { + int row = (choice - 1) / BOARD_SIZE; + int col = (choice - 1) % BOARD_SIZE; + + return (choice >= 1 && choice <= BOARD_SIZE * BOARD_SIZE && board[row][col] != 'X' && board[row][col] != 'O'); +} + void makeMove() { int choice; - printf("Spieler %c, wähle eine Zahl (1-9): ", currentPlayer); + printf("Spieler %c, waehle eine Zahl (1-9): ", currentPlayer); scanf("%d", &choice); // Konvertiere die Zahl in Zeilen- und Spaltenindex - int row = (choice - 1) / 3; - int col = (choice - 1) % 3; - - // Überprüfe, ob das gewählte Feld gültig ist - if (choice < 1 || choice > 9 || board[row][col] == 'X' || board[row][col] == 'O') { - printf("Ungültiger Zug! Bitte wähle erneut.\n"); - makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird - } else { - board[row][col] = currentPlayer; - currentPlayer = switchPlayer(currentPlayer); +if (isValidMove(choice)) { + int row = (choice - 1) / / BOARD_SIZE; + int col = (choice - 1) % % BOARD_SIZE; + board[row][col] = currentPlayer; + currentPlayer = switchPlayer(currentPlayer); + +} else { + printf("Ungueltiger Zug! Bitte waehle erneut.\n"); + makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird } } From 0221526e8e45ec1686d295f40d8660626af09bac Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 18:07:39 +0000 Subject: [PATCH 122/375] Update: corrected errors --- src/main/c/GameTic_Tac_Toe/game.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index ece4bb7..e56e55f 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -76,8 +76,8 @@ void makeMove() { // Konvertiere die Zahl in Zeilen- und Spaltenindex if (isValidMove(choice)) { - int row = (choice - 1) / / BOARD_SIZE; - int col = (choice - 1) % % BOARD_SIZE; + int row = (choice - 1) / BOARD_SIZE; + int col = (choice - 1) % BOARD_SIZE; board[row][col] = currentPlayer; currentPlayer = switchPlayer(currentPlayer); From b690c7e673ae766b2cdc4f5f639fae28436f7e53 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 18:14:59 +0000 Subject: [PATCH 123/375] refactoring: Using const for game symbol constants --- src/main/c/GameTic_Tac_Toe/game.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index e56e55f..ec98aec 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -4,7 +4,8 @@ char board[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}}; char currentPlayer = 'X'; - +const char PLAYER_X = 'X'; +const char PLAYER_O = 'O'; // Funktionen zur Anzeige des Spielbretts void displayBoard() { printf("Tic-Tac-Toe\n"); From 0721be55c82ee5cbbfe631cf08501bd091df9d6b Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 18:16:46 +0000 Subject: [PATCH 124/375] refactoring: Removing the currentPlayer global variable --- src/main/c/GameTic_Tac_Toe/game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index ec98aec..8615cb8 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -60,7 +60,7 @@ int isBoardFull() { // Funktion zum Zug eines Spielers char switchPlayer(char currentPlayer) { - return (currentPlayer == 'X') ? 'O' : 'X'; + return (currentPlayer == PLAYER_X) ? PLAYER_O : PLAYER_X; } int isValidMove(int choice) { From dff9fd6ec9fdcd792ff6f2628a11a7e213fcd57a Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 18:20:35 +0000 Subject: [PATCH 125/375] refactoring: Using a loop --- src/main/c/GameTic_Tac_Toe/game.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 8615cb8..177acc8 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -6,16 +6,22 @@ char board[3][3] = {{'1', '2', '3'}, char currentPlayer = 'X'; const char PLAYER_X = 'X'; const char PLAYER_O = 'O'; + // Funktionen zur Anzeige des Spielbretts void displayBoard() { printf("Tic-Tac-Toe\n"); - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 3; j++) { + for (int i = 0; i < BOARD_SIZE; i++) { + for (int j = 0; j < BOARD_SIZE; j++) { printf("%c", board[i][j]); - if (j < 2) printf(" | "); - } + if (j < BOARD_SIZE - 1) printf(" | "); + } printf("\n"); - if (i < 2) printf("---------\n"); + if (i < BOARD_SIZE - 1) { + for (int k = 0; k < BOARD_SIZE * 4 - 1; k++) { + printf("-"); + } + printf("\n"); + } } } char checkLine(char a, char b, char c) { From 6d1d96c4d9732867d1f69a2ebca2af38fe51cd3c Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 18:35:42 +0000 Subject: [PATCH 126/375] refactoring: char replaced with enum --- src/main/c/GameTic_Tac_Toe/game.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 177acc8..ea95618 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -24,14 +24,16 @@ void displayBoard() { } } } + char checkLine(char a, char b, char c) { if (a == b && b == c) return a; return ' '; } + // Funktion zur Überprüfung des Gewinners char checkWinner() { // Überprüfe horizontale und vertikale Linien - for (int i = 0; i < 3; i++) { + for (int i = 0; i < BOARD_SIZE; i++) { char horizontalWinner = checkLine(board[i][0], board[i][1], board[i][2]); char verticalWinner = checkLine(board[0][i], board[1][i], board[2][i]); @@ -65,7 +67,7 @@ int isBoardFull() { // Funktion zum Zug eines Spielers -char switchPlayer(char currentPlayer) { +enum switchPlayer(enum currentPlayer) { return (currentPlayer == PLAYER_X) ? PLAYER_O : PLAYER_X; } From 51aff089d80018462a17f45565432ff16bf07f76 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 18:44:21 +0000 Subject: [PATCH 127/375] refactoring: replacing larger parts --- src/main/c/GameTic_Tac_Toe/game.c | 35 ++++++++++++++++--------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index ea95618..3b7f017 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -80,14 +80,14 @@ int isValidMove(int choice) { void makeMove() { int choice; - printf("Spieler %c, waehle eine Zahl (1-9): ", currentPlayer); + printf("Spieler %c, waehle eine Zahl (1-9): ", currentPlayer == PLAYER_X) ? 'X' : 'O'); scanf("%d", &choice); // Konvertiere die Zahl in Zeilen- und Spaltenindex if (isValidMove(choice)) { int row = (choice - 1) / BOARD_SIZE; int col = (choice - 1) % BOARD_SIZE; - board[row][col] = currentPlayer; + board[row][col] = currentPlayer == PLAYER_X) ? 'X' : 'O'; currentPlayer = switchPlayer(currentPlayer); } else { @@ -96,25 +96,26 @@ if (isValidMove(choice)) { } } +int isGameOver() { + char winner = checkWinner(); + return (winner == PLAYER_X || winner == PLAYER_O || isBoardFull()); +} + +void printGameResult(char winner) { + if (winner == PLAYER_X || winner == PLAYER_O) { + printf("Spieler %c gewinnt!\n", (winner == PLAYER_X) ? 'X' : 'O'); + } else { + printf("Unentschieden!\n"); + } +} + void playGame() { - while (1) { + while (!isGameOver()) { displayBoard(); makeMove(); - - char winner = checkWinner(); - if (winner == 'X' || winner == 'O') { - displayBoard(); - printf("Spieler %c gewinnt!\n", winner); - break; - } - - if (isBoardFull()) { - displayBoard(); - printf("Unentschieden!\n"); - break; - } } -} + + //Fehlt etwas, änderung folgt; int main(){ playGame(); return 0; From 3989ecb68131b39183b56acdd5f9ba06e24f0cef Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 18:45:51 +0000 Subject: [PATCH 128/375] refactoring: added missing part --- src/main/c/GameTic_Tac_Toe/game.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index 3b7f017..f72b814 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -115,7 +115,11 @@ void playGame() { makeMove(); } - //Fehlt etwas, änderung folgt; + displayBoard(); + char winner = checkWinner(); + printGameResult(winner); +} + int main(){ playGame(); return 0; From 4cdef01b3a4c00d51b701701ed1780c878177253 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Tue, 30 Jan 2024 19:14:53 +0000 Subject: [PATCH 129/375] refactoring: correct the errors --- src/main/c/GameTic_Tac_Toe/game.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/game.c index f72b814..443fe8d 100644 --- a/src/main/c/GameTic_Tac_Toe/game.c +++ b/src/main/c/GameTic_Tac_Toe/game.c @@ -1,5 +1,6 @@ #include +const int BOARD_SIZE = 3; char board[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}}; @@ -52,8 +53,6 @@ char checkWinner() { } // Funktion zur Überprüfung, ob das Spiel unentschieden ist -const int BOARD_SIZE = 3; - int isBoardFull() { for (int i = 0; i < BOARD_SIZE; i++) { for (int j = 0; j < BOARD_SIZE; j++) { @@ -67,7 +66,7 @@ int isBoardFull() { // Funktion zum Zug eines Spielers -enum switchPlayer(enum currentPlayer) { +char switchPlayer(char currentPlayer) { return (currentPlayer == PLAYER_X) ? PLAYER_O : PLAYER_X; } @@ -80,14 +79,14 @@ int isValidMove(int choice) { void makeMove() { int choice; - printf("Spieler %c, waehle eine Zahl (1-9): ", currentPlayer == PLAYER_X) ? 'X' : 'O'); + printf("Spieler %c, waehle eine Zahl (1-9): ", (currentPlayer == PLAYER_X) ? 'X' : 'O'); scanf("%d", &choice); // Konvertiere die Zahl in Zeilen- und Spaltenindex if (isValidMove(choice)) { int row = (choice - 1) / BOARD_SIZE; int col = (choice - 1) % BOARD_SIZE; - board[row][col] = currentPlayer == PLAYER_X) ? 'X' : 'O'; + board[row][col] = (currentPlayer == PLAYER_X) ? 'X' : 'O'; currentPlayer = switchPlayer(currentPlayer); } else { From 20e5561526c78d54b721eef846afba80e411298e Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Wed, 31 Jan 2024 12:23:59 +0000 Subject: [PATCH 130/375] Add new directory --- test/tests_tictactoe.game/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/tests_tictactoe.game/.gitkeep diff --git a/test/tests_tictactoe.game/.gitkeep b/test/tests_tictactoe.game/.gitkeep new file mode 100644 index 0000000..e69de29 From a1de4d4bb84dbd5a60038e1bbf0948729656be0c Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Wed, 31 Jan 2024 12:27:00 +0000 Subject: [PATCH 131/375] Delete .gitkeep --- test/tests_tictactoe.game/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 test/tests_tictactoe.game/.gitkeep diff --git a/test/tests_tictactoe.game/.gitkeep b/test/tests_tictactoe.game/.gitkeep deleted file mode 100644 index e69de29..0000000 From f756c806111db52ec747236f56681fff766dec18 Mon Sep 17 00:00:00 2001 From: Ariana Ginju Date: Wed, 31 Jan 2024 12:28:08 +0000 Subject: [PATCH 132/375] Add new file --- test/test_tictactoe.c | 1 + 1 file changed, 1 insertion(+) create mode 100644 test/test_tictactoe.c diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/test/test_tictactoe.c @@ -0,0 +1 @@ + From c3865b164d9defa4a3517efa1462beb07ad2f939 Mon Sep 17 00:00:00 2001 From: Julia Selig Date: Wed, 31 Jan 2024 13:09:11 +0000 Subject: [PATCH 133/375] Erstellen Spielfeld --- src/main/c/Pong/game.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 8b13789..b2969e0 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -1 +1,25 @@ +#include +#define WIDTH 40 //Breite Spielfeld +#define HEIGHT 20 //Höhe Spielfeld + +void drawField() { + for (int i = 0; i <= HEIGHT; i++){ + for (int j = 0; j <= WIDTH; j++){ + if (i == 0 || i == HEIGHT){ + printf("-"); + } else if ("i == 0 || j == WIDTH") { + printf("|"); + } else { + printf(" "); + } + } + printf("\n"); + } +} + +int main(){ + drawField(); + + return 0; +} From fbe98a9f624723744e1b8add7c101ed83b395d3d Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 31 Jan 2024 14:11:25 +0100 Subject: [PATCH 134/375] Game Over --- cmake-build-debug/.ninja_deps | Bin 10232 -> 12840 bytes cmake-build-debug/.ninja_log | 6 ++++++ .../src/main/c/Hangman/word_selector.c.o | Bin 3072 -> 3072 bytes src/main/c/Hangman/playHangman.c | 9 ++++++--- src/main/c/Hangman/playHangman.h | 1 + 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index 884aefbf537551877b2baf6c41e2bbd0018e5860..7d5b5d0938bbe3b64c05a200b6d3367d5925ad09 100644 GIT binary patch delta 565 zcmez2zanMB4|UN3Muvs}1_lNnIhmIM1?$BFf$X5o3uVn2CqGb06HYEIDoV{O2`))2 zN!3f%%V%JiJ6TuWM*vlvVGc-814S@{VfO$3|CcZ@G$a9y+@Aw6J{ibPnY>VTGGo9* zLDR{0svN=vIf<1XiFxU{iFptk7-oU3KoMtPm&V zVoqjND%`B;Fi8SZuYo%qp*1In2)xslDAx2QBP6)MRvdGbV_ zaL)3~yps45y^Kj{HsvkhFrUJdE;Gqi+$uuB49pqJ3paO=>$!}Gp zJ+pwUY#`17VhLFV#v%vrW delta 7 OcmZ3H^22|_4|M<$G6W+4 diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index 0a3593e..d117789 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -7,3 +7,9 @@ 0 106 1706551301992114407 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 1 44 1706122039878920765 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o 69a5bcd8c57a43b3 106 195 1706551302079685763 pmuw_projekt_notebinder fbb48fd3bf0b96c1 +0 213 1706706276607336012 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 +1 214 1706706276607356095 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o c4eef1ff589ab182 +1 214 1706706276608460832 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 +1 214 1706706276607344137 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 +1 214 1706706276607374928 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o cdaff7b94c55641c +1 214 1706706276607365429 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o 7d64de4520ec9e97 diff --git a/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o b/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o index d4f2c70953be0c024e5cd4578c85474bcb7f1b00..a81ae5130f1cae010503c93b8dbee5158b1c90e5 100644 GIT binary patch delta 41 xcmZpWXpq>z&(6p^S%BS(Uurf30|O`1#F{`x1_nmC&6(_x%#4zo4|CZv0syla2$KK+ delta 41 xcmZpWXpq>z&(6p`S%BS(Uv4%70|O`1#F{`x1_nl@&6(_x%#5;|4|CZv0sypC2%`W1 diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 178c872..e90d030 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -46,14 +46,17 @@ void playHangman(char *wordToGuess) { mistakes++; } - // Check if the player guessed all the letters + // Win: Check if the player guessed all the letters if (strcmp(currentGuess,wordToGuess) == 0){ currentState(currentGuess, mistakes); printf("Bravo! You guessed the word: %s \n", wordToGuess); break; } - - + // Lose: Print the answer + game over + if (mistakes == MAX_MISTAKES){ + currentState(currentGuess, mistakes); + printf("Oops! You have no more guesses :( \n The answer was: %s \n", wordToGuess); + } } } \ No newline at end of file diff --git a/src/main/c/Hangman/playHangman.h b/src/main/c/Hangman/playHangman.h index c28fb46..6a96e42 100644 --- a/src/main/c/Hangman/playHangman.h +++ b/src/main/c/Hangman/playHangman.h @@ -9,4 +9,5 @@ #include "initializeHangman.c" #include "rules.c" #include "currentState.c" +#include "drawHangman.c" #endif //PMUW_PROJEKT_NOTEBINDER_PLAYHANGMAN_H From 753dd2211c81e1989d33795aebe3ba6cbd3a4434 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 13:32:36 +0000 Subject: [PATCH 135/375] =?UTF-8?q?Hinzuf=C3=BCgen=20Schl=C3=A4gel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/game.c | 32 +++++++++++++++++++++++++++++--- 1 file changed, 29 insertions(+), 3 deletions(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index b2969e0..f97a3f0 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -2,14 +2,20 @@ #define WIDTH 40 //Breite Spielfeld #define HEIGHT 20 //Höhe Spielfeld +#define PADDLE_LENGTH 4 +#define PADDLE '#' -void drawField() { +void drawField(int paddle1PositionY, int paddle2PositionY) { for (int i = 0; i <= HEIGHT; i++){ for (int j = 0; j <= WIDTH; j++){ if (i == 0 || i == HEIGHT){ printf("-"); - } else if ("i == 0 || j == WIDTH") { + } else if ("j == 0 || j == WIDTH") && (i < paddle1PositionY || i >= paddle1PositionY + PADDLE_LENGTH) && (i < paddle2PositionY || i >= paddle2PositionY + PADDLE_LENGTH)) { printf("|"); + } else if (i >= paddle1PositionY && i < paddle1PositionY + PADDLE_LENGTH && j == WIDTH) { + printf("%c", PADDLE); + }else if (i >= paddle2PositionY && i < paddle2PositionY + PADDLE_LENGTH && j == 0) { + printf("%c", PADDLE); } else { printf(" "); } @@ -19,7 +25,27 @@ void drawField() { } int main(){ - drawField(); + int paddle1PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; + int paddle2PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; + while (1) { + if (kbhit()){ + char input = getch(); + if (input == 'w' && paddle1PositionY > 1) + { + paddle1PositionY--; + } else if (input == 's' && paddle1PositionY < HEIGHT - PADDLE_LENGTH - 1) { + paddle1PositionY++; + } + } + +// Hier Steuerung für Schläger 2 noch reinschreiben + + draw Field(paddle1PositionY, paddle2PositionY); + + } + return 0; } + + From 2e38b367d885f0805a843b99b1b5b62f927dabfc Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 13:53:00 +0000 Subject: [PATCH 136/375] =?UTF-8?q?Hinzuf=C3=BCgen=20Schl=C3=A4gel=202?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/game.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index f97a3f0..69d6a31 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -24,6 +24,7 @@ void drawField(int paddle1PositionY, int paddle2PositionY) { } } + int main(){ int paddle1PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; int paddle2PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; @@ -39,7 +40,15 @@ int main(){ } } -// Hier Steuerung für Schläger 2 noch reinschreiben +//Steuerung für Schläger 2 + if (kbhit()){ + char input = getch(); + if (input == 'i' && paddle2PositionY > 1) { + paddle2PositionY--; + } else if (input == 'k' && paddle2PositionY < HEIGHT - PADDLE_LENGTH - 1){ + paddle2PositionY++; + } + } draw Field(paddle1PositionY, paddle2PositionY); From 1e473e2d0bb1f4e2e60257dd06d122889ff7ec61 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 13:59:23 +0000 Subject: [PATCH 137/375] =?UTF-8?q?Hinzuf=C3=BCgen=20Tastatureingabe?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/game.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 69d6a31..e8b68d6 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -1,4 +1,5 @@ #include +#include #define WIDTH 40 //Breite Spielfeld #define HEIGHT 20 //Höhe Spielfeld @@ -24,6 +25,36 @@ void drawField(int paddle1PositionY, int paddle2PositionY) { } } +int kbhit(void){ + struct termios oldt, newt; + int ch, oldf; + + tcgetattr(STDIN_FILENO, &oldt); + newt = oldt; + newt.c_lflag &= ~(ICANON | ECHO); + tcsetattr(STDIN_FILENO, TCSANOW, &newt); + oldf = fcntl(STDIN_FILENO, F_GETFL, 0); + fcntl(STDIN_FILENO, F_SETFL, oldf | O_NONBLOCK); + + ch = getchar(); + + tcsetattr(STDIN_FILENO, TCSANOW, &oldt); + fcntl(STDIN_FILENO, F_SETFL, oldf); + + if (ch != EOF) { + ungetc(ch, stdin); + return 1; +} +return 0; +} + +int getch(void) { + int ch; + + while ((ch = getchar()) == '\n'); + + return ch; +} int main(){ int paddle1PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; From 30b212b1cff3dfaa6bbf2a31b1dc354f5c63acf5 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 14:54:05 +0000 Subject: [PATCH 138/375] =?UTF-8?q?Bildschirm=20l=C3=B6schen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/game.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index e8b68d6..6453f7a 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -1,12 +1,20 @@ #include #include +#include #define WIDTH 40 //Breite Spielfeld #define HEIGHT 20 //Höhe Spielfeld #define PADDLE_LENGTH 4 #define PADDLE '#' +// Bildschirm löschen nach Veränderung Position +void clearScreen() { + system("clear"); +} + void drawField(int paddle1PositionY, int paddle2PositionY) { + clearScreen(); + for (int i = 0; i <= HEIGHT; i++){ for (int j = 0; j <= WIDTH; j++){ if (i == 0 || i == HEIGHT){ @@ -15,7 +23,7 @@ void drawField(int paddle1PositionY, int paddle2PositionY) { printf("|"); } else if (i >= paddle1PositionY && i < paddle1PositionY + PADDLE_LENGTH && j == WIDTH) { printf("%c", PADDLE); - }else if (i >= paddle2PositionY && i < paddle2PositionY + PADDLE_LENGTH && j == 0) { + } else if (i >= paddle2PositionY && i < paddle2PositionY + PADDLE_LENGTH && j == 0) { printf("%c", PADDLE); } else { printf(" "); @@ -61,6 +69,7 @@ int main(){ int paddle2PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; while (1) { + //Steuerung für Schläger 1 if (kbhit()){ char input = getch(); if (input == 'w' && paddle1PositionY > 1) From 1636b53e131649af149ba398d43d5b1795e4d832 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 14:55:36 +0000 Subject: [PATCH 139/375] Verlangsamen Schleife --- src/main/c/Pong/game.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 6453f7a..11a11b4 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -1,6 +1,7 @@ #include #include #include +#include #define WIDTH 40 //Breite Spielfeld #define HEIGHT 20 //Höhe Spielfeld @@ -92,6 +93,8 @@ int main(){ draw Field(paddle1PositionY, paddle2PositionY); + usleep(100000); //Verlangsamen Schleife/Spiel + } } return 0; From 6d51598c4ea5babe36686c5f3ce1981a15deed8c Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 15:10:01 +0000 Subject: [PATCH 140/375] Implementierung Ball --- src/main/c/Pong/game.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 11a11b4..c6067ed 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -7,13 +7,22 @@ #define HEIGHT 20 //Höhe Spielfeld #define PADDLE_LENGTH 4 #define PADDLE '#' +#define BALL 'O' + +//Ballstruktur +typedef struct { + int x; + int y; + int speedX; + int speedY; +} Ball; // Bildschirm löschen nach Veränderung Position void clearScreen() { system("clear"); } -void drawField(int paddle1PositionY, int paddle2PositionY) { +void drawField(int paddle1PositionY, int paddle2PositionY, Ball ball) { clearScreen(); for (int i = 0; i <= HEIGHT; i++){ From d1a3a890c1daad92c1685786f3e56b07b3ea5d4d Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 15:13:19 +0000 Subject: [PATCH 141/375] Startposition&Geschwindigkeit des Balles --- src/main/c/Pong/game.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index c6067ed..f0f382e 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -35,6 +35,8 @@ void drawField(int paddle1PositionY, int paddle2PositionY, Ball ball) { printf("%c", PADDLE); } else if (i >= paddle2PositionY && i < paddle2PositionY + PADDLE_LENGTH && j == 0) { printf("%c", PADDLE); + } else if (i == ball.y && j == ball.x) { + printf("%c", BALL); } else { printf(" "); } @@ -77,6 +79,7 @@ int getch(void) { int main(){ int paddle1PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; int paddle2PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; + Ball ball = {WIDTH / 2, HEIGHT / 2, 1, 1}; //Startposition&Geschwindigkeit Ball while (1) { //Steuerung für Schläger 1 From e88f7ff2e6d1f7d42428f18763751b40ca3b13cf Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 15:14:28 +0000 Subject: [PATCH 142/375] Bewegung Ball --- src/main/c/Pong/game.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index f0f382e..4030b11 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -102,6 +102,10 @@ int main(){ paddle2PositionY++; } } + + //Bewegung Ball + ball.x += ball.speedX; + ball.y += ball.speedY; draw Field(paddle1PositionY, paddle2PositionY); From 2b8a70f000ed8139501f1ed38e13f697ef031be2 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 15:17:33 +0000 Subject: [PATCH 143/375] =?UTF-8?q?Ball=20Kollision=20mit=20Schl=C3=A4gern?= =?UTF-8?q?=20und=20W=C3=A4nden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/game.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 4030b11..90f45f3 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -107,12 +107,22 @@ int main(){ ball.x += ball.speedX; ball.y += ball.speedY; + //Kollision Ball (mit Schlägern und Wänden) + if (ball.y <= 0 || ball.y >= HEIGHT - 1){ + ball.speedY = -ball.speedY; + } + if (ball.x == 1 && (ball.y >= paddle2PositionY && ball.y < paddle2PositionY + PADDLE_LENGTH)){ + ball.speedX = -ball.speedX; + } + if (ball.x == WIDTH - 1 && (ball.y >= paddle1PositionY && ball.y < paddle1PositionY + PADDLE_LENGTH)){ + ball.speedX = -ball.speedX; + } + draw Field(paddle1PositionY, paddle2PositionY); usleep(100000); //Verlangsamen Schleife/Spiel } - } - + return 0; } From 16041ce71143a5a0d555aeb277b4c2e84be5cf9b Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 15:24:18 +0000 Subject: [PATCH 144/375] Spielstand --- src/main/c/Pong/game.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 90f45f3..ce46d29 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -22,7 +22,7 @@ void clearScreen() { system("clear"); } -void drawField(int paddle1PositionY, int paddle2PositionY, Ball ball) { +void drawField(int paddle1PositionY, int paddle2PositionY, Ball ball, int score1, int score2) { clearScreen(); for (int i = 0; i <= HEIGHT; i++){ @@ -43,6 +43,9 @@ void drawField(int paddle1PositionY, int paddle2PositionY, Ball ball) { } printf("\n"); } + + printf("Spieler 1: %d\tSpieler 2: %d\n", score1, score2); + } int kbhit(void){ @@ -64,7 +67,7 @@ int kbhit(void){ if (ch != EOF) { ungetc(ch, stdin); return 1; -} + } return 0; } @@ -118,6 +121,20 @@ int main(){ ball.speedX = -ball.speedX; } + // Punkte zählen + if (ball.x <= 0){ + score1++; + ball.x = WIDTH / 2; + ball.y = HEIGHT / 2; + ball.speedX = -ball.speedX; + } + if (ball.x >= WIDTH - 1){ + score2++; + ball.x = WIDTH / 2; + ball.y = HEIGHT / 2; + ball.speedX = -ball.speedX; + } + draw Field(paddle1PositionY, paddle2PositionY); usleep(100000); //Verlangsamen Schleife/Spiel From 20ea5a7cbc65f36d7f9db23622d93ddc629ecb54 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 15:32:46 +0000 Subject: [PATCH 145/375] Spielstand (vergessen zu implementieren variable) --- src/main/c/Pong/game.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index ce46d29..3bb88ad 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -83,6 +83,8 @@ int main(){ int paddle1PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; int paddle2PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; Ball ball = {WIDTH / 2, HEIGHT / 2, 1, 1}; //Startposition&Geschwindigkeit Ball + int score1 = 0; + int score2 = 0; while (1) { //Steuerung für Schläger 1 From eadc41ecfb1554d6dae53cc4ad57e5da65ce62b9 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 15:46:23 +0000 Subject: [PATCH 146/375] Spiel beenden wenn Punktestand erreicht --- src/main/c/Pong/game.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 3bb88ad..71b56a2 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -85,6 +85,7 @@ int main(){ Ball ball = {WIDTH / 2, HEIGHT / 2, 1, 1}; //Startposition&Geschwindigkeit Ball int score1 = 0; int score2 = 0; + int maxScore = 5; while (1) { //Steuerung für Schläger 1 @@ -137,7 +138,13 @@ int main(){ ball.speedX = -ball.speedX; } - draw Field(paddle1PositionY, paddle2PositionY); + draw Field(paddle1PositionY, paddle2PositionY,score1, score2); + + // Spielende überprüfen + if (score1 == maxScore || score2 == maxScore) { + printf("Spiel beendet!\n"); + break; + } usleep(100000); //Verlangsamen Schleife/Spiel } From 587dc8334f80412594ad99aa4599b6a31a2f2c95 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 15:51:37 +0000 Subject: [PATCH 147/375] Ball anzeigen (vergessen) --- src/main/c/Pong/game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 71b56a2..eee78dc 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -138,7 +138,7 @@ int main(){ ball.speedX = -ball.speedX; } - draw Field(paddle1PositionY, paddle2PositionY,score1, score2); + draw Field(paddle1PositionY, paddle2PositionY, ball, score1, score2); // Spielende überprüfen if (score1 == maxScore || score2 == maxScore) { From 0cf720020d01f720e2363e379b09e94357954306 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 15:56:06 +0000 Subject: [PATCH 148/375] Anzeigen Gewinner --- src/main/c/Pong/game.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index eee78dc..96daa74 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -143,6 +143,11 @@ int main(){ // Spielende überprüfen if (score1 == maxScore || score2 == maxScore) { printf("Spiel beendet!\n"); + if (score1 == maxScore) { + printf("Spieler 1 gewinnt!\n"); + } else { + printf("Spieler 2 gewinnt!\n"); + } break; } From 13a15d1fc6b9b409003ab0b1c68b23a8ad5d277a Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 16:18:11 +0000 Subject: [PATCH 149/375] Spiel Pausieren --- src/main/c/Pong/game.c | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 96daa74..877ea22 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -45,6 +45,7 @@ void drawField(int paddle1PositionY, int paddle2PositionY, Ball ball, int score1 } printf("Spieler 1: %d\tSpieler 2: %d\n", score1, score2); + printf("Drücken Sie 'p', um das Spiel zu pausieren.\n"); } @@ -86,28 +87,38 @@ int main(){ int score1 = 0; int score2 = 0; int maxScore = 5; + int isPaused = 0; while (1) { //Steuerung für Schläger 1 if (kbhit()){ char input = getch(); - if (input == 'w' && paddle1PositionY > 1) + if (input == 'w' && paddle1PositionY > 1 && !isPaused) { paddle1PositionY--; - } else if (input == 's' && paddle1PositionY < HEIGHT - PADDLE_LENGTH - 1) { + } else if (input == 's' && paddle1PositionY < HEIGHT - PADDLE_LENGTH - 1 && !isPaused) { paddle1PositionY++; + } else if (input == 'p') { + isPaused = !isPaused; } } //Steuerung für Schläger 2 if (kbhit()){ char input = getch(); - if (input == 'i' && paddle2PositionY > 1) { + if (input == 'i' && paddle2PositionY > 1 && !isPaused) { paddle2PositionY--; - } else if (input == 'k' && paddle2PositionY < HEIGHT - PADDLE_LENGTH - 1){ + } else if (input == 'k' && paddle2PositionY < HEIGHT - PADDLE_LENGTH - 1 && !isPaused){ paddle2PositionY++; + } else if (input == 'p') { + isPaused = !isPaused; } } + + //Wenn Pauseiert + if (isPaused) { + continue; + } //Bewegung Ball ball.x += ball.speedX; From cbf0e4a79b73f622515a622ae9b7fad74f4f9d32 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 16:27:49 +0000 Subject: [PATCH 150/375] refactoring:_optimierungpausierung --- src/main/c/Pong/game.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 877ea22..4d72e10 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -91,12 +91,12 @@ int main(){ while (1) { //Steuerung für Schläger 1 - if (kbhit()){ + if (!isPaused && kbhit()){ char input = getch(); - if (input == 'w' && paddle1PositionY > 1 && !isPaused) + if (input == 'w' && paddle1PositionY > 1) { paddle1PositionY--; - } else if (input == 's' && paddle1PositionY < HEIGHT - PADDLE_LENGTH - 1 && !isPaused) { + } else if (input == 's' && paddle1PositionY < HEIGHT - PADDLE_LENGTH - 1) { paddle1PositionY++; } else if (input == 'p') { isPaused = !isPaused; @@ -104,11 +104,11 @@ int main(){ } //Steuerung für Schläger 2 - if (kbhit()){ + if (!isPaused && kbhit()){ char input = getch(); - if (input == 'i' && paddle2PositionY > 1 && !isPaused) { + if (input == 'i' && paddle2PositionY > 1){ paddle2PositionY--; - } else if (input == 'k' && paddle2PositionY < HEIGHT - PADDLE_LENGTH - 1 && !isPaused){ + } else if (input == 'k' && paddle2PositionY < HEIGHT - PADDLE_LENGTH - 1){ paddle2PositionY++; } else if (input == 'p') { isPaused = !isPaused; @@ -117,6 +117,7 @@ int main(){ //Wenn Pauseiert if (isPaused) { + drawField(paddle1PositionY, paddle2PositionY, ball, score1, score2, 1); continue; } From 285a26a686575e263fd687ff059935b82b449453 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 16:36:45 +0000 Subject: [PATCH 151/375] Vergessen Int isPaused --- src/main/c/Pong/game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 4d72e10..5e9636e 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -22,7 +22,7 @@ void clearScreen() { system("clear"); } -void drawField(int paddle1PositionY, int paddle2PositionY, Ball ball, int score1, int score2) { +void drawField(int paddle1PositionY, int paddle2PositionY, Ball ball, int score1, int score2, int isPaused) { clearScreen(); for (int i = 0; i <= HEIGHT; i++){ From fdaacc75eebe3cfa36a73b7fe6d24589ea244840 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 16:39:39 +0000 Subject: [PATCH 152/375] Aktualisiert Spielpause --- src/main/c/Pong/game.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 5e9636e..75fdbc6 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -45,8 +45,11 @@ void drawField(int paddle1PositionY, int paddle2PositionY, Ball ball, int score1 } printf("Spieler 1: %d\tSpieler 2: %d\n", score1, score2); - printf("Drücken Sie 'p', um das Spiel zu pausieren.\n"); - + if (isPaused) { + printf("Spiel pausiert. Drücken Sie 'p', um fortzufahren.\n"); + } else { + printf("Drücken Sie 'p', um das Spiel zu pausieren.\n"); + } } int kbhit(void){ From 1ce01e7bb349af9b407115fb0faf31b1c2b94794 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 16:42:54 +0000 Subject: [PATCH 153/375] refactoring:_aktualisieren_ballposition_nun_an_zentraler_Stelle --- src/main/c/Pong/game.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 75fdbc6..c74f466 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -83,6 +83,13 @@ int getch(void) { return ch; } +//Aktualisierung Ballposition +void updateBallPosition(Ball *ball) { + ball->x += ball->speedX; + ball->y += ball->speedY; +} + + int main(){ int paddle1PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; int paddle2PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; From c2ce23c9fd2bcaceb3ba749850652ee4b974c02d Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 16:46:17 +0000 Subject: [PATCH 154/375] refactoring:_verbesserung_kollision --- src/main/c/Pong/game.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index c74f466..b2ca2e0 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -89,6 +89,20 @@ void updateBallPosition(Ball *ball) { ball->y += ball->speedY; } +//Verbesserung Kollision mit Schlägern&Wänden +int checkCollision(Ball ball, int paddle1PositionY, int paddle2PositionY) { + // Kollision mit Schlägern und Wänden + if (ball.y <= 0 || ball.y >= HEIGHT - 1){ + ball.speedY = -ball.speedY; + } + if (ball.x == 1 && (ball.y >= paddle2PositionY && ball.y < paddle2PositionY + PADDLE_LENGTH)){ + ball.speedX = -ball.speedX; + } + + if (ball.x == WIDTH - 1 && (ball.y >= paddle1PositionY && ball.y < paddle1PositionY + PADDLE_LENGTH)){ + ball.speedX = -ball.speedX; + } + int main(){ int paddle1PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; From 8720b8fba938cf70335143b4ca95ba61edf341e8 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 16:47:31 +0000 Subject: [PATCH 155/375] =?UTF-8?q?refactoring:=5Fbesser=5Fpunkte=5Fz?= =?UTF-8?q?=C3=A4hlen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/game.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index b2ca2e0..c1d554f 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -103,6 +103,17 @@ int checkCollision(Ball ball, int paddle1PositionY, int paddle2PositionY) { ball.speedX = -ball.speedX; } + //Punkte zählen + if (ball.x <= 0){ + return 1; // Spieler 2 gewinnt Punkt + } + + if (ball.x >= WIDTH - 1){ + return 2; // Spieler 1 gewinnt Punkt + } + + return 0; // kein Punkt +} int main(){ int paddle1PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; From b5518b41cdc8ba21e93da1e74d3b6ee2c3421727 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 16:49:42 +0000 Subject: [PATCH 156/375] =?UTF-8?q?refactoring:=5Fverbesserung=5Fpunktez?= =?UTF-8?q?=C3=A4hlen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index c1d554f..6e3bc64 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -124,7 +124,7 @@ int main(){ int maxScore = 5; int isPaused = 0; - while (1) { + while (score1 < maxScore && score2 < maxScore) { //Steuerung für Schläger 1 if (!isPaused && kbhit()){ char input = getch(); From 99f33da69ec53c9b8a04ff6dbc7fd9bd71ce8192 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 16:59:24 +0000 Subject: [PATCH 157/375] refactoring:_verbesserung_aktualisierung_spielstand_und_ballposition --- src/main/c/Pong/game.c | 47 ++++++++++++++---------------------------- 1 file changed, 15 insertions(+), 32 deletions(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 6e3bc64..4f6008e 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -157,50 +157,33 @@ int main(){ } //Bewegung Ball - ball.x += ball.speedX; - ball.y += ball.speedY; + updateBallPosition(&ball); + int result = checkCollision(ball, paddle1PositionY, paddle2PositionY); - //Kollision Ball (mit Schlägern und Wänden) - if (ball.y <= 0 || ball.y >= HEIGHT - 1){ - ball.speedY = -ball.speedY; - } - if (ball.x == 1 && (ball.y >= paddle2PositionY && ball.y < paddle2PositionY + PADDLE_LENGTH)){ - ball.speedX = -ball.speedX; - } - if (ball.x == WIDTH - 1 && (ball.y >= paddle1PositionY && ball.y < paddle1PositionY + PADDLE_LENGTH)){ - ball.speedX = -ball.speedX; - } - - // Punkte zählen - if (ball.x <= 0){ - score1++; + //Aktualisiert Spielstand und Ballposition + if (result == 1) { + score2++; ball.x = WIDTH / 2; ball.y = HEIGHT / 2; ball.speedX = -ball.speedX; - } - if (ball.x >= WIDTH - 1){ - score2++; + } else if (result == 2) { + score1++; ball.x = WIDTH / 2; ball.y = HEIGHT / 2; ball.speedX = -ball.speedX; } - draw Field(paddle1PositionY, paddle2PositionY, ball, score1, score2); - - // Spielende überprüfen - if (score1 == maxScore || score2 == maxScore) { - printf("Spiel beendet!\n"); - if (score1 == maxScore) { - printf("Spieler 1 gewinnt!\n"); - } else { - printf("Spieler 2 gewinnt!\n"); - } - break; - } - + drawField(paddle1PositionY, paddle2PositionY, ball, score1, score2, 0); usleep(100000); //Verlangsamen Schleife/Spiel } + clearScreen(); + if (score1 == maxScore) { + printf("Spieler 1 gewinnt!\n"); + } else { + printf("Spieler 2 gewinnt!\n"); + } + return 0; } From 9d072197a96f32b73dc6e9c05c80256455b21d53 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 17:10:03 +0000 Subject: [PATCH 158/375] =?UTF-8?q?Zur=C3=BCcksetzen=20Spielstand?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/game.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 4f6008e..835c600 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -115,6 +115,12 @@ int checkCollision(Ball ball, int paddle1PositionY, int paddle2PositionY) { return 0; // kein Punkt } +//Reset +void resetScore(int *score1, int *score2) { + *score1 = 0; + *score2 = 0; +} + int main(){ int paddle1PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; int paddle2PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; @@ -173,6 +179,8 @@ int main(){ ball.speedX = -ball.speedX; } + resetScore(&score1, &score2); //Zurücksetzen Spielstand + drawField(paddle1PositionY, paddle2PositionY, ball, score1, score2, 0); usleep(100000); //Verlangsamen Schleife/Spiel } From 6c33a64a5d37897cf9a50935cd5835226cd00b73 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 21:00:19 +0000 Subject: [PATCH 159/375] Stoppen des Spiels --- src/main/c/Pong/game.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 835c600..b50acba 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -50,6 +50,7 @@ void drawField(int paddle1PositionY, int paddle2PositionY, Ball ball, int score1 } else { printf("Drücken Sie 'p', um das Spiel zu pausieren.\n"); } + printf("Drücken Sie 'q', um das Spiel zu beenden.\n"); } int kbhit(void){ @@ -141,8 +142,12 @@ int main(){ paddle1PositionY++; } else if (input == 'p') { isPaused = !isPaused; - } + } else if (input == 'q') { + clearScreen(); + printf("Spiel beendet.\n"); + return 0; } + } //Steuerung für Schläger 2 if (!isPaused && kbhit()){ @@ -153,6 +158,10 @@ int main(){ paddle2PositionY++; } else if (input == 'p') { isPaused = !isPaused; + } else if (input == 'q') { + clearScreen(); + printf("Spiel beendet.\n"); + return 0; } } From a0e35087acf85c99ca175cb37dd8e4aee6b1640d Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 21:30:30 +0000 Subject: [PATCH 160/375] Korrigiert --- src/main/c/Pong/game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index b50acba..fa204fb 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -29,7 +29,7 @@ void drawField(int paddle1PositionY, int paddle2PositionY, Ball ball, int score1 for (int j = 0; j <= WIDTH; j++){ if (i == 0 || i == HEIGHT){ printf("-"); - } else if ("j == 0 || j == WIDTH") && (i < paddle1PositionY || i >= paddle1PositionY + PADDLE_LENGTH) && (i < paddle2PositionY || i >= paddle2PositionY + PADDLE_LENGTH)) { + } else if ((j == 0 || j == WIDTH) && (i < paddle1PositionY || i >= paddle1PositionY + PADDLE_LENGTH) && (i < paddle2PositionY || i >= paddle2PositionY + PADDLE_LENGTH)) { printf("|"); } else if (i >= paddle1PositionY && i < paddle1PositionY + PADDLE_LENGTH && j == WIDTH) { printf("%c", PADDLE); From 4863cb3a7a88652a3599502a6d2123d690e9cb76 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Wed, 31 Jan 2024 21:33:23 +0000 Subject: [PATCH 161/375] Ball rot machen --- src/main/c/Pong/game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index fa204fb..999b1cd 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -7,7 +7,7 @@ #define HEIGHT 20 //Höhe Spielfeld #define PADDLE_LENGTH 4 #define PADDLE '#' -#define BALL 'O' +#define BALL "\033[1;31mO\033[0m" //Ballstruktur typedef struct { From 7f5ffe15da32d9d559ea16439d87e1c88a7937b7 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Thu, 1 Feb 2024 09:52:36 +0000 Subject: [PATCH 162/375] =?UTF-8?q?Schl=C3=A4gel=20rot=20machen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/game.c index 999b1cd..f399fc2 100644 --- a/src/main/c/Pong/game.c +++ b/src/main/c/Pong/game.c @@ -6,7 +6,7 @@ #define WIDTH 40 //Breite Spielfeld #define HEIGHT 20 //Höhe Spielfeld #define PADDLE_LENGTH 4 -#define PADDLE '#' +#define PADDLE "\033[1;31m#\033[0m" #define BALL "\033[1;31mO\033[0m" //Ballstruktur From 4bd1c49cc370b1a7ffc74a886b4d50379c1d17ed Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Thu, 1 Feb 2024 15:35:14 +0100 Subject: [PATCH 163/375] draw hangman based on mistakes --- cmake-build-debug/.ninja_deps | Bin 12840 -> 13436 bytes cmake-build-debug/.ninja_log | 2 ++ .../Testing/Temporary/LastTest.log | 4 ++-- src/main/c/Hangman/currentState.c | 1 + src/main/c/Hangman/currentState.h | 1 + src/main/c/Hangman/drawHangman.c | 2 +- src/main/c/Hangman/playHangman.c | 13 +++++++------ src/main/c/Hangman/playHangman.h | 7 ++----- 8 files changed, 16 insertions(+), 14 deletions(-) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index 7d5b5d0938bbe3b64c05a200b6d3367d5925ad09..b396b92a0d4c72c2842617482a283e1f842a0f49 100644 GIT binary patch delta 77 zcmZ3H@+V`1hLPwJ28M=M1_lOpBh^)V4zCxF1G4ibFO;1ux`L6RAr;8${`VX#lLlm` YgJdQL=!dWd0(n7`4duEgn`kNk001)?OaK4? delta 7 Ocmey9u_9%Ih7kY|#RGc) diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index d117789..5f3acae 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -13,3 +13,5 @@ 1 214 1706706276607344137 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 1 214 1706706276607374928 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o cdaff7b94c55641c 1 214 1706706276607365429 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o 7d64de4520ec9e97 +1 43 1706797998872539655 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 +2 56 1706797998885305995 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index f24ee92..4dbb2b2 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Jan 31 13:25 CET +Start testing: Feb 01 15:14 CET ---------------------------------------------------------- -End testing: Jan 31 13:25 CET +End testing: Feb 01 15:14 CET diff --git a/src/main/c/Hangman/currentState.c b/src/main/c/Hangman/currentState.c index 6ee9bac..e4bc459 100644 --- a/src/main/c/Hangman/currentState.c +++ b/src/main/c/Hangman/currentState.c @@ -3,4 +3,5 @@ void currentState(char *currentGuess, int mistakes) { printf("Current Word: %s \n", currentGuess); printf("Mistakes Made: %d/6 \n", mistakes); + drawHangman(mistakes); } \ No newline at end of file diff --git a/src/main/c/Hangman/currentState.h b/src/main/c/Hangman/currentState.h index 41a99ec..dbf10bf 100644 --- a/src/main/c/Hangman/currentState.h +++ b/src/main/c/Hangman/currentState.h @@ -1,4 +1,5 @@ #ifndef PMUW_PROJEKT_NOTEBINDER_CURRENTSTATE_H #define PMUW_PROJEKT_NOTEBINDER_CURRENTSTATE_H #include +#include "drawHangman.c" #endif //PMUW_PROJEKT_NOTEBINDER_CURRENTSTATE_H diff --git a/src/main/c/Hangman/drawHangman.c b/src/main/c/Hangman/drawHangman.c index 4a78ad5..46bed5b 100644 --- a/src/main/c/Hangman/drawHangman.c +++ b/src/main/c/Hangman/drawHangman.c @@ -72,7 +72,7 @@ void drawHangman(int incorrectGuesses) { printf("=========\n"); } - if (incorrectGuesses >= 7) { + if (incorrectGuesses >= 6) { printf(" \n"); printf(" __ _ __ _ _ __ ___ ___ _____ _____ _ __ \n"); printf(" / _` |/ _` | '_ ` _ \\ / _ \\ / _ \\ \\ / / _ \\ '__|\n"); diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index e90d030..31cfb79 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -1,9 +1,10 @@ #include "playHangman.h" + void playHangman(char *wordToGuess) { int mistakes = 0; - char guessedLetters[30]; //guessed letters - char currentGuess[50]; //current state of the guessed word + char guessedLetters[30]; //Guessed letters + char currentGuess[50]; //Current state of the guessed word // Initialize the current guess and print the rules initializeHangman(wordToGuess, currentGuess); @@ -17,7 +18,7 @@ void playHangman(char *wordToGuess) { printf("Enter your guess: \n"); scanf(" %c", &guess); - // check if the guess is lower case and is a letter (valid) + // Check if the guess is lower case and is a letter (valid) if (!isalpha(guess) || isupper(guess)) { printf("Please enter a valid lowercase alphabet.\n"); continue; @@ -42,19 +43,19 @@ void playHangman(char *wordToGuess) { } // Update mistakes (if the guess is wrong) - if(!found){ + if (!found) { mistakes++; } // Win: Check if the player guessed all the letters - if (strcmp(currentGuess,wordToGuess) == 0){ + if (strcmp(currentGuess, wordToGuess) == 0) { currentState(currentGuess, mistakes); printf("Bravo! You guessed the word: %s \n", wordToGuess); break; } // Lose: Print the answer + game over - if (mistakes == MAX_MISTAKES){ + if (mistakes == MAX_MISTAKES) { currentState(currentGuess, mistakes); printf("Oops! You have no more guesses :( \n The answer was: %s \n", wordToGuess); } diff --git a/src/main/c/Hangman/playHangman.h b/src/main/c/Hangman/playHangman.h index 6a96e42..ca1348e 100644 --- a/src/main/c/Hangman/playHangman.h +++ b/src/main/c/Hangman/playHangman.h @@ -1,7 +1,3 @@ -// -// Created by Saba Fazlali on 31.01.24. -// - #ifndef PMUW_PROJEKT_NOTEBINDER_PLAYHANGMAN_H #define PMUW_PROJEKT_NOTEBINDER_PLAYHANGMAN_H #include @@ -10,4 +6,5 @@ #include "rules.c" #include "currentState.c" #include "drawHangman.c" -#endif //PMUW_PROJEKT_NOTEBINDER_PLAYHANGMAN_H +#include "word_selector.c" +#endif //PMUW_PROJEKT_NOTEBINDER_PLAYHANGMAN_H \ No newline at end of file From e195415af470c1544ef34aba21d7876fec0700cb Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Thu, 1 Feb 2024 23:59:02 +0000 Subject: [PATCH 164/375] Upload New File --- src/main/c/Template/Battleship_game.c | 60 +++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 src/main/c/Template/Battleship_game.c diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c new file mode 100644 index 0000000..0bdf810 --- /dev/null +++ b/src/main/c/Template/Battleship_game.c @@ -0,0 +1,60 @@ +#include + +int feld(char prifield[]) { + + int a = 0; + + for (int i = 0; i <= 9; i++) { + + for (int j = 0; j <= 9; j++) { + printf("%c", prifield[a]); + a++; + } + + printf("\n"); + } + + return 0; +} + +int singleplayer() { + + + + +} + +int multiplayer() { + + char multi[100]; + + for (int i = 0; i <= 99; i++) { + + multi[i] = 'X'; + + } + + !feld(multi); + + + return 0; +} + + +int main() { + + int player; + + printf("*Battleship*\n\n Single player: press <1>\n Multiplayer: press <2>\n"); + scanf("%d", &player); + + if (player == 1) { + !singleplayer(); + } + else if (player == 2) { + !multiplayer(); + } + + return 0; +} + From a08379baf9a857fb4aed8a6b3c3f1627b09d4bd6 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Fri, 2 Feb 2024 10:29:46 +0100 Subject: [PATCH 165/375] Draw hangman test --- CMakeLists.txt | 2 ++ cmake-build-debug/.ninja_deps | Bin 13436 -> 12956 bytes cmake-build-debug/.ninja_log | 19 +++++++--------- .../Testing/Temporary/LastTest.log | 4 ++-- cmake-build-debug/build.ninja | 9 +++++++- src/main/c/Hangman/Test/test_drawHangman.c | 21 ++++++++++++++++++ src/main/c/Hangman/Test/test_drawHangman.h | 4 ++++ 7 files changed, 45 insertions(+), 14 deletions(-) create mode 100644 src/main/c/Hangman/Test/test_drawHangman.c create mode 100644 src/main/c/Hangman/Test/test_drawHangman.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 1856cfe..763f8e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,4 +23,6 @@ add_executable(pmuw_projekt_notebinder src/main/c/Hangman/currentState.h src/main/c/Hangman/playHangman.c src/main/c/Hangman/playHangman.h + src/main/c/Hangman/Test/test_drawHangman.c + src/main/c/Hangman/Test/test_drawHangman.h ) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index b396b92a0d4c72c2842617482a283e1f842a0f49..3b1c1d1566359ee9a4ad08b47ee6fac69c956f0e 100644 GIT binary patch delta 577 zcmey9F(-Ay9OX?Ks~9J{sTNHx(e|7?RgYhC!TmFA=t>m|>F2`E4WGUh_fNC4^!*e3HbpkTdtB9NT~ zHbX(%Zt^NkA;vkA3$=ZKEIuZN*-$30bOysLsODs#hW$AZ%_%^3DpYd-<4mCHXvP^p zGJ+$6fnhpOLk!40lS_4kS*O8yS9OFLr%wFn&6!+MS&*ui!7ydwM;{I-XY%BUy5WqI zCQsxEpX{K=AvqDKZ3QDkLmJSg?tjn0-cARyGeEYoW&&ARlLIxS4YPr)93ajGVhRJRBi|^U|?v71qwaSun>xSyiPoB z@V^@9GRB^ z1?$C=f$S8pQ+Tuj7-vn6)ry`RqZP@K!N4#Bs5}PbuE|RJ!mQJgctT7W(76+Lt3Jb!3Z4j9Rpek?>PJW`70kt(yf3+b#TVbZN o8>z0^b9lWt!t@o45dU=ldk&Vt;vc*wgIxo35sH5%8|rNa0Q0l9L;wH) diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index 5f3acae..5be403a 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -1,17 +1,14 @@ # ninja log v5 1 38 1706122217155672196 CMakeFiles/pmuw_projekt_notebinder.dir/test/Hangman/word_selector_test.c.o e932f546d59a9d76 -0 40 1706703919580754893 build.ninja f2183aada2fc9ffc +2 56 1706797998885305995 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 +0 40 1706865968377952833 build.ninja f2183aada2fc9ffc 1 38 1706122372717341436 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o f1dbf76e6b4bc97d -0 106 1706551301992128657 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o cdaff7b94c55641c -1 145 1706549408123039155 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 -0 106 1706551301992114407 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 -1 44 1706122039878920765 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o 69a5bcd8c57a43b3 -106 195 1706551302079685763 pmuw_projekt_notebinder fbb48fd3bf0b96c1 -0 213 1706706276607336012 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 -1 214 1706706276607356095 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o c4eef1ff589ab182 -1 214 1706706276608460832 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 -1 214 1706706276607344137 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 1 214 1706706276607374928 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o cdaff7b94c55641c +0 213 1706706276607336012 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 1 214 1706706276607365429 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o 7d64de4520ec9e97 1 43 1706797998872539655 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 -2 56 1706797998885305995 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 +1 44 1706122039878920765 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o 69a5bcd8c57a43b3 +106 195 1706551302079685763 pmuw_projekt_notebinder fbb48fd3bf0b96c1 +1 214 1706706276607356095 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o c4eef1ff589ab182 +1 114 1706866005935734705 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_drawHangman.c.o b4d90a6b54ad1664 +1 115 1706866005935735539 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o c4eef1ff589ab182 diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index 4dbb2b2..b9be6e3 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Feb 01 15:14 CET +Start testing: Feb 02 10:26 CET ---------------------------------------------------------- -End testing: Feb 01 15:14 CET +End testing: Feb 02 10:26 CET diff --git a/cmake-build-debug/build.ninja b/cmake-build-debug/build.ninja index 8c168ac..d97c4a5 100644 --- a/cmake-build-debug/build.ninja +++ b/cmake-build-debug/build.ninja @@ -98,6 +98,13 @@ build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o: OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman +build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_drawHangman.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/Test/test_drawHangman.c || cmake_object_order_depends_target_pmuw_projekt_notebinder + DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_drawHangman.c.o.d + FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics + INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template + OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir + OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test + # ============================================================================= # Link build statements for EXECUTABLE target pmuw_projekt_notebinder @@ -106,7 +113,7 @@ build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o: ############################################# # Link the executable pmuw_projekt_notebinder -build pmuw_projekt_notebinder: C_EXECUTABLE_LINKER__pmuw_projekt_notebinder_Debug CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o +build pmuw_projekt_notebinder: C_EXECUTABLE_LINKER__pmuw_projekt_notebinder_Debug CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_drawHangman.c.o FLAGS = -g -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir POST_BUILD = : diff --git a/src/main/c/Hangman/Test/test_drawHangman.c b/src/main/c/Hangman/Test/test_drawHangman.c new file mode 100644 index 0000000..c22e956 --- /dev/null +++ b/src/main/c/Hangman/Test/test_drawHangman.c @@ -0,0 +1,21 @@ +#include "test_drawHangman.h" +void test_drawHangman(int mistakes){ + switch (mistakes) { + case 0: + drawHangman(0); + case 1: + drawHangman(1); + case 2: + drawHangman(2); + case 3: + drawHangman(3); + case 4: + drawHangman(4); + case 5: + drawHangman(5); + case 6: + drawHangman(6); + case 10: // More than 6 mistakes + drawHangman(10); + } +} \ No newline at end of file diff --git a/src/main/c/Hangman/Test/test_drawHangman.h b/src/main/c/Hangman/Test/test_drawHangman.h new file mode 100644 index 0000000..2c0ba83 --- /dev/null +++ b/src/main/c/Hangman/Test/test_drawHangman.h @@ -0,0 +1,4 @@ +#ifndef PMUW_PROJEKT_NOTEBINDER_TEST_DRAWHANGMAN_H +#define PMUW_PROJEKT_NOTEBINDER_TEST_DRAWHANGMAN_H +#include "drawHangman.c" +#endif //PMUW_PROJEKT_NOTEBINDER_TEST_DRAWHANGMAN_H From fc3efd1fec3871fba2a9a39ef41c5a0aa1314cb1 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 10:12:17 +0000 Subject: [PATCH 166/375] Add new file tictactoe.h --- src/main/c/GameTic_Tac_Toe/tictactoe.h | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/main/c/GameTic_Tac_Toe/tictactoe.h diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.h b/src/main/c/GameTic_Tac_Toe/tictactoe.h new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.h @@ -0,0 +1 @@ + From 83ca5781232e1dfd702390a1dda2e51ac1ec3a2e Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 10:14:46 +0000 Subject: [PATCH 167/375] Update name game.c --- src/main/c/GameTic_Tac_Toe/{game.c => tictactoe.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/c/GameTic_Tac_Toe/{game.c => tictactoe.c} (100%) diff --git a/src/main/c/GameTic_Tac_Toe/game.c b/src/main/c/GameTic_Tac_Toe/tictactoe.c similarity index 100% rename from src/main/c/GameTic_Tac_Toe/game.c rename to src/main/c/GameTic_Tac_Toe/tictactoe.c From 887814e688bbe2494d23ef5e8ebc7eb1096c586b Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 10:18:29 +0000 Subject: [PATCH 168/375] Tictactoe angelegt --- src/main/c/GameTic_Tac_Toe/tictactoe.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.h b/src/main/c/GameTic_Tac_Toe/tictactoe.h index 8b13789..46e2404 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.h +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.h @@ -1 +1,3 @@ +#ifndef TICTACTOE_H +#define TICTACTOE_H From 3544322ef024caf13a7ddf2ae4d1058f6fea20f9 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 10:33:41 +0000 Subject: [PATCH 169/375] Test checkline case not identical --- src/main/c/GameTic_Tac_Toe/tictactoe.c | 3 +-- src/main/c/GameTic_Tac_Toe/tictactoe.h | 4 ++++ src/main/c/main.c | 5 +++-- test/test_template.c | 2 +- test/test_tictactoe.c | 24 ++++++++++++++++++++++++ 5 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.c b/src/main/c/GameTic_Tac_Toe/tictactoe.c index 443fe8d..be7be8a 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.c +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.c @@ -119,7 +119,6 @@ void playGame() { printGameResult(winner); } -int main(){ +void start_tictactoe(){ playGame(); - return 0; } diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.h b/src/main/c/GameTic_Tac_Toe/tictactoe.h index 46e2404..a972d36 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.h +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.h @@ -1,3 +1,7 @@ #ifndef TICTACTOE_H #define TICTACTOE_H +char checkLine(char a, char b, char c); +void start_tictactoe(); + +#endif diff --git a/src/main/c/main.c b/src/main/c/main.c index eaf0b17..aeb0490 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -3,6 +3,7 @@ #include #include "Template/game100.h" +#include "GameTic_Tac_Toe/tictactoe.h" int main(){ bool running = true; @@ -34,7 +35,7 @@ int main(){ //start_game3(); break; case 4: - //start_game4(); + start_tictactoe(); break; case 100: start_game100(); @@ -49,4 +50,4 @@ int main(){ } } return 0; -} \ No newline at end of file +} diff --git a/test/test_template.c b/test/test_template.c index a1b9ed4..4aba361 100644 --- a/test/test_template.c +++ b/test/test_template.c @@ -33,4 +33,4 @@ void test_ignore_rest_from_division(void){ TEST_ASSERT_EQUAL_INT(5, result);//5 / 6 + 5 = 5 } -#endif // TEST \ No newline at end of file +#endif // TEST diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index 8b13789..8c03320 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -1 +1,25 @@ +#ifdef TEST +#include "unity.h" +#include "tictactoe.h" + + +void setUp(void){ + //Wenn Funktion Vorraussetzungen braucht +} +void tearDown(void){ +} + + +void test_if_not_identical(void){ + /* arrange */ + char result; + char a = 'a', b = 'b', c = 'c'; + + result = checkLine(a, b, c); + + /* assert */ + TEST_ASSERT_EQUAL_CHAR(' ', result); +} + +#endif // TEST From 604c8f61ce81939c7224904e01981953b19509d0 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 10:41:47 +0000 Subject: [PATCH 170/375] Test checkline case identical --- test/test_tictactoe.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index 8c03320..c98770d 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -22,4 +22,15 @@ void test_if_not_identical(void){ TEST_ASSERT_EQUAL_CHAR(' ', result); } + +void test_if_identical(void){ + /* arrange */ + char result; + char a = 'a', b = 'a', c = 'a'; + + result = checkLine(a, b, c); + + /* assert */ + TEST_ASSERT_EQUAL_CHAR(a, result); +} #endif // TEST From adce56939d6c6b61595291714fa9c4a836a90a63 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Fri, 2 Feb 2024 11:49:17 +0100 Subject: [PATCH 171/375] Minor Fixes --- src/main/c/Snake/snake_start.h | 2 ++ test/Snake/test_collision.c | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/c/Snake/snake_start.h b/src/main/c/Snake/snake_start.h index 359f548..b985421 100644 --- a/src/main/c/Snake/snake_start.h +++ b/src/main/c/Snake/snake_start.h @@ -1,6 +1,8 @@ #ifndef SNAKE_START_H #define SNAKE_START_H +#include + typedef struct Snake{ signed char direction; char length; diff --git a/test/Snake/test_collision.c b/test/Snake/test_collision.c index e5d5a63..df400b0 100644 --- a/test/Snake/test_collision.c +++ b/test/Snake/test_collision.c @@ -1,8 +1,8 @@ #ifdef TEST #include "unity.h" #include -#include "../../src/main/c/Snake/snake_start.h" -#include "../../src/main/c/Snake/get_character.h" +#include "snake_start.h" +#include "get_character.h" void setUp(void){} From 0cc54a8fe53b871f83ad6bb7e84cb3617ae304a1 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 10:49:28 +0000 Subject: [PATCH 172/375] Test checkLine horizontaler Gewinner --- test/test_tictactoe.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index c98770d..0f76b25 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -33,4 +33,17 @@ void test_if_identical(void){ /* assert */ TEST_ASSERT_EQUAL_CHAR(a, result); } + +void test_checkLine_horizontalerGewinner(void) { + /* arrange */ + char result; + char a = 'X', b = 'X', c = 'X'; + + /* assert */ + result = checkLine(a, b, c); + + /* überprüfen */ + TEST_ASSERT_EQUAL_CHAR('X', result); +} +} #endif // TEST From 85d84d181eba483c5b40e19b9d56b64c66f63e7a Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 10:56:08 +0000 Subject: [PATCH 173/375] =?UTF-8?q?tic=5Ftac=5Ftoe=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/main.c | 2 +- test/test_tictactoe.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/c/main.c b/src/main/c/main.c index aeb0490..b88b924 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -17,7 +17,7 @@ int main(){ printf("\t1.Spiel1 starten\n"); printf("\t2.Spiel2 starten\n"); printf("\t3.Spiel3 starten\n"); - printf("\t4.Spiel4 starten\n"); + printf("\t4.tic_tac_toe starten\n"); printf("\t100.Template starten\n"); printf("\t6.Exit\n"); diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index 0f76b25..324cac9 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -45,5 +45,5 @@ void test_checkLine_horizontalerGewinner(void) { /* überprüfen */ TEST_ASSERT_EQUAL_CHAR('X', result); } -} + #endif // TEST From 8acc1734b8acdbc480ea8da904bf8e8072994cda Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 11:02:52 +0000 Subject: [PATCH 174/375] Test is Valid move --- test/test_tictactoe.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index 324cac9..fb2e499 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -46,4 +46,15 @@ void test_checkLine_horizontalerGewinner(void) { TEST_ASSERT_EQUAL_CHAR('X', result); } +void test_isValidMove_gueltigerZug(void) { + /* arrangieren */ + int result; + int choice = 5; + + /* handeln */ + result = isValidMove(choice); + + /* überprüfen */ + TEST_ASSERT_EQUAL_INT(1, result); +} #endif // TEST From b16143b39f4d20d6fe2ec0d7bef14521501ebf2d Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Fri, 2 Feb 2024 11:05:03 +0000 Subject: [PATCH 175/375] Add new file --- src/main/c/Pong/pong.h | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/main/c/Pong/pong.h diff --git a/src/main/c/Pong/pong.h b/src/main/c/Pong/pong.h new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/src/main/c/Pong/pong.h @@ -0,0 +1 @@ + From 942a7c59c1b577b7ff90835ffe306e455b6f7345 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Fri, 2 Feb 2024 11:05:33 +0000 Subject: [PATCH 176/375] Aktualisieren src/main/c/Pong/pong.c --- src/main/c/Pong/{game.c => pong.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/main/c/Pong/{game.c => pong.c} (100%) diff --git a/src/main/c/Pong/game.c b/src/main/c/Pong/pong.c similarity index 100% rename from src/main/c/Pong/game.c rename to src/main/c/Pong/pong.c From 03ed4fc6540659647e6993e837e473b59e70ddb7 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Fri, 2 Feb 2024 11:16:27 +0000 Subject: [PATCH 177/375] test resertScore --- src/main/c/Pong/pong.c | 2 +- src/main/c/Pong/pong.h | 8 ++++++++ src/main/c/main.c | 7 ++++--- src/main/c/main.h | 2 +- test/test_pong.c | 27 +++++++++++++++++++++++++++ test/test_template.c | 2 +- 6 files changed, 42 insertions(+), 6 deletions(-) create mode 100644 test/test_pong.c diff --git a/src/main/c/Pong/pong.c b/src/main/c/Pong/pong.c index f399fc2..44cfbc5 100644 --- a/src/main/c/Pong/pong.c +++ b/src/main/c/Pong/pong.c @@ -122,7 +122,7 @@ void resetScore(int *score1, int *score2) { *score2 = 0; } -int main(){ +int pong(){ int paddle1PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; int paddle2PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; Ball ball = {WIDTH / 2, HEIGHT / 2, 1, 1}; //Startposition&Geschwindigkeit Ball diff --git a/src/main/c/Pong/pong.h b/src/main/c/Pong/pong.h index 8b13789..4e6cfdd 100644 --- a/src/main/c/Pong/pong.h +++ b/src/main/c/Pong/pong.h @@ -1 +1,9 @@ +#ifndef PONG_H +#define PONG_H + +int pong(); + +void resetScore(int *score1, int *score2); + +#endif diff --git a/src/main/c/main.c b/src/main/c/main.c index 922c8d4..0321f5a 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -4,6 +4,7 @@ #include "Template/game100.h" #include "Snake/snake_start.h" +#include "Pong/pong.h" int main(){ bool running = true; @@ -15,7 +16,7 @@ int main(){ system("clear"); printf("Waehlen Sie eine Option:\n"); printf("\t1.Spiel1 starten\n"); - printf("\t2.Spiel2 starten\n"); + printf("\t2.Pong starten\n"); printf("\t3.Snake starten\n"); printf("\t4.Spiel4 starten\n"); printf("\t100.Template starten\n"); @@ -29,7 +30,7 @@ int main(){ //start_game1(); break; case 2: - //start_game2(); + pong(); break; case 3: snake_start(); @@ -50,4 +51,4 @@ int main(){ } } return 0; -} \ No newline at end of file +} diff --git a/src/main/c/main.h b/src/main/c/main.h index 71870e0..013f02f 100644 --- a/src/main/c/main.h +++ b/src/main/c/main.h @@ -3,4 +3,4 @@ int main(); -#endif // MAIN_H \ No newline at end of file +#endif // MAIN_H diff --git a/test/test_pong.c b/test/test_pong.c new file mode 100644 index 0000000..0b12481 --- /dev/null +++ b/test/test_pong.c @@ -0,0 +1,27 @@ +#ifdef TEST +#include "unity.h" +#include "pong.h" + + +void setUp(void){ + //Wenn Funktion Vorraussetzungen braucht +} +void tearDown(void){ +} + + +void test_input_all_5(void){ + /* arrange */ + int a = 4, b = 5; + + /* act */ + resetScore( &a, &b ); + + /* assert */ + TEST_ASSERT_EQUAL_INT(0, a); + TEST_ASSERT_EQUAL_INT(0, b); +} + + + +#endif // TEST diff --git a/test/test_template.c b/test/test_template.c index a1b9ed4..4aba361 100644 --- a/test/test_template.c +++ b/test/test_template.c @@ -33,4 +33,4 @@ void test_ignore_rest_from_division(void){ TEST_ASSERT_EQUAL_INT(5, result);//5 / 6 + 5 = 5 } -#endif // TEST \ No newline at end of file +#endif // TEST From 9c7fe6d9417c4553040e668dd23b5181ec56f854 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Fri, 2 Feb 2024 11:30:18 +0000 Subject: [PATCH 178/375] =?UTF-8?q?Hinzuf=C3=BCgen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/pong.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/c/Pong/pong.c b/src/main/c/Pong/pong.c index 44cfbc5..27e3c70 100644 --- a/src/main/c/Pong/pong.c +++ b/src/main/c/Pong/pong.c @@ -2,6 +2,7 @@ #include #include #include +#include #define WIDTH 40 //Breite Spielfeld #define HEIGHT 20 //Höhe Spielfeld From 82a03832cd9581bc3cce56c76b2524799af85d0e Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Fri, 2 Feb 2024 11:31:30 +0000 Subject: [PATCH 179/375] Aktualisieren Standardbibliothek --- src/main/c/Pong/pong.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/c/Pong/pong.c b/src/main/c/Pong/pong.c index 27e3c70..5d9eb00 100644 --- a/src/main/c/Pong/pong.c +++ b/src/main/c/Pong/pong.c @@ -3,6 +3,7 @@ #include #include #include +#include #define WIDTH 40 //Breite Spielfeld #define HEIGHT 20 //Höhe Spielfeld From 48c322c7614fbfbbd86158c465f4d3096b0729ac Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 11:43:47 +0000 Subject: [PATCH 180/375] Test vertikal Gewinner --- src/main/c/GameTic_Tac_Toe/tictactoe.h | 2 ++ test/test_tictactoe.c | 26 ++++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.h b/src/main/c/GameTic_Tac_Toe/tictactoe.h index a972d36..67f34cb 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.h +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.h @@ -1,7 +1,9 @@ #ifndef TICTACTOE_H #define TICTACTOE_H +int isValidMove(int choice); char checkLine(char a, char b, char c); void start_tictactoe(); +char checkWinner(); #endif diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index fb2e499..d7c864b 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -46,6 +46,7 @@ void test_checkLine_horizontalerGewinner(void) { TEST_ASSERT_EQUAL_CHAR('X', result); } + void test_isValidMove_gueltigerZug(void) { /* arrangieren */ int result; @@ -57,4 +58,29 @@ void test_isValidMove_gueltigerZug(void) { /* überprüfen */ TEST_ASSERT_EQUAL_INT(1, result); } + + +void test_checkWinner_vertikalerGewinner(void) { + /* arrangieren */ + char result; + + // Initialisiere das Spielfeld + for (int i = 0; i < BOARD_SIZE; i++) { + for (int j = 0; j < BOARD_SIZE; j++) { + board[i][j] = (char)('1' + i * BOARD_SIZE + j); + } + } + + // Setze die Daten für einen vertikalen Gewinner + board[0][0] = 'O'; + board[1][0] = 'O'; + board[2][0] = 'O'; + + /* handeln */ + result = checkWinner(); + + /* überprüfen */ + TEST_ASSERT_EQUAL_CHAR('O', result); +} + #endif // TEST From f35b01c79bde8ab7dcf86a0e4e3cb20edbc5972e Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Fri, 2 Feb 2024 11:44:27 +0000 Subject: [PATCH 181/375] Erstelle eine neues Verzeichnis --- test/Pong/.gitkeep | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 test/Pong/.gitkeep diff --git a/test/Pong/.gitkeep b/test/Pong/.gitkeep new file mode 100644 index 0000000..e69de29 From 165e41ae704a4c1a723248953c555244e6811b29 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Fri, 2 Feb 2024 11:45:04 +0000 Subject: [PATCH 182/375] Verschieben --- test/{ => Pong}/test_pong.c | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/{ => Pong}/test_pong.c (100%) diff --git a/test/test_pong.c b/test/Pong/test_pong.c similarity index 100% rename from test/test_pong.c rename to test/Pong/test_pong.c From 2f31d78df53cfd624ca39e98a00d7adb544a23ef Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 11:52:47 +0000 Subject: [PATCH 183/375] enable webide terminal --- .gitlab/.gitlab-webide.yml | 9 +++++++++ test/test_tictactoe.c | 1 + 2 files changed, 10 insertions(+) create mode 100644 .gitlab/.gitlab-webide.yml diff --git a/.gitlab/.gitlab-webide.yml b/.gitlab/.gitlab-webide.yml new file mode 100644 index 0000000..faf8c97 --- /dev/null +++ b/.gitlab/.gitlab-webide.yml @@ -0,0 +1,9 @@ +terminal: + # This can be any image that has the necessary runtime environment for your project. + image: node:10-alpine + before_script: + - apk update + script: sleep 60 + variables: + RAILS_ENV: "test" + NODE_ENV: "test" diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index d7c864b..0609053 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -63,6 +63,7 @@ void test_isValidMove_gueltigerZug(void) { void test_checkWinner_vertikalerGewinner(void) { /* arrangieren */ char result; + char board[3][3]; // Initialisiere das Spielfeld for (int i = 0; i < BOARD_SIZE; i++) { From b7347b1dc0ea2629fd57c9bf22ab963e303cd81a Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 12:08:42 +0000 Subject: [PATCH 184/375] Test horizontaler Gewinner --- test/test_tictactoe.c | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index 0609053..fdca226 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -34,19 +34,6 @@ void test_if_identical(void){ TEST_ASSERT_EQUAL_CHAR(a, result); } -void test_checkLine_horizontalerGewinner(void) { - /* arrange */ - char result; - char a = 'X', b = 'X', c = 'X'; - - /* assert */ - result = checkLine(a, b, c); - - /* überprüfen */ - TEST_ASSERT_EQUAL_CHAR('X', result); -} - - void test_isValidMove_gueltigerZug(void) { /* arrangieren */ int result; @@ -84,4 +71,28 @@ void test_checkWinner_vertikalerGewinner(void) { TEST_ASSERT_EQUAL_CHAR('O', result); } +void test_checkWinner_horizontalerGewinner(void) { + /* arrangieren */ + char result; + char board[3][3]; + + // Initialisiere das Spielfeld + for (int i = 0; i < BOARD_SIZE; i++) { + for (int j = 0; j < BOARD_SIZE; j++) { + board[i][j] = (char)('1' + i * BOARD_SIZE + j); + } + } + + // Setze die Daten für einen horizontalen Gewinner + board[0][0] = 'X'; + board[0][1] = 'X'; + board[0][2] = 'X'; + + /* handeln */ + result = checkWinner(); + + /* überprüfen */ + TEST_ASSERT_EQUAL_CHAR('X', result); +} + #endif // TEST From 734739bbccff81a9485a8cd8abae455fc900b4a4 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 12:13:27 +0000 Subject: [PATCH 185/375] defined BOARD SIZE --- src/main/c/GameTic_Tac_Toe/tictactoe.c | 1 - src/main/c/GameTic_Tac_Toe/tictactoe.h | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.c b/src/main/c/GameTic_Tac_Toe/tictactoe.c index be7be8a..c6b9659 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.c +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.c @@ -1,6 +1,5 @@ #include -const int BOARD_SIZE = 3; char board[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, {'7', '8', '9'}}; diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.h b/src/main/c/GameTic_Tac_Toe/tictactoe.h index 67f34cb..759dbea 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.h +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.h @@ -1,6 +1,8 @@ #ifndef TICTACTOE_H #define TICTACTOE_H +#define BOARD_SIZE 3 + int isValidMove(int choice); char checkLine(char a, char b, char c); void start_tictactoe(); From 147c862ec0789f1f85f06c1e66597cd81174f25e Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 12:18:15 +0000 Subject: [PATCH 186/375] fixed include --- src/main/c/GameTic_Tac_Toe/tictactoe.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.c b/src/main/c/GameTic_Tac_Toe/tictactoe.c index c6b9659..6cab3ec 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.c +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.c @@ -1,4 +1,5 @@ #include +#include "tictactoe.h" char board[3][3] = {{'1', '2', '3'}, {'4', '5', '6'}, From d5ef26db7fce0686efd3f58ebe8d60c179b70f01 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 12:29:40 +0000 Subject: [PATCH 187/375] =?UTF-8?q?=C3=A4nderungen=20an=20Test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/test_tictactoe.c | 33 ++++++++------------------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index fdca226..31de0c1 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -50,19 +50,11 @@ void test_isValidMove_gueltigerZug(void) { void test_checkWinner_vertikalerGewinner(void) { /* arrangieren */ char result; - char board[3][3]; - - // Initialisiere das Spielfeld - for (int i = 0; i < BOARD_SIZE; i++) { - for (int j = 0; j < BOARD_SIZE; j++) { - board[i][j] = (char)('1' + i * BOARD_SIZE + j); - } - } - + // Setze die Daten für einen vertikalen Gewinner - board[0][0] = 'O'; - board[1][0] = 'O'; - board[2][0] = 'O'; + makeMove(1); + makeMove(4); + makeMove(7); /* handeln */ result = checkWinner(); @@ -74,19 +66,10 @@ void test_checkWinner_vertikalerGewinner(void) { void test_checkWinner_horizontalerGewinner(void) { /* arrangieren */ char result; - char board[3][3]; - - // Initialisiere das Spielfeld - for (int i = 0; i < BOARD_SIZE; i++) { - for (int j = 0; j < BOARD_SIZE; j++) { - board[i][j] = (char)('1' + i * BOARD_SIZE + j); - } - } - - // Setze die Daten für einen horizontalen Gewinner - board[0][0] = 'X'; - board[0][1] = 'X'; - board[0][2] = 'X'; + + makeMove(1); + makeMove(2); + makeMove(3); /* handeln */ result = checkWinner(); From 8e28644a1dfd524bdf6aa435c8f6e37740504f6a Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 12:32:02 +0000 Subject: [PATCH 188/375] =?UTF-8?q?makeMove=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/GameTic_Tac_Toe/tictactoe.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.h b/src/main/c/GameTic_Tac_Toe/tictactoe.h index 759dbea..b7b4e6f 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.h +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.h @@ -7,5 +7,6 @@ int isValidMove(int choice); char checkLine(char a, char b, char c); void start_tictactoe(); char checkWinner(); +void makeMove(); #endif From e38696759767f2abca6d52699cd3d3dc30f892c4 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 12:45:27 +0000 Subject: [PATCH 189/375] refactoring: makeMove --- src/main/c/GameTic_Tac_Toe/tictactoe.c | 32 +++++++++++++++----------- src/main/c/GameTic_Tac_Toe/tictactoe.h | 2 +- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.c b/src/main/c/GameTic_Tac_Toe/tictactoe.c index 6cab3ec..e7eeee9 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.c +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.c @@ -77,21 +77,18 @@ int isValidMove(int choice) { return (choice >= 1 && choice <= BOARD_SIZE * BOARD_SIZE && board[row][col] != 'X' && board[row][col] != 'O'); } -void makeMove() { - int choice; - printf("Spieler %c, waehle eine Zahl (1-9): ", (currentPlayer == PLAYER_X) ? 'X' : 'O'); - scanf("%d", &choice); +void makeMove(int choice) { -// Konvertiere die Zahl in Zeilen- und Spaltenindex -if (isValidMove(choice)) { - int row = (choice - 1) / BOARD_SIZE; - int col = (choice - 1) % BOARD_SIZE; - board[row][col] = (currentPlayer == PLAYER_X) ? 'X' : 'O'; - currentPlayer = switchPlayer(currentPlayer); + // Konvertiere die Zahl in Zeilen- und Spaltenindex + if (isValidMove(choice)) { + int row = (choice - 1) / BOARD_SIZE; + int col = (choice - 1) % BOARD_SIZE; + board[row][col] = (currentPlayer == PLAYER_X) ? 'X' : 'O'; + currentPlayer = switchPlayer(currentPlayer); -} else { - printf("Ungueltiger Zug! Bitte waehle erneut.\n"); - makeMove(); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird + } else { + printf("Ungueltiger Zug! Bitte waehle erneut.\n"); + makeMove(get_move()); // Rekursiver Aufruf, bis ein gültiger Zug gemacht wird } } @@ -100,6 +97,13 @@ int isGameOver() { return (winner == PLAYER_X || winner == PLAYER_O || isBoardFull()); } +int get_move(){ + int choice; + printf("Spieler %c, waehle eine Zahl (1-9): ", (currentPlayer == PLAYER_X) ? 'X' : 'O'); + scanf("%d", &choice); + return choice; +} + void printGameResult(char winner) { if (winner == PLAYER_X || winner == PLAYER_O) { printf("Spieler %c gewinnt!\n", (winner == PLAYER_X) ? 'X' : 'O'); @@ -111,7 +115,7 @@ void printGameResult(char winner) { void playGame() { while (!isGameOver()) { displayBoard(); - makeMove(); + makeMove(get_move()); } displayBoard(); diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.h b/src/main/c/GameTic_Tac_Toe/tictactoe.h index b7b4e6f..93c7d14 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.h +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.h @@ -7,6 +7,6 @@ int isValidMove(int choice); char checkLine(char a, char b, char c); void start_tictactoe(); char checkWinner(); -void makeMove(); +void makeMove(int choice); #endif From c85e5a829710b4f9309cd9b6dedf1b162739c11c Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 12:46:38 +0000 Subject: [PATCH 190/375] Test checkWinner h/v --- test/test_tictactoe.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index 31de0c1..5ece3e4 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -53,7 +53,9 @@ void test_checkWinner_vertikalerGewinner(void) { // Setze die Daten für einen vertikalen Gewinner makeMove(1); + makeMove(2); makeMove(4); + makeMove(3); makeMove(7); /* handeln */ @@ -68,7 +70,9 @@ void test_checkWinner_horizontalerGewinner(void) { char result; makeMove(1); + makeMove(4); makeMove(2); + makeMove(5); makeMove(3); /* handeln */ From 4a4f084441b5e57ac9dd015abbf1f40b7aada54e Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 12:49:14 +0000 Subject: [PATCH 191/375] refactoring: get_Move --- src/main/c/GameTic_Tac_Toe/tictactoe.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.c b/src/main/c/GameTic_Tac_Toe/tictactoe.c index e7eeee9..e15cf80 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.c +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.c @@ -26,6 +26,13 @@ void displayBoard() { } } +int get_move(){ + int choice; + printf("Spieler %c, waehle eine Zahl (1-9): ", (currentPlayer == PLAYER_X) ? 'X' : 'O'); + scanf("%d", &choice); + return choice; +} + char checkLine(char a, char b, char c) { if (a == b && b == c) return a; return ' '; @@ -97,12 +104,6 @@ int isGameOver() { return (winner == PLAYER_X || winner == PLAYER_O || isBoardFull()); } -int get_move(){ - int choice; - printf("Spieler %c, waehle eine Zahl (1-9): ", (currentPlayer == PLAYER_X) ? 'X' : 'O'); - scanf("%d", &choice); - return choice; -} void printGameResult(char winner) { if (winner == PLAYER_X || winner == PLAYER_O) { From 6effaec97b6fbe3ff8cd60976eb536b6e34f3987 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 12:53:23 +0000 Subject: [PATCH 192/375] Test checkWinner --- src/main/c/GameTic_Tac_Toe/tictactoe.h | 1 + test/test_tictactoe.c | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.h b/src/main/c/GameTic_Tac_Toe/tictactoe.h index 93c7d14..89d5ab9 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.h +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.h @@ -8,5 +8,6 @@ char checkLine(char a, char b, char c); void start_tictactoe(); char checkWinner(); void makeMove(int choice); +void displayBoard(); #endif diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index 5ece3e4..7dafd2e 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -52,11 +52,13 @@ void test_checkWinner_vertikalerGewinner(void) { char result; // Setze die Daten für einen vertikalen Gewinner + displayBoard(); makeMove(1); makeMove(2); makeMove(4); makeMove(3); makeMove(7); + displayBoard(); /* handeln */ result = checkWinner(); @@ -69,11 +71,13 @@ void test_checkWinner_horizontalerGewinner(void) { /* arrangieren */ char result; + displayBoard(); makeMove(1); makeMove(4); makeMove(2); makeMove(5); makeMove(3); + displayBoard(); /* handeln */ result = checkWinner(); From 42579acfb49e37d54577ce3e162fbc52a0bc68bf Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 12:56:23 +0000 Subject: [PATCH 193/375] Test test --- test/test_tictactoe.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index 7dafd2e..7cf7753 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -53,11 +53,11 @@ void test_checkWinner_vertikalerGewinner(void) { // Setze die Daten für einen vertikalen Gewinner displayBoard(); - makeMove(1); - makeMove(2); - makeMove(4); - makeMove(3); - makeMove(7); + //makeMove(1); + //makeMove(2); + //makeMove(4); + //makeMove(3); + //makeMove(7); displayBoard(); /* handeln */ @@ -72,11 +72,11 @@ void test_checkWinner_horizontalerGewinner(void) { char result; displayBoard(); - makeMove(1); - makeMove(4); - makeMove(2); - makeMove(5); - makeMove(3); + //makeMove(1); + //makeMove(4); + //makeMove(2); + //makeMove(5); + //makeMove(3); displayBoard(); /* handeln */ From b0499df2a8d7278a492dcba4c56a3e509a58c3cb Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 13:01:11 +0000 Subject: [PATCH 194/375] Test test --- test/test_tictactoe.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index 7cf7753..b72d780 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -53,11 +53,11 @@ void test_checkWinner_vertikalerGewinner(void) { // Setze die Daten für einen vertikalen Gewinner displayBoard(); - //makeMove(1); - //makeMove(2); - //makeMove(4); - //makeMove(3); - //makeMove(7); + makeMove(1); + makeMove(2); + makeMove(4); + makeMove(3); + makeMove(7); displayBoard(); /* handeln */ From 57dd871368486ae4333e60036932b81759b029e5 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 13:06:30 +0000 Subject: [PATCH 195/375] Test fixed test_checkWinner --- src/main/c/GameTic_Tac_Toe/tictactoe.c | 6 ++++++ src/main/c/GameTic_Tac_Toe/tictactoe.h | 1 + test/test_tictactoe.c | 3 +++ 3 files changed, 10 insertions(+) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.c b/src/main/c/GameTic_Tac_Toe/tictactoe.c index e15cf80..84a2430 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.c +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.c @@ -8,6 +8,12 @@ char currentPlayer = 'X'; const char PLAYER_X = 'X'; const char PLAYER_O = 'O'; +void reset_board(){ + board[3][3] = {{'1', '2', '3'}, + {'4', '5', '6'}, + {'7', '8', '9'}}; +} + // Funktionen zur Anzeige des Spielbretts void displayBoard() { printf("Tic-Tac-Toe\n"); diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.h b/src/main/c/GameTic_Tac_Toe/tictactoe.h index 89d5ab9..d007eb4 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.h +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.h @@ -9,5 +9,6 @@ void start_tictactoe(); char checkWinner(); void makeMove(int choice); void displayBoard(); +void reset_board(); #endif diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index b72d780..a74a3da 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -8,6 +8,7 @@ void setUp(void){ //Wenn Funktion Vorraussetzungen braucht } void tearDown(void){ + printf("1\n"); } @@ -65,6 +66,7 @@ void test_checkWinner_vertikalerGewinner(void) { /* überprüfen */ TEST_ASSERT_EQUAL_CHAR('O', result); + reset_board(); } void test_checkWinner_horizontalerGewinner(void) { @@ -84,6 +86,7 @@ void test_checkWinner_horizontalerGewinner(void) { /* überprüfen */ TEST_ASSERT_EQUAL_CHAR('X', result); + reset_board() } #endif // TEST From 92eed92b166240f37c4c0a60a2df4df361602fa3 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 13:08:05 +0000 Subject: [PATCH 196/375] Test fixed; --- test/test_tictactoe.c | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index a74a3da..bddd208 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -52,14 +52,12 @@ void test_checkWinner_vertikalerGewinner(void) { /* arrangieren */ char result; - // Setze die Daten für einen vertikalen Gewinner - displayBoard(); + // Setze die Daten für einen vertikalen Gewinne makeMove(1); makeMove(2); makeMove(4); makeMove(3); makeMove(7); - displayBoard(); /* handeln */ result = checkWinner(); @@ -73,20 +71,18 @@ void test_checkWinner_horizontalerGewinner(void) { /* arrangieren */ char result; - displayBoard(); - //makeMove(1); - //makeMove(4); - //makeMove(2); - //makeMove(5); - //makeMove(3); - displayBoard(); + makeMove(1); + makeMove(4); + makeMove(2); + makeMove(5); + makeMove(3); /* handeln */ result = checkWinner(); /* überprüfen */ TEST_ASSERT_EQUAL_CHAR('X', result); - reset_board() + reset_board(); } #endif // TEST From be74b9b64ff712b14e135e1c363fb1e03a080c8f Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 13:11:16 +0000 Subject: [PATCH 197/375] refactoring: reset_board --- src/main/c/GameTic_Tac_Toe/tictactoe.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.c b/src/main/c/GameTic_Tac_Toe/tictactoe.c index 84a2430..e367101 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.c +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.c @@ -9,9 +9,11 @@ const char PLAYER_X = 'X'; const char PLAYER_O = 'O'; void reset_board(){ - board[3][3] = {{'1', '2', '3'}, - {'4', '5', '6'}, - {'7', '8', '9'}}; + for(int i = 0; i < BOARD_SIZE; i++){ + for(int j = 0; j < BOARD_SIZE; y++){ + board[i][j] = j * BOARD_SIZE + i + 1; + } + } } // Funktionen zur Anzeige des Spielbretts From 7a4797e171a07a52209642cf42f505306631e4de Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 13:12:05 +0000 Subject: [PATCH 198/375] test --- src/main/c/GameTic_Tac_Toe/tictactoe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.c b/src/main/c/GameTic_Tac_Toe/tictactoe.c index e367101..245af28 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.c +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.c @@ -10,7 +10,7 @@ const char PLAYER_O = 'O'; void reset_board(){ for(int i = 0; i < BOARD_SIZE; i++){ - for(int j = 0; j < BOARD_SIZE; y++){ + for(int j = 0; j < BOARD_SIZE; j++){ board[i][j] = j * BOARD_SIZE + i + 1; } } From a669bdab52bd67e9dc6e31f7dec65380f127541e Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 13:13:45 +0000 Subject: [PATCH 199/375] Test --- test/test_tictactoe.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index bddd208..5770e74 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -53,11 +53,13 @@ void test_checkWinner_vertikalerGewinner(void) { char result; // Setze die Daten für einen vertikalen Gewinne + displayBoard(); makeMove(1); makeMove(2); makeMove(4); makeMove(3); makeMove(7); + displayBoard(); /* handeln */ result = checkWinner(); @@ -65,17 +67,18 @@ void test_checkWinner_vertikalerGewinner(void) { /* überprüfen */ TEST_ASSERT_EQUAL_CHAR('O', result); reset_board(); + displayBoard(); } void test_checkWinner_horizontalerGewinner(void) { /* arrangieren */ char result; - makeMove(1); - makeMove(4); - makeMove(2); - makeMove(5); - makeMove(3); + //makeMove(1); + //makeMove(4); + //makeMove(2); + //makeMove(5); + //makeMove(3); /* handeln */ result = checkWinner(); From f5d5943633d7f6f3d764240b3bf810b7776f1dfe Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 13:15:49 +0000 Subject: [PATCH 200/375] Test tear_down --- test/test_tictactoe.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/test/test_tictactoe.c b/test/test_tictactoe.c index 5770e74..887aad7 100644 --- a/test/test_tictactoe.c +++ b/test/test_tictactoe.c @@ -8,7 +8,8 @@ void setUp(void){ //Wenn Funktion Vorraussetzungen braucht } void tearDown(void){ - printf("1\n"); + reset_board(); + displayBoard(); } @@ -53,21 +54,17 @@ void test_checkWinner_vertikalerGewinner(void) { char result; // Setze die Daten für einen vertikalen Gewinne - displayBoard(); makeMove(1); makeMove(2); makeMove(4); makeMove(3); makeMove(7); - displayBoard(); /* handeln */ result = checkWinner(); /* überprüfen */ TEST_ASSERT_EQUAL_CHAR('O', result); - reset_board(); - displayBoard(); } void test_checkWinner_horizontalerGewinner(void) { From fcc795f551df44f8730976286ad0861d4340240f Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 13:17:48 +0000 Subject: [PATCH 201/375] Test --- src/main/c/GameTic_Tac_Toe/tictactoe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.c b/src/main/c/GameTic_Tac_Toe/tictactoe.c index 245af28..e67f075 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.c +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.c @@ -11,7 +11,7 @@ const char PLAYER_O = 'O'; void reset_board(){ for(int i = 0; i < BOARD_SIZE; i++){ for(int j = 0; j < BOARD_SIZE; j++){ - board[i][j] = j * BOARD_SIZE + i + 1; + board[i][j] = j * BOARD_SIZE + i + 49; } } } From fba334758568305b99a0cf87f9f5a47b7a468750 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Fri, 2 Feb 2024 13:19:33 +0000 Subject: [PATCH 202/375] Test --- src/main/c/GameTic_Tac_Toe/tictactoe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/GameTic_Tac_Toe/tictactoe.c b/src/main/c/GameTic_Tac_Toe/tictactoe.c index e67f075..ce8b8fc 100644 --- a/src/main/c/GameTic_Tac_Toe/tictactoe.c +++ b/src/main/c/GameTic_Tac_Toe/tictactoe.c @@ -11,7 +11,7 @@ const char PLAYER_O = 'O'; void reset_board(){ for(int i = 0; i < BOARD_SIZE; i++){ for(int j = 0; j < BOARD_SIZE; j++){ - board[i][j] = j * BOARD_SIZE + i + 49; + board[i][j] = i * BOARD_SIZE + j + 49; } } } From 3ff2b71e3f6ba93ddc78c6ac8efbbe3ec33e7f2e Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Fri, 2 Feb 2024 16:34:24 +0100 Subject: [PATCH 203/375] win/lose message added --- CMakeLists.txt | 2 ++ cmake-build-debug/.ninja_deps | Bin 12956 -> 12788 bytes cmake-build-debug/.ninja_log | 11 +++++------ .../Testing/Temporary/LastTest.log | 4 ++-- cmake-build-debug/build.ninja | 9 ++++++++- src/main/c/Hangman/drawHangman.c | 16 +++++++++------- src/main/c/Hangman/playHangman.c | 9 +++++++++ 7 files changed, 35 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 763f8e7..a83ec3e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,4 +25,6 @@ add_executable(pmuw_projekt_notebinder src/main/c/Hangman/playHangman.h src/main/c/Hangman/Test/test_drawHangman.c src/main/c/Hangman/Test/test_drawHangman.h + src/main/c/Hangman/Test/test_currentState.c + src/main/c/Hangman/Test/test_currentState.h ) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index 3b1c1d1566359ee9a4ad08b47ee6fac69c956f0e..df97cc577c88d495e15633ebfcc2b144956f5e17 100644 GIT binary patch delta 25 hcmbP}`XzZoiss}uh8q|ICJLHPwo~QU?4`Ac9RQSF3G4s> delta 50 zcmey8JSTNSil*oi28M=Y1_p-xIWjK;3f7CK0NJUN7s^ha9HC)1nOB== 6) { - printf(" \n"); - printf(" __ _ __ _ _ __ ___ ___ _____ _____ _ __ \n"); - printf(" / _` |/ _` | '_ ` _ \\ / _ \\ / _ \\ \\ / / _ \\ '__|\n"); - printf(" | (_| | (_| | | | | | | __/ | (_) \\ V / __/ | \n"); - printf(" \\__, |\\__,_|_| |_| |_|\\___| \\___/ \\_/ \\___|_| \n"); - printf(" |___/ \n"); - + printf("\n" + " _____ ____ \n" + " / ____| / __ \\ \n" + " | | __ __ _ _ __ ___ ___ | | | |_ _____ _ __ \n" + " | | |_ |/ _` | '_ ` _ \\ / _ \\ | | | \\ \\ / / _ \\ '__| \n" + " | |__| | (_| | | | | | | __/ | |__| |\\ V / __/ | \n" + " \\_____|\\__,_|_| |_| |_|\\___| \\____/ \\_/ \\___|_| \n" + " \n" + " \n"); } } \ No newline at end of file diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 31cfb79..6930fdd 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -51,6 +51,15 @@ void playHangman(char *wordToGuess) { if (strcmp(currentGuess, wordToGuess) == 0) { currentState(currentGuess, mistakes); printf("Bravo! You guessed the word: %s \n", wordToGuess); + printf("\n" + " __ __ _ _ _ _ \n" + " \\ \\ / / | | | | (_) | |\n" + " \\ \\_/ /__ _ _ __ _ _ __ ___ | |_| |__ ___ __ ___ _ __ _ __ ___ _ __| |\n" + " \\ / _ \\| | | | / _` | '__/ _ \\ | __| '_ \\ / _ \\ \\ \\ /\\ / / | '_ \\| '_ \\ / _ \\ '__| |\n" + " | | (_) | |_| | | (_| | | | __/ | |_| | | | __/ \\ V V /| | | | | | | | __/ | |_|\n" + " |_|\\___/ \\__,_| \\__,_|_| \\___| \\__|_| |_|\\___| \\_/\\_/ |_|_| |_|_| |_|\\___|_| (_)\n" + " \n" + " "); break; } From f10e07d76a2d08bb9dc7cf31b8df837203f4cbd1 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Fri, 2 Feb 2024 16:51:38 +0100 Subject: [PATCH 204/375] check single letter --- src/main/c/Hangman/playHangman.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 6930fdd..78298f9 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -24,6 +24,12 @@ void playHangman(char *wordToGuess) { continue; } + // Check if the guess is a single letter + if (strlen(&guess) != 1) { + printf("Please enter only one letter.\n"); + continue; + } + // Check if the letter has already been guessed by the player if (strchr(guessedLetters, guess) != NULL) { printf("You already guessed that letter. Try another letter.\n"); From 924e747d2a2fe156b1c7ad462e8425700e45a6a2 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Fri, 2 Feb 2024 17:22:39 +0100 Subject: [PATCH 205/375] handle upper case letters --- src/main/c/Hangman/playHangman.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 78298f9..19ab800 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -1,5 +1,14 @@ #include "playHangman.h" +// Converts the letter to lower case +char toLower(char ch) { + // Convert uppercase letter to lowercase manually + if (ch >= 'A' && ch <= 'Z') { + return ch + ('a' - 'A'); + } + return ch; +} + void playHangman(char *wordToGuess) { int mistakes = 0; @@ -19,11 +28,14 @@ void playHangman(char *wordToGuess) { scanf(" %c", &guess); // Check if the guess is lower case and is a letter (valid) - if (!isalpha(guess) || isupper(guess)) { - printf("Please enter a valid lowercase alphabet.\n"); + if (!isalpha(guess)) { + printf("Please enter a valid alphabet.\n"); continue; } + // Convert uppercase letter to lowercase + guess = toLower(guess); + // Check if the guess is a single letter if (strlen(&guess) != 1) { printf("Please enter only one letter.\n"); From db912f56fcea6da0a78492afd2fe5860a5afe388 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Fri, 2 Feb 2024 17:49:16 +0100 Subject: [PATCH 206/375] problem with multiple letters --- src/main/c/Hangman/playHangman.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 19ab800..abd40b6 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -9,6 +9,11 @@ char toLower(char ch) { return ch; } +// Ignores all inputs after the first character +void ignoreExtraInput() { + int c; + while ((c = getchar()) != '\n' && c != EOF); +} void playHangman(char *wordToGuess) { int mistakes = 0; @@ -26,6 +31,7 @@ void playHangman(char *wordToGuess) { char guess; printf("Enter your guess: \n"); scanf(" %c", &guess); + ignoreExtraInput(); // Check if the guess is lower case and is a letter (valid) if (!isalpha(guess)) { From 6bc2c951db0b7642dab195711fd0a87942ad9b0c Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Fri, 2 Feb 2024 17:56:18 +0100 Subject: [PATCH 207/375] bug with multiple input fixed --- src/main/c/Hangman/playHangman.c | 42 +++++++++++++++++++++++++++----- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index abd40b6..ed0e32c 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -9,12 +9,30 @@ char toLower(char ch) { return ch; } -// Ignores all inputs after the first character +// Ignores the inputs with more than one letter void ignoreExtraInput() { int c; while ((c = getchar()) != '\n' && c != EOF); } +// Function to get a single character input from the user +char getSingleCharInput() { + char input[3]; // Buffer for input (including null terminator and newline character) + + // Read a line of input (up to 2 characters) and consume the rest + if (fgets(input, sizeof(input), stdin) == NULL) { + return '\0'; // Error or end of file + } + + ignoreExtraInput(); // Ignore extra characters + + // Check if only one character is entered + if (strlen(input) == 2 && input[1] == '\n') { + return input[0]; + } else { + return '\0'; // More than one character entered + } +} void playHangman(char *wordToGuess) { int mistakes = 0; char guessedLetters[30]; //Guessed letters @@ -27,30 +45,42 @@ void playHangman(char *wordToGuess) { while (mistakes < MAX_MISTAKES) { currentState(currentGuess, mistakes); - // Get a letter from the player + // Get a letter from the user char guess; printf("Enter your guess: \n"); - scanf(" %c", &guess); - ignoreExtraInput(); + + // Function to get a single character input and check for errors + guess = getSingleCharInput(); + + // Check if a valid character is entered + if (guess == '\0') { + printf("Invalid input. Please enter a single letter.\n"); + continue; + } + + // Convert uppercase letter to lowercase + guess = toLower(guess); // Check if the guess is lower case and is a letter (valid) if (!isalpha(guess)) { printf("Please enter a valid alphabet.\n"); + ignoreExtraInput(); continue; } - // Convert uppercase letter to lowercase - guess = toLower(guess); // Check if the guess is a single letter if (strlen(&guess) != 1) { printf("Please enter only one letter.\n"); + ignoreExtraInput(); continue; } + // Check if the letter has already been guessed by the player if (strchr(guessedLetters, guess) != NULL) { printf("You already guessed that letter. Try another letter.\n"); + ignoreExtraInput(); continue; } From 4cdeaa26753bda87dc3f3f4e06db39708aecdae4 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Fri, 2 Feb 2024 18:00:46 +0100 Subject: [PATCH 208/375] bug with new line in input fixed --- src/main/c/Hangman/playHangman.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index ed0e32c..ec36659 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -24,7 +24,10 @@ char getSingleCharInput() { return '\0'; // Error or end of file } - ignoreExtraInput(); // Ignore extra characters + // Check if the last character is a newline, if not, consume the rest of the line + if (input[strlen(input) - 1] != '\n') { + ignoreExtraInput(); + } // Check if only one character is entered if (strlen(input) == 2 && input[1] == '\n') { From 733d234169258c99d31a8daf1e091c12100dde89 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 2 Feb 2024 17:48:52 +0000 Subject: [PATCH 209/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 0bdf810..9524763 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -3,9 +3,23 @@ int feld(char prifield[]) { int a = 0; + int numcoor[10]; + char letcoor[10] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' }; + + printf("--"); + + for (int k = 0; k <= 9; k++) { + numcoor[k] = k + 1; + printf("%d", numcoor[k]); + } + + printf("\n"); + for (int i = 0; i <= 9; i++) { + printf("%c-", letcoor[i]); + for (int j = 0; j <= 9; j++) { printf("%c", prifield[a]); a++; From 6deabe9039b60de3c6d7c7a87a6a1a5f364af7ff Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 2 Feb 2024 17:52:14 +0000 Subject: [PATCH 210/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 9524763..e9bf2e5 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -41,6 +41,10 @@ int singleplayer() { int multiplayer() { char multi[100]; + char player1[100]; + char player2[100]; + char ships1[100]; + char ships2[100]; for (int i = 0; i <= 99; i++) { @@ -48,6 +52,30 @@ int multiplayer() { } + for (int i = 0; i <= 99; i++) { + + player1[i] = 'X'; + + } + + for (int i = 0; i <= 99; i++) { + + player2[i] = 'X'; + + } + + for (int i = 0; i <= 99; i++) { + + ships1[i] = 'X'; + + } + + for (int i = 0; i <= 99; i++) { + + ships2[i] = 'X'; + + } + !feld(multi); From 7738edaa0b92635e2b9b42c13f82bcc1bfdea464 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 16:03:16 +0000 Subject: [PATCH 211/375] test_clearScreen --- test_clearScreen.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 test_clearScreen.c diff --git a/test_clearScreen.c b/test_clearScreen.c new file mode 100644 index 0000000..e859d99 --- /dev/null +++ b/test_clearScreen.c @@ -0,0 +1,38 @@ +#ifdef TEST +#include "unity.h" +#include "pong.h" + +#define TEST_SCREEN_WIDTH 40 +#define TEST_SCREEN_HEIGHT 20 + +char screen[TEST_SCREEN_HEIGHT][TEST_SCREEN_WIDTH+1]; + +void setUp(void){ + //Wenn Funktion Vorraussetzungen braucht +} + +void tearDown(void){ +} + +void test_clearScreen(void){ + /* arrange */ + int i, j; + for (i = 0; i < TEST_SCREEN_HEIGHT; i++) { + for (j = 0; j < TEST_SCREEN_WIDTH+1; j++) { + screen[i][j] = 'X'; + } + screen[i][j-1] = '\0'; + } + + /* act */ + clearScreen(); + + /* assert */ + for (i = 0; i < TEST_SCREEN_HEIGHT; i++) { + for (j = 0; j < TEST_SCREEN_WIDTH+1; j++) { + TEST_ASSERT_EQUAL_INT(' ', screen[i][j]); + } + } +} + +#endif // TEST From 3ce5fe25c9906db952c24249cc19391594641c6a Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 16:04:38 +0000 Subject: [PATCH 212/375] Aktualisieren test/Pong/test_clearScreen.c --- test_clearScreen.c => test/Pong/test_clearScreen.c | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test_clearScreen.c => test/Pong/test_clearScreen.c (100%) diff --git a/test_clearScreen.c b/test/Pong/test_clearScreen.c similarity index 100% rename from test_clearScreen.c rename to test/Pong/test_clearScreen.c From c3ab68b1dece08dff9ae9667360706fa3fbbaa49 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 16:07:52 +0000 Subject: [PATCH 213/375] test_updateBallPosition --- test/Pong/test_updateBallPosition.c | 30 +++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 test/Pong/test_updateBallPosition.c diff --git a/test/Pong/test_updateBallPosition.c b/test/Pong/test_updateBallPosition.c new file mode 100644 index 0000000..5894273 --- /dev/null +++ b/test/Pong/test_updateBallPosition.c @@ -0,0 +1,30 @@ +#ifdef TEST +#include "unity.h" +#include "pong.h" + +void setUp(void){ + //Wenn Funktion Vorraussetzungen braucht +} + +void tearDown(void){ +} + +void test_updateBallPosition(void){ + /* arrange */ + Ball ball = { 10, 10, 1, 1 }; + int expectedX = ball.x + ball.speedX * 5; // erwartete Endposition nach 5 Schritten + int expectedY = ball.y + ball.speedY * 5; + + /* act */ + updateBallPosition(&ball); + updateBallPosition(&ball); + updateBallPosition(&ball); + updateBallPosition(&ball); + updateBallPosition(&ball); + + /* assert */ + TEST_ASSERT_EQUAL_INT(expectedX, ball.x); + TEST_ASSERT_EQUAL_INT(expectedY, ball.y); +} + +#endif // TEST From aafd7aed58063ca81734abaeb37c492af6551466 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 16:11:07 +0000 Subject: [PATCH 214/375] test_checkCollision --- test/Pong/test_checkCollision.c | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 test/Pong/test_checkCollision.c diff --git a/test/Pong/test_checkCollision.c b/test/Pong/test_checkCollision.c new file mode 100644 index 0000000..12dac8a --- /dev/null +++ b/test/Pong/test_checkCollision.c @@ -0,0 +1,37 @@ +#ifdef TEST +#include "unity.h" +#include "pong.h" + + +void setUp(void){ + //Wenn Funktion Vorraussetzungen braucht +} + +void tearDown(void){ +} + +void test_checkCollision(void){ + /* Test 1: Ball und Schläger kollidieren nicht */ + Ball ball = {10, 10, 1, 1}; + Paddle paddle = {50, 10, 5, 10}; + + int result1 = checkCollision(ball, paddle); + TEST_ASSERT_EQUAL_INT(0, result1); + + /* Test 2: Ball kollidiert mit Schläger */ + ball.x = 50; + ball.y = 10; + int result2 = checkCollision(ball, paddle); + TEST_ASSERT_EQUAL_INT(1, result2); + + /* Test 3: Ball kollidiert mit Bildschirmrand */ + ball.x = 0; + ball.y = 0; + int result3 = checkCollision(ball, paddle); + TEST_ASSERT_EQUAL_INT(2, result3); + + /* Weitere Tests mit verschiedenen Kollisionsfällen können hinzugefügt werden */ + +} + +#endif // TEST From f80f94be5aaa826d6083e86893bb2eaa417b0d09 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 16:15:16 +0000 Subject: [PATCH 215/375] test_playerInputMovement --- test/Pongtest_playerInputMovement.c | 33 +++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 test/Pongtest_playerInputMovement.c diff --git a/test/Pongtest_playerInputMovement.c b/test/Pongtest_playerInputMovement.c new file mode 100644 index 0000000..6d281d7 --- /dev/null +++ b/test/Pongtest_playerInputMovement.c @@ -0,0 +1,33 @@ +#ifdef TEST +#include "unity.h" +#include "pong.h" + +void setUp(void){ + //Wenn Funktion Vorraussetzungen braucht +} + +void tearDown(void){ +} + +void test_playerInputMovement(void){ + /* Test 1: Bewegung nach oben */ + Paddle paddle = {100, 200, 5, 20}; + int userInput = -1; // Benutzereingabe für Bewegung nach oben + int initialY = paddle.y; + + processPlayerInput(&paddle, userInput); + TEST_ASSERT_EQUAL_INT(initialY - paddle.speed, paddle.y); + + /* Test 2: Bewegung nach unten */ + initialY = paddle.y; + userInput = 1; // Benutzereingabe für Bewegung nach unten + + processPlayerInput(&paddle, userInput); + TEST_ASSERT_EQUAL_INT(initialY + paddle.speed, paddle.y); + + /* Weitere Tests mit anderen Bewegungsrichtungen und Grenzfällen können hinzugefügt werden */ + +} + + +#endif // TEST From 890b2bd7eac93fe226c1d45adea56214b27b2b03 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 16:16:22 +0000 Subject: [PATCH 216/375] Verschieben --- .../test_playerInputMovement.c} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/{Pongtest_playerInputMovement.c => Pong/test_playerInputMovement.c} (100%) diff --git a/test/Pongtest_playerInputMovement.c b/test/Pong/test_playerInputMovement.c similarity index 100% rename from test/Pongtest_playerInputMovement.c rename to test/Pong/test_playerInputMovement.c From d09233ecd0030c75f5ef491759318f062761a07c Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 16:17:43 +0000 Subject: [PATCH 217/375] Nur Kommentar --- test/Pong/test_playerInputMovement.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/Pong/test_playerInputMovement.c b/test/Pong/test_playerInputMovement.c index 6d281d7..ab1d843 100644 --- a/test/Pong/test_playerInputMovement.c +++ b/test/Pong/test_playerInputMovement.c @@ -2,6 +2,8 @@ #include "unity.h" #include "pong.h" +// sicherstellen korrekte Funktion Steuerung für Schläger + void setUp(void){ //Wenn Funktion Vorraussetzungen braucht } From ab75538a33f5ecc8cb3192b26714bf7d7d7bf865 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 16:21:45 +0000 Subject: [PATCH 218/375] =?UTF-8?q?Pr=C3=BCfen=20Spiellogik=20f=C3=BCr=20B?= =?UTF-8?q?eenden=20des=20Spiels?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/Pong/test_endGameMaxScore.c | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 test/Pong/test_endGameMaxScore.c diff --git a/test/Pong/test_endGameMaxScore.c b/test/Pong/test_endGameMaxScore.c new file mode 100644 index 0000000..9fd92c2 --- /dev/null +++ b/test/Pong/test_endGameMaxScore.c @@ -0,0 +1,34 @@ +#ifdef TEST +#include "unity.h" +#include "pong.h" + +// Prüfen Spiellogik für Beenden des Spiels + +void setUp(void){ + //Wenn Funktion Vorraussetzungen braucht +} + +void tearDown(void){ +} + +void test_endGameMaxScore(void){ + /* arrange */ + int maxScore = 5; + int scorePlayer1 = 4, scorePlayer2 = 2; + + /* act */ + int result = checkGameEnd(scorePlayer1, scorePlayer2, maxScore); + + /* assert */ + TEST_ASSERT_EQUAL_INT(0, result); // Das Spiel sollte noch nicht enden + + /* Spieler 1 erreicht den Maximalscore */ + scorePlayer1 = 5; + result = checkGameEnd(scorePlayer1, scorePlayer2, maxScore); + TEST_ASSERT_EQUAL_INT(1, result); // Das Spiel sollte enden, da Spieler 1 den Maximalscore erreicht hat + + /* Weitere Tests mit anderen Spiellogikfällen und Endspielbedingungen können hinzugefügt werden */ + +} + +#endif // TEST From 9729861429297a99a24d1600b07b278f0954d375 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 16:40:02 +0000 Subject: [PATCH 219/375] Aktualisieren test/Pong/test_checkCollision.c --- test/Pong/test_checkCollision.c | 39 +++++++++++++++++++++------------ 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/test/Pong/test_checkCollision.c b/test/Pong/test_checkCollision.c index 12dac8a..ab2a4fa 100644 --- a/test/Pong/test_checkCollision.c +++ b/test/Pong/test_checkCollision.c @@ -11,27 +11,38 @@ void tearDown(void){ } void test_checkCollision(void){ - /* Test 1: Ball und Schläger kollidieren nicht */ Ball ball = {10, 10, 1, 1}; Paddle paddle = {50, 10, 5, 10}; - int result1 = checkCollision(ball, paddle); - TEST_ASSERT_EQUAL_INT(0, result1); + // Test Ball trifft rechte und linke Wand + ball.x = 0; + int result1 = checkCollision(&ball, &paddle); + TEST_ASSERT_EQUAL_INT(1, result1); - /* Test 2: Ball kollidiert mit Schläger */ - ball.x = 50; - ball.y = 10; - int result2 = checkCollision(ball, paddle); + ball.x = WIDTH - 1; + int result2 = checkCollision(&ball, &paddle); TEST_ASSERT_EQUAL_INT(1, result2); - /* Test 3: Ball kollidiert mit Bildschirmrand */ - ball.x = 0; + // Test Ball trifft obere und untere Wand + ball.x = 5; ball.y = 0; - int result3 = checkCollision(ball, paddle); - TEST_ASSERT_EQUAL_INT(2, result3); - - /* Weitere Tests mit verschiedenen Kollisionsfällen können hinzugefügt werden */ - + int result3 = checkCollision(&ball, &paddle); + TEST_ASSERT_EQUAL_INT(0, result3); + + ball.y = HEIGHT - 1; + int result4 = checkCollision(&ball, &paddle); + TEST_ASSERT_EQUAL_INT(0, result4); + + // Test wenn Ball Paddle trifft + ball.x = paddle.x - 1; + ball.y = paddle.y + 1; + int result5 = checkCollision(&ball, &paddle); + TEST_ASSERT_EQUAL_INT(0, result5); + + ball.x = paddle.x + 1; + ball.y = paddle.y + 1; + int result6 = checkCollision(&ball, &paddle); + TEST_ASSERT_EQUAL_INT(0, result6); } #endif // TEST From 0169f259dc6ae0f6be10d384b94f600e0584f9e9 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 16:51:51 +0000 Subject: [PATCH 220/375] Aktualisieren test/Pong/test_checkCollision.c --- test/Pong/test_checkCollision.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/test/Pong/test_checkCollision.c b/test/Pong/test_checkCollision.c index ab2a4fa..0a67bac 100644 --- a/test/Pong/test_checkCollision.c +++ b/test/Pong/test_checkCollision.c @@ -2,6 +2,19 @@ #include "unity.h" #include "pong.h" +typedef struct { + int x; + int y; + int speedX; + int speedY; +} Ball; + +typedef struct { + int x; + int y; + int width; + int height; +} Paddle; void setUp(void){ //Wenn Funktion Vorraussetzungen braucht @@ -16,32 +29,32 @@ void test_checkCollision(void){ // Test Ball trifft rechte und linke Wand ball.x = 0; - int result1 = checkCollision(&ball, &paddle); + int result1 = checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(1, result1); ball.x = WIDTH - 1; - int result2 = checkCollision(&ball, &paddle); + int result2 = checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(1, result2); // Test Ball trifft obere und untere Wand ball.x = 5; ball.y = 0; - int result3 = checkCollision(&ball, &paddle); + int result3 = checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(0, result3); ball.y = HEIGHT - 1; - int result4 = checkCollision(&ball, &paddle); + int result4 = checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(0, result4); // Test wenn Ball Paddle trifft ball.x = paddle.x - 1; ball.y = paddle.y + 1; - int result5 = checkCollision(&ball, &paddle); + int result5 = checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(0, result5); ball.x = paddle.x + 1; ball.y = paddle.y + 1; - int result6 = checkCollision(&ball, &paddle); + int result6 = checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(0, result6); } From d59f8f861d8bd9dc21ee9f574eb580afa4225216 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 16:54:49 +0000 Subject: [PATCH 221/375] Aktualisieren test/Pong/test_checkCollision.c --- test/Pong/test_checkCollision.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/Pong/test_checkCollision.c b/test/Pong/test_checkCollision.c index 0a67bac..74adc35 100644 --- a/test/Pong/test_checkCollision.c +++ b/test/Pong/test_checkCollision.c @@ -1,6 +1,8 @@ #ifdef TEST #include "unity.h" #include "pong.h" +#define WIDTH 40 //Breite Spielfeld +#define HEIGHT 20 //Höhe Spielfeld typedef struct { int x; From c89043355b34ce8bed35772188b142e455cf540d Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 16:56:03 +0000 Subject: [PATCH 222/375] Aktualisieren test/Pong/test_checkCollision.c --- test/Pong/test_checkCollision.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/Pong/test_checkCollision.c b/test/Pong/test_checkCollision.c index 74adc35..d94066d 100644 --- a/test/Pong/test_checkCollision.c +++ b/test/Pong/test_checkCollision.c @@ -31,32 +31,32 @@ void test_checkCollision(void){ // Test Ball trifft rechte und linke Wand ball.x = 0; - int result1 = checkCollision(ball, paddle.y, paddle.y); + int result1 = test_checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(1, result1); ball.x = WIDTH - 1; - int result2 = checkCollision(ball, paddle.y, paddle.y); + int result2 = test_checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(1, result2); // Test Ball trifft obere und untere Wand ball.x = 5; ball.y = 0; - int result3 = checkCollision(ball, paddle.y, paddle.y); + int result3 = test_checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(0, result3); ball.y = HEIGHT - 1; - int result4 = checkCollision(ball, paddle.y, paddle.y); + int result4 = test_checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(0, result4); // Test wenn Ball Paddle trifft ball.x = paddle.x - 1; ball.y = paddle.y + 1; - int result5 = checkCollision(ball, paddle.y, paddle.y); + int result5 = test_checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(0, result5); ball.x = paddle.x + 1; ball.y = paddle.y + 1; - int result6 = checkCollision(ball, paddle.y, paddle.y); + int result6 = test_checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(0, result6); } From 8ae07e26d165c0151f30cd8f6a67abb6a407806d Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 16:57:31 +0000 Subject: [PATCH 223/375] Aktualisieren test/Pong/test_checkCollision.c --- test/Pong/test_checkCollision.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/Pong/test_checkCollision.c b/test/Pong/test_checkCollision.c index d94066d..74adc35 100644 --- a/test/Pong/test_checkCollision.c +++ b/test/Pong/test_checkCollision.c @@ -31,32 +31,32 @@ void test_checkCollision(void){ // Test Ball trifft rechte und linke Wand ball.x = 0; - int result1 = test_checkCollision(ball, paddle.y, paddle.y); + int result1 = checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(1, result1); ball.x = WIDTH - 1; - int result2 = test_checkCollision(ball, paddle.y, paddle.y); + int result2 = checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(1, result2); // Test Ball trifft obere und untere Wand ball.x = 5; ball.y = 0; - int result3 = test_checkCollision(ball, paddle.y, paddle.y); + int result3 = checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(0, result3); ball.y = HEIGHT - 1; - int result4 = test_checkCollision(ball, paddle.y, paddle.y); + int result4 = checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(0, result4); // Test wenn Ball Paddle trifft ball.x = paddle.x - 1; ball.y = paddle.y + 1; - int result5 = test_checkCollision(ball, paddle.y, paddle.y); + int result5 = checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(0, result5); ball.x = paddle.x + 1; ball.y = paddle.y + 1; - int result6 = test_checkCollision(ball, paddle.y, paddle.y); + int result6 = checkCollision(ball, paddle.y, paddle.y); TEST_ASSERT_EQUAL_INT(0, result6); } From effc2739bf3ce18d90c4f04e53ef58a871f3c246 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 17:05:06 +0000 Subject: [PATCH 224/375] Implementierung checkGameEnd --- src/main/c/Pong/pong.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/c/Pong/pong.c b/src/main/c/Pong/pong.c index 5d9eb00..a395207 100644 --- a/src/main/c/Pong/pong.c +++ b/src/main/c/Pong/pong.c @@ -203,6 +203,14 @@ int pong(){ printf("Spieler 2 gewinnt!\n"); } +int checkGameEnd(int score1, int score2, int maxScore) { + if (score1 >= maxScore || score2 >= maxScore) { + return 1; // Das Spiel endet + } else { + return 0; // Das Spiel endet nicht + } +} + return 0; } From e7bfc4f30ba5a205a57ea8605ce05382ef833b0b Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 17:15:06 +0000 Subject: [PATCH 225/375] Aktualisieren test/Pong/test_endGameMaxScore.c --- test/Pong/test_endGameMaxScore.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/Pong/test_endGameMaxScore.c b/test/Pong/test_endGameMaxScore.c index 9fd92c2..700bcc1 100644 --- a/test/Pong/test_endGameMaxScore.c +++ b/test/Pong/test_endGameMaxScore.c @@ -14,17 +14,17 @@ void tearDown(void){ void test_endGameMaxScore(void){ /* arrange */ int maxScore = 5; - int scorePlayer1 = 4, scorePlayer2 = 2; + int score1 = 4, score2 = 2; /* act */ - int result = checkGameEnd(scorePlayer1, scorePlayer2, maxScore); + int result = checkGameEnd(score1, score2, maxScore); /* assert */ TEST_ASSERT_EQUAL_INT(0, result); // Das Spiel sollte noch nicht enden /* Spieler 1 erreicht den Maximalscore */ - scorePlayer1 = 5; - result = checkGameEnd(scorePlayer1, scorePlayer2, maxScore); + score1 = 5; + result = checkGameEnd(score1, score2, maxScore); TEST_ASSERT_EQUAL_INT(1, result); // Das Spiel sollte enden, da Spieler 1 den Maximalscore erreicht hat /* Weitere Tests mit anderen Spiellogikfällen und Endspielbedingungen können hinzugefügt werden */ From 27c60f6d2f068c8e1e98c8060897ceb0bdacd10f Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 17:17:13 +0000 Subject: [PATCH 226/375] Aktualisieren test/Pong/test_checkGameEnd.c --- test/Pong/{test_endGameMaxScore.c => test_checkGameEnd.c} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename test/Pong/{test_endGameMaxScore.c => test_checkGameEnd.c} (95%) diff --git a/test/Pong/test_endGameMaxScore.c b/test/Pong/test_checkGameEnd.c similarity index 95% rename from test/Pong/test_endGameMaxScore.c rename to test/Pong/test_checkGameEnd.c index 700bcc1..4f9144d 100644 --- a/test/Pong/test_endGameMaxScore.c +++ b/test/Pong/test_checkGameEnd.c @@ -11,7 +11,7 @@ void setUp(void){ void tearDown(void){ } -void test_endGameMaxScore(void){ +void test_checkGameEnd(void){ /* arrange */ int maxScore = 5; int score1 = 4, score2 = 2; From fdddc3ffc617ddc1dbcc39bca9d691bb5ea9a9a3 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 17:25:47 +0000 Subject: [PATCH 227/375] refactoring: checkGameEnd_verschoben --- src/main/c/Pong/pong.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/c/Pong/pong.c b/src/main/c/Pong/pong.c index a395207..09b72f0 100644 --- a/src/main/c/Pong/pong.c +++ b/src/main/c/Pong/pong.c @@ -124,6 +124,14 @@ void resetScore(int *score1, int *score2) { *score2 = 0; } +int checkGameEnd(int score1, int score2, int maxScore) { + if (score1 >= maxScore || score2 >= maxScore) { + return 1; // Das Spiel endet + } else { + return 0; // Das Spiel endet nicht + } +} + int pong(){ int paddle1PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; int paddle2PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; @@ -203,14 +211,6 @@ int pong(){ printf("Spieler 2 gewinnt!\n"); } -int checkGameEnd(int score1, int score2, int maxScore) { - if (score1 >= maxScore || score2 >= maxScore) { - return 1; // Das Spiel endet - } else { - return 0; // Das Spiel endet nicht - } -} - return 0; } From 5deb2f0023d4e0506b388d1e2230b0e53e1daf55 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 17:38:24 +0000 Subject: [PATCH 228/375] refactoring: Verbesserung_Funktion --- test/Pong/test_playerInputMovement.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/test/Pong/test_playerInputMovement.c b/test/Pong/test_playerInputMovement.c index ab1d843..6212f82 100644 --- a/test/Pong/test_playerInputMovement.c +++ b/test/Pong/test_playerInputMovement.c @@ -2,6 +2,12 @@ #include "unity.h" #include "pong.h" +typedef struct { + int x; + int y; + int speedX; + int speedY; +} Paddle; // sicherstellen korrekte Funktion Steuerung für Schläger void setUp(void){ @@ -13,19 +19,20 @@ void tearDown(void){ void test_playerInputMovement(void){ /* Test 1: Bewegung nach oben */ - Paddle paddle = {100, 200, 5, 20}; + Paddle paddle = {0, 10, 10, 10}; int userInput = -1; // Benutzereingabe für Bewegung nach oben - int initialY = paddle.y; + int expectedY = paddle.y - paddle.speedY; processPlayerInput(&paddle, userInput); - TEST_ASSERT_EQUAL_INT(initialY - paddle.speed, paddle.y); + TEST_ASSERT_EQUAL_INT(expectedY, paddle.y); /* Test 2: Bewegung nach unten */ - initialY = paddle.y; - userInput = 1; // Benutzereingabe für Bewegung nach unten + userInput = 1; + expectedY = paddle.y + paddle.speedY; + // Benutzereingabe für Bewegung nach unten processPlayerInput(&paddle, userInput); - TEST_ASSERT_EQUAL_INT(initialY + paddle.speed, paddle.y); + TEST_ASSERT_EQUAL_INT(expectedY, paddle.y); /* Weitere Tests mit anderen Bewegungsrichtungen und Grenzfällen können hinzugefügt werden */ From 64ad6921684a7b14bf37a4d6232f0dd2a67a827b Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 17:43:55 +0000 Subject: [PATCH 229/375] =?UTF-8?q?Hinzuf=C3=BCgen=20processPlayerInput?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/pong.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/main/c/Pong/pong.c b/src/main/c/Pong/pong.c index 09b72f0..a07a430 100644 --- a/src/main/c/Pong/pong.c +++ b/src/main/c/Pong/pong.c @@ -132,6 +132,20 @@ int checkGameEnd(int score1, int score2, int maxScore) { } } +void processPlayerInput(Paddle *paddle, int userInput) { + if (userInput == -1) { + // Bewegt den Schläger nach oben, solange der obere Rand nicht erreicht ist + if (paddle->y > 0) { + paddle->y--; + } + } else if (userInput == 1) { + // Bewegt den Schläger nach unten, solange der untere Rand nicht erreicht ist + if (paddle->y < HEIGHT - PADDLE_LENGTH) { + paddle->y++; + } + } +} + int pong(){ int paddle1PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; int paddle2PositionY = HEIGHT / 2 - PADDLE_LENGTH / 2; From f1db12f759bba7b34b058563aa6bfb0425280261 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 17:51:40 +0000 Subject: [PATCH 230/375] =?UTF-8?q?refactoring:=20=C3=A4nderung=5Ffunktion?= =?UTF-8?q?=5FprocessPlayerInput?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/pong.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/c/Pong/pong.c b/src/main/c/Pong/pong.c index a07a430..d962a4c 100644 --- a/src/main/c/Pong/pong.c +++ b/src/main/c/Pong/pong.c @@ -132,16 +132,16 @@ int checkGameEnd(int score1, int score2, int maxScore) { } } -void processPlayerInput(Paddle *paddle, int userInput) { +void processPlayerInput(int *paddlePositionY, int userInput) { if (userInput == -1) { // Bewegt den Schläger nach oben, solange der obere Rand nicht erreicht ist - if (paddle->y > 0) { - paddle->y--; + if (*paddlePositionY > 0) { + *paddlePositionY -=1; } } else if (userInput == 1) { // Bewegt den Schläger nach unten, solange der untere Rand nicht erreicht ist - if (paddle->y < HEIGHT - PADDLE_LENGTH) { - paddle->y++; + if (*paddlePositionY < HEIGHT - PADDLE_LENGTH) { + *paddlePositionY += 1; } } } From e231561f4d720630f1d447d0f6f741fd35675d6a Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 17:54:45 +0000 Subject: [PATCH 231/375] refactoring: ersetzen_integer --- test/Pong/test_playerInputMovement.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/Pong/test_playerInputMovement.c b/test/Pong/test_playerInputMovement.c index 6212f82..e8ebbdd 100644 --- a/test/Pong/test_playerInputMovement.c +++ b/test/Pong/test_playerInputMovement.c @@ -19,20 +19,20 @@ void tearDown(void){ void test_playerInputMovement(void){ /* Test 1: Bewegung nach oben */ - Paddle paddle = {0, 10, 10, 10}; + int paddlePositionY = 10; int userInput = -1; // Benutzereingabe für Bewegung nach oben - int expectedY = paddle.y - paddle.speedY; + int expectedY = paddlePositionY - 1; - processPlayerInput(&paddle, userInput); - TEST_ASSERT_EQUAL_INT(expectedY, paddle.y); + processPlayerInput(&paddlePositionY, userInput); + TEST_ASSERT_EQUAL_INT(expectedY, paddlePositionY); /* Test 2: Bewegung nach unten */ userInput = 1; - expectedY = paddle.y + paddle.speedY; + expectedY = paddlePositionY + 1; // Benutzereingabe für Bewegung nach unten - processPlayerInput(&paddle, userInput); - TEST_ASSERT_EQUAL_INT(expectedY, paddle.y); + processPlayerInput(&paddlePositionY, userInput); + TEST_ASSERT_EQUAL_INT(expectedY, paddlePositionY); /* Weitere Tests mit anderen Bewegungsrichtungen und Grenzfällen können hinzugefügt werden */ From 5c00cfc353689534924fcf27b9a00778f5682d9a Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 17:57:59 +0000 Subject: [PATCH 232/375] =?UTF-8?q?Hinzuf=C3=BCgen=20Ballstruktur?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/Pong/test_updateBallPosition.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/Pong/test_updateBallPosition.c b/test/Pong/test_updateBallPosition.c index 5894273..fe5fc3d 100644 --- a/test/Pong/test_updateBallPosition.c +++ b/test/Pong/test_updateBallPosition.c @@ -2,6 +2,13 @@ #include "unity.h" #include "pong.h" +typedef struct { + int x; + int y; + int speedX; + int speedY; +} Ball; + void setUp(void){ //Wenn Funktion Vorraussetzungen braucht } From d99d95fa1b36bd0fad4ba293f148d2c2d5533e20 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 18:01:43 +0000 Subject: [PATCH 233/375] Aktualisieren src/main/c/Pong/pong.h --- src/main/c/Pong/pong.h | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/c/Pong/pong.h b/src/main/c/Pong/pong.h index 4e6cfdd..9074535 100644 --- a/src/main/c/Pong/pong.h +++ b/src/main/c/Pong/pong.h @@ -5,5 +5,14 @@ int pong(); void resetScore(int *score1, int *score2); +typedef struct { + int x; + int y; + int speedX; + int speedY; +} Ball; + +void updateBallPosition(Ball* ball); + #endif From 9fad188369fcf5398d7cd220882e89e767367350 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 18:08:39 +0000 Subject: [PATCH 234/375] refactoring: ballstruktur --- test/Pong/test_updateBallPosition.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/Pong/test_updateBallPosition.c b/test/Pong/test_updateBallPosition.c index fe5fc3d..a5c98a6 100644 --- a/test/Pong/test_updateBallPosition.c +++ b/test/Pong/test_updateBallPosition.c @@ -18,7 +18,11 @@ void tearDown(void){ void test_updateBallPosition(void){ /* arrange */ - Ball ball = { 10, 10, 1, 1 }; + Ball ball; + ball.x = 10; + ball.y = 10; + ball.speedX = 1; + ball.speedY = 1; int expectedX = ball.x + ball.speedX * 5; // erwartete Endposition nach 5 Schritten int expectedY = ball.y + ball.speedY * 5; From 8a2e0991b81d76a32c8e810262fdfdfb9ff942f1 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 18:11:12 +0000 Subject: [PATCH 235/375] =?UTF-8?q?refactoring:=20l=C3=B6schen=5Fnicht=5Fk?= =?UTF-8?q?onsistent?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/pong.h | 9 --------- 1 file changed, 9 deletions(-) diff --git a/src/main/c/Pong/pong.h b/src/main/c/Pong/pong.h index 9074535..4e6cfdd 100644 --- a/src/main/c/Pong/pong.h +++ b/src/main/c/Pong/pong.h @@ -5,14 +5,5 @@ int pong(); void resetScore(int *score1, int *score2); -typedef struct { - int x; - int y; - int speedX; - int speedY; -} Ball; - -void updateBallPosition(Ball* ball); - #endif From 4d705138bb6eaf3d1eb9a20ecd8b6e597ba186f1 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sat, 3 Feb 2024 18:16:23 +0000 Subject: [PATCH 236/375] Versuch Test zum laufen zu bringen --- test/Pong/test_updateBallPosition.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/test/Pong/test_updateBallPosition.c b/test/Pong/test_updateBallPosition.c index a5c98a6..73cb040 100644 --- a/test/Pong/test_updateBallPosition.c +++ b/test/Pong/test_updateBallPosition.c @@ -9,6 +9,18 @@ typedef struct { int speedY; } Ball; +void updateBallPosition(Ball *ball) { + struct Ball { + int x; + int y; + int speedX; + int speedY; + }; + + ball->x += ball->speedX; + ball->y += ball->speedY; +} + void setUp(void){ //Wenn Funktion Vorraussetzungen braucht } From 7ced4d7fca3a60389c9458f9fe8c7c7933ef4b45 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sun, 4 Feb 2024 13:58:38 +0000 Subject: [PATCH 237/375] refactoring: doppelt_schon_in_pong.c --- test/Pong/test_updateBallPosition.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/test/Pong/test_updateBallPosition.c b/test/Pong/test_updateBallPosition.c index 73cb040..7c4d814 100644 --- a/test/Pong/test_updateBallPosition.c +++ b/test/Pong/test_updateBallPosition.c @@ -2,20 +2,7 @@ #include "unity.h" #include "pong.h" -typedef struct { - int x; - int y; - int speedX; - int speedY; -} Ball; - void updateBallPosition(Ball *ball) { - struct Ball { - int x; - int y; - int speedX; - int speedY; - }; ball->x += ball->speedX; ball->y += ball->speedY; From d5b2c9c54c95163df41e8d3f2110cfeed75dc463 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sun, 4 Feb 2024 14:04:30 +0000 Subject: [PATCH 238/375] =?UTF-8?q?refactoring:=20einf=C3=BCgen=5Fballstru?= =?UTF-8?q?ktur=5Fheaderdatei?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/pong.c | 8 -------- src/main/c/Pong/pong.h | 8 ++++++++ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/c/Pong/pong.c b/src/main/c/Pong/pong.c index d962a4c..3424283 100644 --- a/src/main/c/Pong/pong.c +++ b/src/main/c/Pong/pong.c @@ -11,14 +11,6 @@ #define PADDLE "\033[1;31m#\033[0m" #define BALL "\033[1;31mO\033[0m" -//Ballstruktur -typedef struct { - int x; - int y; - int speedX; - int speedY; -} Ball; - // Bildschirm löschen nach Veränderung Position void clearScreen() { system("clear"); diff --git a/src/main/c/Pong/pong.h b/src/main/c/Pong/pong.h index 4e6cfdd..f728064 100644 --- a/src/main/c/Pong/pong.h +++ b/src/main/c/Pong/pong.h @@ -1,6 +1,14 @@ #ifndef PONG_H #define PONG_H +//Ballstruktur +typedef struct { + int x; + int y; + int speedX; + int speedY; +} Ball; + int pong(); void resetScore(int *score1, int *score2); From 060e7da64edb7f92b4708cfb1eb60857f8d37a5e Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sun, 4 Feb 2024 14:07:28 +0000 Subject: [PATCH 239/375] =?UTF-8?q?refactoring:=20r=C3=BCckg=C3=A4ngig=5Fs?= =?UTF-8?q?onst=5FFehler=5FUnittest?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Pong/pong.c | 8 ++++++++ src/main/c/Pong/pong.h | 8 -------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/c/Pong/pong.c b/src/main/c/Pong/pong.c index 3424283..d962a4c 100644 --- a/src/main/c/Pong/pong.c +++ b/src/main/c/Pong/pong.c @@ -11,6 +11,14 @@ #define PADDLE "\033[1;31m#\033[0m" #define BALL "\033[1;31mO\033[0m" +//Ballstruktur +typedef struct { + int x; + int y; + int speedX; + int speedY; +} Ball; + // Bildschirm löschen nach Veränderung Position void clearScreen() { system("clear"); diff --git a/src/main/c/Pong/pong.h b/src/main/c/Pong/pong.h index f728064..4e6cfdd 100644 --- a/src/main/c/Pong/pong.h +++ b/src/main/c/Pong/pong.h @@ -1,14 +1,6 @@ #ifndef PONG_H #define PONG_H -//Ballstruktur -typedef struct { - int x; - int y; - int speedX; - int speedY; -} Ball; - int pong(); void resetScore(int *score1, int *score2); From df5a4a3af0fed08ef4a69312def6906d4df337ff Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sun, 4 Feb 2024 14:10:13 +0000 Subject: [PATCH 240/375] =?UTF-8?q?Gel=C3=B6scht=20test/Pong/test=5Fupdate?= =?UTF-8?q?BallPosition.c?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/Pong/test_updateBallPosition.c | 40 ----------------------------- 1 file changed, 40 deletions(-) delete mode 100644 test/Pong/test_updateBallPosition.c diff --git a/test/Pong/test_updateBallPosition.c b/test/Pong/test_updateBallPosition.c deleted file mode 100644 index 7c4d814..0000000 --- a/test/Pong/test_updateBallPosition.c +++ /dev/null @@ -1,40 +0,0 @@ -#ifdef TEST -#include "unity.h" -#include "pong.h" - -void updateBallPosition(Ball *ball) { - - ball->x += ball->speedX; - ball->y += ball->speedY; -} - -void setUp(void){ - //Wenn Funktion Vorraussetzungen braucht -} - -void tearDown(void){ -} - -void test_updateBallPosition(void){ - /* arrange */ - Ball ball; - ball.x = 10; - ball.y = 10; - ball.speedX = 1; - ball.speedY = 1; - int expectedX = ball.x + ball.speedX * 5; // erwartete Endposition nach 5 Schritten - int expectedY = ball.y + ball.speedY * 5; - - /* act */ - updateBallPosition(&ball); - updateBallPosition(&ball); - updateBallPosition(&ball); - updateBallPosition(&ball); - updateBallPosition(&ball); - - /* assert */ - TEST_ASSERT_EQUAL_INT(expectedX, ball.x); - TEST_ASSERT_EQUAL_INT(expectedY, ball.y); -} - -#endif // TEST From 36f0b9cc01513061c5dade96fe2c0b8e1e31351f Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sun, 4 Feb 2024 14:19:14 +0000 Subject: [PATCH 241/375] refactoring: wertevergleich --- test/Pong/test_checkCollision.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/test/Pong/test_checkCollision.c b/test/Pong/test_checkCollision.c index 74adc35..7d63643 100644 --- a/test/Pong/test_checkCollision.c +++ b/test/Pong/test_checkCollision.c @@ -32,7 +32,7 @@ void test_checkCollision(void){ // Test Ball trifft rechte und linke Wand ball.x = 0; int result1 = checkCollision(ball, paddle.y, paddle.y); - TEST_ASSERT_EQUAL_INT(1, result1); + TEST_ASSERT_EQUAL_INT(2, result1); ball.x = WIDTH - 1; int result2 = checkCollision(ball, paddle.y, paddle.y); @@ -42,22 +42,22 @@ void test_checkCollision(void){ ball.x = 5; ball.y = 0; int result3 = checkCollision(ball, paddle.y, paddle.y); - TEST_ASSERT_EQUAL_INT(0, result3); + TEST_ASSERT_EQUAL_INT(1, result3); ball.y = HEIGHT - 1; int result4 = checkCollision(ball, paddle.y, paddle.y); - TEST_ASSERT_EQUAL_INT(0, result4); + TEST_ASSERT_EQUAL_INT(1, result4); // Test wenn Ball Paddle trifft ball.x = paddle.x - 1; ball.y = paddle.y + 1; int result5 = checkCollision(ball, paddle.y, paddle.y); - TEST_ASSERT_EQUAL_INT(0, result5); + TEST_ASSERT_EQUAL_INT(1, result5); ball.x = paddle.x + 1; ball.y = paddle.y + 1; int result6 = checkCollision(ball, paddle.y, paddle.y); - TEST_ASSERT_EQUAL_INT(0, result6); + TEST_ASSERT_EQUAL_INT(1, result6); } #endif // TEST From e6a9a6f903b72be4aa05c586c4276e7d9fd20435 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sun, 4 Feb 2024 14:24:15 +0000 Subject: [PATCH 242/375] refactoring: werteausgabe --- test/Pong/test_checkCollision.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/Pong/test_checkCollision.c b/test/Pong/test_checkCollision.c index 7d63643..e2628be 100644 --- a/test/Pong/test_checkCollision.c +++ b/test/Pong/test_checkCollision.c @@ -32,11 +32,11 @@ void test_checkCollision(void){ // Test Ball trifft rechte und linke Wand ball.x = 0; int result1 = checkCollision(ball, paddle.y, paddle.y); - TEST_ASSERT_EQUAL_INT(2, result1); + TEST_ASSERT_EQUAL_INT(1, result1); ball.x = WIDTH - 1; int result2 = checkCollision(ball, paddle.y, paddle.y); - TEST_ASSERT_EQUAL_INT(1, result2); + TEST_ASSERT_EQUAL_INT(2, result2); // Test Ball trifft obere und untere Wand ball.x = 5; From 4cb53b42790b599798b88cbd882bb842d36a9ea9 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sun, 4 Feb 2024 14:28:42 +0000 Subject: [PATCH 243/375] refactoring: werteausgabe --- test/Pong/test_checkCollision.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Pong/test_checkCollision.c b/test/Pong/test_checkCollision.c index e2628be..cd7b0db 100644 --- a/test/Pong/test_checkCollision.c +++ b/test/Pong/test_checkCollision.c @@ -42,7 +42,7 @@ void test_checkCollision(void){ ball.x = 5; ball.y = 0; int result3 = checkCollision(ball, paddle.y, paddle.y); - TEST_ASSERT_EQUAL_INT(1, result3); + TEST_ASSERT_EQUAL_INT(0, result3); ball.y = HEIGHT - 1; int result4 = checkCollision(ball, paddle.y, paddle.y); From 490e7a8af95af67f1cb30d933bc9f1617faff05c Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sun, 4 Feb 2024 14:29:41 +0000 Subject: [PATCH 244/375] refactoring: werteausgabe --- test/Pong/test_checkCollision.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Pong/test_checkCollision.c b/test/Pong/test_checkCollision.c index cd7b0db..4b4e6e7 100644 --- a/test/Pong/test_checkCollision.c +++ b/test/Pong/test_checkCollision.c @@ -46,7 +46,7 @@ void test_checkCollision(void){ ball.y = HEIGHT - 1; int result4 = checkCollision(ball, paddle.y, paddle.y); - TEST_ASSERT_EQUAL_INT(1, result4); + TEST_ASSERT_EQUAL_INT(0, result4); // Test wenn Ball Paddle trifft ball.x = paddle.x - 1; From 7bb113ad02de63872a5264b651a5f1236db29c33 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sun, 4 Feb 2024 14:30:33 +0000 Subject: [PATCH 245/375] refactoring: werteausgabe --- test/Pong/test_checkCollision.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Pong/test_checkCollision.c b/test/Pong/test_checkCollision.c index 4b4e6e7..f05f7f8 100644 --- a/test/Pong/test_checkCollision.c +++ b/test/Pong/test_checkCollision.c @@ -52,7 +52,7 @@ void test_checkCollision(void){ ball.x = paddle.x - 1; ball.y = paddle.y + 1; int result5 = checkCollision(ball, paddle.y, paddle.y); - TEST_ASSERT_EQUAL_INT(1, result5); + TEST_ASSERT_EQUAL_INT(2, result5); ball.x = paddle.x + 1; ball.y = paddle.y + 1; From 2b1b3d81bb2f0cc1113c04be23f80e9d8b17a635 Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sun, 4 Feb 2024 14:31:12 +0000 Subject: [PATCH 246/375] refactoring: werteausgabe --- test/Pong/test_checkCollision.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Pong/test_checkCollision.c b/test/Pong/test_checkCollision.c index f05f7f8..16be1ca 100644 --- a/test/Pong/test_checkCollision.c +++ b/test/Pong/test_checkCollision.c @@ -57,7 +57,7 @@ void test_checkCollision(void){ ball.x = paddle.x + 1; ball.y = paddle.y + 1; int result6 = checkCollision(ball, paddle.y, paddle.y); - TEST_ASSERT_EQUAL_INT(1, result6); + TEST_ASSERT_EQUAL_INT(2, result6); } #endif // TEST From a571ef920196e8f51c1457067a55689f10d6266c Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Sun, 4 Feb 2024 14:38:38 +0000 Subject: [PATCH 247/375] refactoring: optimierung_schleife --- test/Pong/test_clearScreen.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/Pong/test_clearScreen.c b/test/Pong/test_clearScreen.c index e859d99..f2701a1 100644 --- a/test/Pong/test_clearScreen.c +++ b/test/Pong/test_clearScreen.c @@ -18,10 +18,10 @@ void test_clearScreen(void){ /* arrange */ int i, j; for (i = 0; i < TEST_SCREEN_HEIGHT; i++) { - for (j = 0; j < TEST_SCREEN_WIDTH+1; j++) { - screen[i][j] = 'X'; + for (j = 0; j < TEST_SCREEN_WIDTH; j++) { + screen[i][j] = ' '; } - screen[i][j-1] = '\0'; + screen[i][j] = '\0'; } /* act */ @@ -29,7 +29,7 @@ void test_clearScreen(void){ /* assert */ for (i = 0; i < TEST_SCREEN_HEIGHT; i++) { - for (j = 0; j < TEST_SCREEN_WIDTH+1; j++) { + for (j = 0; j < TEST_SCREEN_WIDTH; j++) { TEST_ASSERT_EQUAL_INT(' ', screen[i][j]); } } From 1b6ffe72d9c6a7333ce438ebbf7a72d53981d26f Mon Sep 17 00:00:00 2001 From: David Moeller Date: Mon, 5 Feb 2024 19:44:20 +0100 Subject: [PATCH 248/375] refactoring: open_tile and draw_minesweeper --- src/main/c/Minesweeper/minesweeper_start.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index fae882a..4a0c0e7 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -189,6 +189,9 @@ bool array_contains_value(int *array, int value, int length){ } void draw_minesweeper(Minesweeper_Board *board){ + int s = 0; + for(int i = 0; i < board->height * board->width; i++){s += board->tiles[i] == FLAG ? 1 : 0;} + printf("Score: %d\n", s); printf(" "); for(int i = 0; i < board->width; i++){printf("%d", i / 10);} printf("\n "); @@ -214,8 +217,7 @@ void draw_minesweeper(Minesweeper_Board *board){ int open_tile(Minesweeper_Board *board, int tile){ if(array_contains_value(board->bombs, tile, board->num_bombs)){return -1;} - int num = number_of_bombs(board, tile); - if(1){return num;} + return number_of_bombs(board, tile); } int number_of_bombs(Minesweeper_Board *board, int tile){ From edcad38cdb593d8ab185b45b2aff5483c1fe9640 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Mon, 5 Feb 2024 20:20:42 +0100 Subject: [PATCH 249/375] refactoring: open_empty_space and number_of_bombs --- src/main/c/Minesweeper/minesweeper_start.c | 42 +++++++++++----------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 4a0c0e7..9122211 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -27,6 +27,7 @@ void draw_minesweeper(Minesweeper_Board *board); int open_tile(Minesweeper_Board *board, int tile); int number_of_bombs(Minesweeper_Board *board, int tile); void open_empty_space(Minesweeper_Board *board, int tile, int index); +int is_Valid_tile(Minesweeper_Board *board, int tile, int i); #pragma endregion #pragma region Global @@ -223,15 +224,8 @@ int open_tile(Minesweeper_Board *board, int tile){ int number_of_bombs(Minesweeper_Board *board, int tile){ int sum = 0; for(int i = 0; i < 8; i++){ - int check_tile = tile; - if(i < 3){if(tile % board->width == 0){continue;} - else{check_tile -= 1;}} - if(i > 4){if(tile % board->width + 1 == board->width){continue;} - else{check_tile += 1;}} - if(i % 3 == 0){if(i != 0 && tile / board->width == 0){continue;} - else{check_tile -= board->width;}} - if(i % 3 == 1){if(tile / board->width + 1 == height){continue;} - else{check_tile += board->width;}} + int check_tile = is_Valid_tile(board, tile, i); + if(check_tile == -1){continue;} if(array_contains_value(board->bombs, check_tile, board->num_bombs)){sum++;} } return sum; @@ -239,19 +233,27 @@ int number_of_bombs(Minesweeper_Board *board, int tile){ void open_empty_space(Minesweeper_Board *board, int tile, int index){ board->tiles[tile] = EMPTY; - board->marked[index++] = tile; + board->marked[index] = tile; for(int i = 0; i < 8; i++){ - int check_tile = tile; - if(i < 3){if(tile % board->width == 0){continue;} - else{check_tile -= 1;}} - if(i > 4){if(tile % board->width + 1 == board->width){continue;} - else{check_tile += 1;}} - if(i % 3 == 0){if(i != 0 && tile / board->width == 0){continue;} - else{check_tile -= board->width;}} - if(i % 3 == 1){if(tile / board->width + 1 == height){continue;} - else{check_tile += board->width;}} + int check_tile = is_Valid_tile(board, tile, i); + if(check_tile == -1){continue;} int sum = open_tile(board, check_tile); if(sum != 0){board->tiles[check_tile] = sum + 48;} - else if(!array_contains_value(board->marked, check_tile, index)){open_empty_space(board, check_tile, index);} + else if(!array_contains_value(board->marked, check_tile, index + 1)){open_empty_space(board, check_tile, index + 1);} } +} + +int is_Valid_tile(Minesweeper_Board *board, int tile, int i){ + int check_tile = tile; + + if(i < 3){if(tile % board->width == 0){return -1;} + else{check_tile -= 1;}} + if(i > 4){if(tile % board->width + 1 == board->width){return -1;} + else{check_tile += 1;}} + if(i % 3 == 0){if(i != 0 && tile / board->width == 0){return -1;} + else{check_tile -= board->width;}} + if(i % 3 == 1){if(tile / board->width + 1 == height){return -1;} + else{check_tile += board->width;}} + + return check_tile; } \ No newline at end of file From a667ee733a6f700c03943397182dc794679f3903 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Mon, 5 Feb 2024 20:54:16 +0100 Subject: [PATCH 250/375] refactoring: open_empty_space --- src/main/c/Minesweeper/minesweeper_start.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 9122211..f9131fb 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -163,7 +163,7 @@ Minesweeper_Board initialize_minesweeper(){ board.tiles = (int*) malloc(width * height * sizeof(int)); for(int i = 0; i < width * height; i++){board.tiles[i] = BLOCK;} board.marked = (int*) malloc(width * height * sizeof(int)); - for(int i = 0; i < width * height; i++){board.marked[i] = 0;} + for(int i = 0; i < width * height; i++){board.marked[i] = -1;} board.num_bombs = num_bombs; board.bombs = (int*) malloc(board.num_bombs * sizeof(int)); for(int i = 0; i < num_bombs; i++){board.bombs[i] = -1;} @@ -239,7 +239,7 @@ void open_empty_space(Minesweeper_Board *board, int tile, int index){ if(check_tile == -1){continue;} int sum = open_tile(board, check_tile); if(sum != 0){board->tiles[check_tile] = sum + 48;} - else if(!array_contains_value(board->marked, check_tile, index + 1)){open_empty_space(board, check_tile, index + 1);} + else if(!array_contains_value(board->marked, check_tile, board->height * board->width)){open_empty_space(board, check_tile, index + 1);} } } @@ -250,7 +250,7 @@ int is_Valid_tile(Minesweeper_Board *board, int tile, int i){ else{check_tile -= 1;}} if(i > 4){if(tile % board->width + 1 == board->width){return -1;} else{check_tile += 1;}} - if(i % 3 == 0){if(i != 0 && tile / board->width == 0){return -1;} + if(i % 3 == 0){if(tile / board->width == 0){return -1;} else{check_tile -= board->width;}} if(i % 3 == 1){if(tile / board->width + 1 == height){return -1;} else{check_tile += board->width;}} From a8b525a146e6fbf1a3d9b500a3187a164f3beeac Mon Sep 17 00:00:00 2001 From: David Moeller Date: Mon, 5 Feb 2024 21:07:50 +0100 Subject: [PATCH 251/375] refactoring: snake_collision --- src/main/c/Minesweeper/minesweeper_start.c | 6 +++--- src/main/c/Snake/snake_start.c | 8 ++------ 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index f9131fb..a102944 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -3,6 +3,7 @@ #include #include #include "minesweeper_start.h" + #pragma region defines #define BLOCK '#' #define FLAG 'x' @@ -15,7 +16,6 @@ #define HARD 3 #pragma endregion - #pragma region Funktion_heads void main_menu_minesweeper(); void game_minesweeper(); @@ -120,7 +120,7 @@ void options_minesweeper(){ switch (option){ case 1: - printf("Bitte neu Schwierigkeit eingeben (1 - 3): "); + printf("Bitte neue Schwierigkeit eingeben (1 - 3): "); scanf("%d", &num_bombs); getchar(); num_bombs = num_bombs == 1 ? EASY : num_bombs == 2 ? NORMAL : HARD; @@ -128,7 +128,7 @@ void options_minesweeper(){ break; case 2: num_bombs = num_bombs < width * height / NORMAL ? EASY : num_bombs == width * height / NORMAL ? NORMAL : HARD; - printf("Bitte neu Groesse eingeben (1 - 3): "); + printf("Bitte neue Groesse eingeben (1 - 3): "); scanf("%d", &width); getchar(); width = width == 1 ? SMALL : width == 2 ? MIDDLE : LARGE; diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 26c83c4..c3a0cf8 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -175,14 +175,10 @@ int part_of_snake(Snake *snake, unsigned char tile){ bool check_if_dead(Snake *snake){ //Self - if(part_of_snake(snake, snake->segments[0]) > 0){ - return true; - } + if(part_of_snake(snake, snake->segments[0])){return true;} //Wall - if(snake->segments[0] % 16 == 0 || (snake->segments[0] / 16) % 16 == 0){ - return true; - } + if(snake->segments[0] % 16 == 0 || (snake->segments[0] / 16) % 16 == 0){return true;} return false; } From 101a65d29353f1006bc4faba6734612c448cc1d5 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Mon, 5 Feb 2024 21:13:06 +0100 Subject: [PATCH 252/375] refactoring: draw_snake --- src/main/c/Snake/snake_start.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index c3a0cf8..2bbab0e 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -150,7 +150,13 @@ void draw_snake(Snake *snake, unsigned char fruit){ printf("|"); for(int j = 1; j <= WIDTH; j++){ int index = part_of_snake(snake, i * 16 + j); - if(index == 0){printf("0");} + if(index == 0){ + switch(snake->direction){ + case -16: printf("A");break; + case -1: printf("<");break; + case 1: printf(">");break; + case 16: printf("V");break; + default: break;}} else if(index > 0){printf("O");} else if(i * 16 + j == fruit){printf("X");} else{printf(" ");} From 84f74de2988d7334ca162bff55a43decdbcfa2ee Mon Sep 17 00:00:00 2001 From: David Moeller Date: Mon, 5 Feb 2024 21:18:19 +0100 Subject: [PATCH 253/375] Snake adding Win and Lose Screen --- src/main/c/Snake/snake_start.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 2bbab0e..03323ce 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -77,12 +77,13 @@ void game_snake(){ while (running){ system("clear"); draw_snake(&snake, fruit); - if(check_if_dead(&snake)){break;} + if(check_if_dead(&snake)){printf("You Lose!"); getchar(); break;} t = clock() - t; get_next_move(TIME_TURN - (double)t / CLOCKS_PER_SEC, &snake, &running); t = clock(); move_snake(&snake); if(part_of_snake(&snake, fruit) == 0){fruit = eating_fruit(&snake);} + if(snake.length == WIDTH * HEIGHT){printf("You Win!"); running = false; getchar();} } } From 8e4593aaa40e0905555c5baaa3f6d2e878ffaaa9 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Mon, 5 Feb 2024 21:36:54 +0100 Subject: [PATCH 254/375] Minesweeper adding Win and Loss --- src/main/c/Minesweeper/minesweeper_start.c | 8 ++++++-- src/main/c/Snake/snake_start.c | 3 +++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index a102944..19b4e50 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -36,7 +36,6 @@ unsigned int height = MIDDLE; int num_bombs = MIDDLE * MIDDLE / NORMAL; #pragma endregion //Global - void minesweeper_start(){ system("clear"); main_menu_minesweeper(); @@ -93,13 +92,18 @@ void game_minesweeper(){ x = x + y * board.width; if(t == 0){ int bombs = open_tile(&board, x); - if(bombs == -1){running = false;} + if(bombs == -1){printf("You Lose!"); getchar(); break;} else if(bombs == 0){open_empty_space(&board, x, 0);} else{board.tiles[x] = bombs + 48;} } if(t == 1){board.tiles[x] = board.tiles[x] == FLAG ? BLOCK : board.tiles[x] == BLOCK ? FLAG : board.tiles[x];} } if (t == 2){break;} + + int test = 1; + for (int i = 0; i < board.height * board.width; i++){if(board.tiles[i] == BLOCK){test = 0; break;}} + if(test){printf("You Win!"); getchar(); break;} + } } diff --git a/src/main/c/Snake/snake_start.c b/src/main/c/Snake/snake_start.c index 03323ce..ac8690f 100644 --- a/src/main/c/Snake/snake_start.c +++ b/src/main/c/Snake/snake_start.c @@ -5,12 +5,15 @@ #include #include "snake_start.h" #include "get_character.h" + +#pragma region defines #define WIDTH 15 #define HEIGHT 15 #define TURN 0.5 #define START_LENGTH 3 #define START_DIRECTION 1 #define START_TILE 8 * 16 + 8 +#pragma endregion #pragma region Funktion_heads void main_menu_snake(); From abc0c766a81a2450bb3f055f40eea332c2a4785b Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Mon, 5 Feb 2024 20:56:11 +0000 Subject: [PATCH 255/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index e9bf2e5..83bea8b 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -46,38 +46,50 @@ int multiplayer() { char ships1[100]; char ships2[100]; + char letco; + int numco, coor; + for (int i = 0; i <= 99; i++) { - multi[i] = 'X'; + multi[i] = '0'; } for (int i = 0; i <= 99; i++) { - player1[i] = 'X'; + player1[i] = '0'; } for (int i = 0; i <= 99; i++) { - player2[i] = 'X'; + player2[i] = '0'; } for (int i = 0; i <= 99; i++) { - ships1[i] = 'X'; + ships1[i] = '0'; } for (int i = 0; i <= 99; i++) { - ships2[i] = 'X'; + ships2[i] = '0'; } !feld(multi); + for (int i = 0; i <= 16; i++) { + + printf("Player 1, platziere deine Schiffe."); + scanf("%c%d", &letco, &numco); + + coor = convertcoor(letco, numco); + + ships1[coor] = 'X'; + return 0; } From a6629af6805612d3ed140fc84f170b97cd7fd292 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Mon, 5 Feb 2024 22:16:07 +0000 Subject: [PATCH 256/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 34 +++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 83bea8b..315a2aa 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -31,6 +31,40 @@ int feld(char prifield[]) { return 0; } +int convertcoor(char a, int b) { + + int co = 0; + + switch (a) { + case 'A': co = 0; break; + case 'a': co = 0; break; + case 'B': co = 10; break; + case 'b': co = 10; break; + case 'C': co = 20; break; + case 'c': co = 20; break; + case 'D': co = 30; break; + case 'd': co = 30; break; + case 'E': co = 40; break; + case 'e': co = 40; break; + case 'F': co = 50; break; + case 'f': co = 50; break; + case 'G': co = 60; break; + case 'g': co = 60; break; + case 'H': co = 70; break; + case 'h': co = 70; break; + case 'I': co = 80; break; + case 'i': co = 80; break; + case 'J': co = 90; break; + case 'j': co = 90; break; + default: co = 0; + } + + co += b; + co -= 1; + + return co; +} + int singleplayer() { From d51e8e9705c37468f3726032d654a00b35e3a572 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Tue, 6 Feb 2024 13:48:44 +0100 Subject: [PATCH 257/375] get input bugs fixed --- CMakeLists.txt | 2 -- cmake-build-debug/Testing/Temporary/LastTest.log | 4 ++-- src/main/c/Hangman/playHangman.c | 4 +--- src/main/c/main.h | 3 ++- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a83ec3e..763f8e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,6 +25,4 @@ add_executable(pmuw_projekt_notebinder src/main/c/Hangman/playHangman.h src/main/c/Hangman/Test/test_drawHangman.c src/main/c/Hangman/Test/test_drawHangman.h - src/main/c/Hangman/Test/test_currentState.c - src/main/c/Hangman/Test/test_currentState.h ) diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index 36c41e2..5481496 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Feb 02 10:46 CET +Start testing: Feb 06 11:59 CET ---------------------------------------------------------- -End testing: Feb 02 10:46 CET +End testing: Feb 06 11:59 CET diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index ec36659..e55ee12 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -51,8 +51,6 @@ void playHangman(char *wordToGuess) { // Get a letter from the user char guess; printf("Enter your guess: \n"); - - // Function to get a single character input and check for errors guess = getSingleCharInput(); // Check if a valid character is entered @@ -64,7 +62,7 @@ void playHangman(char *wordToGuess) { // Convert uppercase letter to lowercase guess = toLower(guess); - // Check if the guess is lower case and is a letter (valid) + // Check if the guess is a letter (valid) if (!isalpha(guess)) { printf("Please enter a valid alphabet.\n"); ignoreExtraInput(); diff --git a/src/main/c/main.h b/src/main/c/main.h index 71870e0..899f8f6 100644 --- a/src/main/c/main.h +++ b/src/main/c/main.h @@ -1,6 +1,7 @@ #ifndef MAIN_H #define MAIN_H - +#include "playHangman.h" +#include "playHangman.c" int main(); #endif // MAIN_H \ No newline at end of file From 0ff75961c60e4dcecefe85636cb82d9d55a68ec2 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Tue, 6 Feb 2024 16:05:02 +0100 Subject: [PATCH 258/375] running error fixed --- CMakeLists.txt | 6 --- cmake-build-debug/.ninja_deps | Bin 12788 -> 20184 bytes cmake-build-debug/.ninja_log | 35 ++++++++++++------ .../Testing/Temporary/LastTest.log | 4 +- cmake-build-debug/build.ninja | 30 +-------------- src/main/c/Hangman/Test/test_playHangman.c | 19 ++++++++++ src/main/c/Hangman/currentState.c | 7 ---- src/main/c/Hangman/currentState.h | 5 --- src/main/c/Hangman/drawHangman.c | 6 +++ src/main/c/Hangman/initializeHangman.c | 5 +++ src/main/c/Hangman/playHangman.h | 23 +++++++++--- src/main/c/Hangman/rules.c | 7 ---- src/main/c/Hangman/rules.h | 4 -- src/main/c/main.c | 5 ++- src/main/c/main.h | 3 +- 15 files changed, 79 insertions(+), 80 deletions(-) create mode 100644 src/main/c/Hangman/Test/test_playHangman.c delete mode 100644 src/main/c/Hangman/currentState.c delete mode 100644 src/main/c/Hangman/currentState.h delete mode 100644 src/main/c/Hangman/rules.c delete mode 100644 src/main/c/Hangman/rules.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 763f8e7..455aa81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,14 +15,8 @@ add_executable(pmuw_projekt_notebinder src/main/c/main.h src/main/c/Hangman/drawHangman.c src/main/c/Hangman/drawHangman.h - src/main/c/Hangman/rules.c - src/main/c/Hangman/rules.h src/main/c/Hangman/initializeHangman.c src/main/c/Hangman/initializeHangman.h - src/main/c/Hangman/currentState.c - src/main/c/Hangman/currentState.h src/main/c/Hangman/playHangman.c src/main/c/Hangman/playHangman.h - src/main/c/Hangman/Test/test_drawHangman.c - src/main/c/Hangman/Test/test_drawHangman.h ) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index df97cc577c88d495e15633ebfcc2b144956f5e17..3bcb602487d3be52859d5953ed7adbacb6584329 100644 GIT binary patch delta 1170 zcmd7QOGq106b9gXO{2C(N3k&r9g|v1i!x(c73v~8#kkQveD@JUe8gg7>H~4-rW*|^ zTo($)7YZ$eG{Y>^g|wT3D?ub6K3WPDT6C%1mH6Lu9I6X(>Ea_d=iGDdfjP&X?I4XD zKQu2AGW3cNQtjW2^;RmD*EqY_yvPKeX~Dlk(;uE;pYKnZLx_10`<@h!Sz2*!vQHB)z08r}{*iruvem_v}m)r*eKt^@VR${>HQVatd?WXDj;F z7(^Ybk@i`Mykg$QT6g1fZk!B6Q_=6=$L33aR8%5NYE_TKHJ(LPlvnBT9}8-rEFPa? zN77^JVh;IJHt)e-ehOzDLU}A)ex;iy4OLlPm);!LrZRk8+8w)iGn2m>&~8}i$Lh(8 zH-rgfaf!@~R{UIcD(bB0pvL&Nv)@u-p${n+JcH*@3w2Nr{Av7<(&(OJRV$@lUY2uN F*(u-W_q+fA delta 8 PcmcaHm+?#ThA)Ny6_Ny_ diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index c60e4a8..4eb5881 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -1,13 +1,26 @@ # ninja log v5 -0 40 1706867178156302406 build.ninja f2183aada2fc9ffc -1 214 1706706276607374928 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o cdaff7b94c55641c -0 213 1706706276607336012 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 -1 214 1706706276607365429 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o 7d64de4520ec9e97 -1 43 1706797998872539655 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 -1 44 1706122039878920765 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o 69a5bcd8c57a43b3 -1 38 1706122217155672196 CMakeFiles/pmuw_projekt_notebinder.dir/test/Hangman/word_selector_test.c.o e932f546d59a9d76 -106 195 1706551302079685763 pmuw_projekt_notebinder fbb48fd3bf0b96c1 +0 32 1707224707015552741 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_playHangman.c.o c78eb198389ea64b +2 48 1707224297294010118 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_drawHangman.c.o b4d90a6b54ad1664 +1 40 1707224901227175471 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 1 38 1706122372717341436 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o f1dbf76e6b4bc97d -2 56 1706797998885305995 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 -1 115 1706866005935735539 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o c4eef1ff589ab182 -1 114 1706866005935734705 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_drawHangman.c.o b4d90a6b54ad1664 +1 33 1707224901218890256 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o c4eef1ff589ab182 +106 195 1706551302079685763 pmuw_projekt_notebinder fbb48fd3bf0b96c1 +1 38 1706122217155672196 CMakeFiles/pmuw_projekt_notebinder.dir/test/Hangman/word_selector_test.c.o e932f546d59a9d76 +1 44 1706122039878920765 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o 69a5bcd8c57a43b3 +1 38 1707224901221200228 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 +1 214 1706706276607365429 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o 7d64de4520ec9e97 +0 213 1706706276607336012 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 +2 47 1707224297291255019 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o cdaff7b94c55641c +0 42 1707224957969670299 build.ninja f2183aada2fc9ffc +0 34 1707224957969670299 build.ninja f2183aada2fc9ffc +1 29 1707224958003312078 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o 7d64de4520ec9e97 +1 34 1707224958007844146 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 +0 32 1707225145761047265 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 +1 31 1707225193573982892 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 +0 34 1707225362817701877 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 +0 45 1707225516452726019 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 +1 32 1707225552742056223 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 +32 62 1707225552772258606 pmuw_projekt_notebinder a5668107eb06d295 +0 32 1707225688396107422 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o f1dbf76e6b4bc97d +0 28 1707225694194160949 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o f1dbf76e6b4bc97d +28 61 1707225694227136765 pmuw_projekt_notebinder a5668107eb06d295 diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index 5481496..bf59ee4 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Feb 06 11:59 CET +Start testing: Feb 06 14:23 CET ---------------------------------------------------------- -End testing: Feb 06 11:59 CET +End testing: Feb 06 14:23 CET diff --git a/cmake-build-debug/build.ninja b/cmake-build-debug/build.ninja index 0264c76..be724d5 100644 --- a/cmake-build-debug/build.ninja +++ b/cmake-build-debug/build.ninja @@ -70,13 +70,6 @@ build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o: OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman -build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/rules.c || cmake_object_order_depends_target_pmuw_projekt_notebinder - DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o.d - FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics - INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template - OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir - OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman - build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/initializeHangman.c || cmake_object_order_depends_target_pmuw_projekt_notebinder DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o.d FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics @@ -84,13 +77,6 @@ build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangma OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman -build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/currentState.c || cmake_object_order_depends_target_pmuw_projekt_notebinder - DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o.d - FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics - INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template - OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir - OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman - build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/playHangman.c || cmake_object_order_depends_target_pmuw_projekt_notebinder DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o.d FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics @@ -98,20 +84,6 @@ build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o: OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman -build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_drawHangman.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/Test/test_drawHangman.c || cmake_object_order_depends_target_pmuw_projekt_notebinder - DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_drawHangman.c.o.d - FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics - INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template - OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir - OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test - -build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_currentState.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/Test/test_currentState.c || cmake_object_order_depends_target_pmuw_projekt_notebinder - DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_currentState.c.o.d - FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics - INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template - OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir - OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test - # ============================================================================= # Link build statements for EXECUTABLE target pmuw_projekt_notebinder @@ -120,7 +92,7 @@ build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_curren ############################################# # Link the executable pmuw_projekt_notebinder -build pmuw_projekt_notebinder: C_EXECUTABLE_LINKER__pmuw_projekt_notebinder_Debug CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_drawHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_currentState.c.o +build pmuw_projekt_notebinder: C_EXECUTABLE_LINKER__pmuw_projekt_notebinder_Debug CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o FLAGS = -g -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir POST_BUILD = : diff --git a/src/main/c/Hangman/Test/test_playHangman.c b/src/main/c/Hangman/Test/test_playHangman.c new file mode 100644 index 0000000..482eb2c --- /dev/null +++ b/src/main/c/Hangman/Test/test_playHangman.c @@ -0,0 +1,19 @@ +#include "playHangman.c" +#include +#include + + +// Custom assert function to compare expected and actual values +void assert_equal(const char *test_name, const char *expected, const char *actual) { + if (strcmp(expected, actual) == 0) { + printf("[PASS] %s\n", test_name); + } else { + printf("[FAIL] %s - Expected: \"%s\", Actual: \"%s\"\n", test_name, expected, actual); + } +} + +// Test function for playHangman() +void test_playHangman() { + char wordToGuess[] = "test"; + //playHangman(wordToGuess); +} \ No newline at end of file diff --git a/src/main/c/Hangman/currentState.c b/src/main/c/Hangman/currentState.c deleted file mode 100644 index e4bc459..0000000 --- a/src/main/c/Hangman/currentState.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "currentState.h" - -void currentState(char *currentGuess, int mistakes) { - printf("Current Word: %s \n", currentGuess); - printf("Mistakes Made: %d/6 \n", mistakes); - drawHangman(mistakes); -} \ No newline at end of file diff --git a/src/main/c/Hangman/currentState.h b/src/main/c/Hangman/currentState.h deleted file mode 100644 index dbf10bf..0000000 --- a/src/main/c/Hangman/currentState.h +++ /dev/null @@ -1,5 +0,0 @@ -#ifndef PMUW_PROJEKT_NOTEBINDER_CURRENTSTATE_H -#define PMUW_PROJEKT_NOTEBINDER_CURRENTSTATE_H -#include -#include "drawHangman.c" -#endif //PMUW_PROJEKT_NOTEBINDER_CURRENTSTATE_H diff --git a/src/main/c/Hangman/drawHangman.c b/src/main/c/Hangman/drawHangman.c index 483e4ec..12b074a 100644 --- a/src/main/c/Hangman/drawHangman.c +++ b/src/main/c/Hangman/drawHangman.c @@ -83,4 +83,10 @@ void drawHangman(int incorrectGuesses) { " \n" " \n"); } +} + +void currentState(char *currentGuess, int mistakes) { + printf("Current Word: %s \n", currentGuess); + printf("Mistakes Made: %d/6 \n", mistakes); + drawHangman(mistakes); } \ No newline at end of file diff --git a/src/main/c/Hangman/initializeHangman.c b/src/main/c/Hangman/initializeHangman.c index 221e50e..9ea56a2 100644 --- a/src/main/c/Hangman/initializeHangman.c +++ b/src/main/c/Hangman/initializeHangman.c @@ -10,4 +10,9 @@ void initializeHangman(char *wordToGuess, char *currentGuess) { } } currentGuess[wordLength] = '\0'; +} + +void printRules(){ + printf("Rules: \n"); + printf(" - You are allowed a maximum of 6 mistakes.\n"); } \ No newline at end of file diff --git a/src/main/c/Hangman/playHangman.h b/src/main/c/Hangman/playHangman.h index ca1348e..aad634c 100644 --- a/src/main/c/Hangman/playHangman.h +++ b/src/main/c/Hangman/playHangman.h @@ -1,10 +1,21 @@ #ifndef PMUW_PROJEKT_NOTEBINDER_PLAYHANGMAN_H #define PMUW_PROJEKT_NOTEBINDER_PLAYHANGMAN_H + #include + +// Include declarations from corresponding header files +#include "initializeHangman.h" +#include "drawHangman.h" +#include "word_selector.h" + +// Include function implementations directly from .c files +void initializeHangman(char *wordToGuess, char *currentGuess); +void printRules(); +void drawHangman(int incorrectGuesses); +void currentState(char *currentGuess, int mistakes); +const char* selectRandomWord(); +const char wordsList[NUM_WORDS][MAX_WORD_LENGTH + 1]; + #define MAX_MISTAKES 6 -#include "initializeHangman.c" -#include "rules.c" -#include "currentState.c" -#include "drawHangman.c" -#include "word_selector.c" -#endif //PMUW_PROJEKT_NOTEBINDER_PLAYHANGMAN_H \ No newline at end of file + +#endif // PMUW_PROJEKT_NOTEBINDER_PLAYHANGMAN_H diff --git a/src/main/c/Hangman/rules.c b/src/main/c/Hangman/rules.c deleted file mode 100644 index f7802bb..0000000 --- a/src/main/c/Hangman/rules.c +++ /dev/null @@ -1,7 +0,0 @@ -#include "rules.h" - -void printRules(){ - printf("Rules: \n"); - printf(" - You are allowed a maximum of 6 mistakes.\n"); - printf(" - All alphabet are in lower case.\n"); -} \ No newline at end of file diff --git a/src/main/c/Hangman/rules.h b/src/main/c/Hangman/rules.h deleted file mode 100644 index 35b01a1..0000000 --- a/src/main/c/Hangman/rules.h +++ /dev/null @@ -1,4 +0,0 @@ -#ifndef PMUW_PROJEKT_NOTEBINDER_RULES_H -#define PMUW_PROJEKT_NOTEBINDER_RULES_H -#include -#endif //PMUW_PROJEKT_NOTEBINDER_RULES_H diff --git a/src/main/c/main.c b/src/main/c/main.c index 90f28f1..2a8a9b3 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -2,7 +2,10 @@ #include #include -//#include "Template/game100.h" +#include "Hangman/playHangman.h" +#include "Hangman/word_selector.h" +#include "Hangman/drawHangman.h" +#include "Hangman/initializeHangman.h" int main(){ bool running = true; diff --git a/src/main/c/main.h b/src/main/c/main.h index 899f8f6..71870e0 100644 --- a/src/main/c/main.h +++ b/src/main/c/main.h @@ -1,7 +1,6 @@ #ifndef MAIN_H #define MAIN_H -#include "playHangman.h" -#include "playHangman.c" + int main(); #endif // MAIN_H \ No newline at end of file From 85bbb6ad66ad75f4fb0eb3d5700b3ef1b8787af4 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Tue, 6 Feb 2024 15:08:37 +0000 Subject: [PATCH 259/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 315a2aa..31faf5f 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -115,15 +115,22 @@ int multiplayer() { !feld(multi); - for (int i = 0; i <= 16; i++) { + int k = 1; - printf("Player 1, platziere deine Schiffe."); + do + { + + printf("Player 1, platziere deine Schiffe.\nKoordinate: "); scanf("%c%d", &letco, &numco); coor = convertcoor(letco, numco); ships1[coor] = 'X'; + !feld(ships1); + + k++; + } while (k < 17); return 0; } From 0ecc47c3e73540a4a1058e495786d53956ed5757 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Tue, 6 Feb 2024 15:12:14 +0000 Subject: [PATCH 260/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 31faf5f..39f5a59 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -115,7 +115,7 @@ int multiplayer() { !feld(multi); - int k = 1; + int k1 = 1; do { @@ -128,9 +128,27 @@ int multiplayer() { ships1[coor] = 'X'; !feld(ships1); - k++; + k1++; - } while (k < 17); + } while (k1 < 17); + + + int k2 = 1; + + do + { + + printf("Player 2, platziere deine Schiffe.\nKoordinate: "); + scanf("%c%d", &letco, &numco); + + coor = convertcoor(letco, numco); + + ships1[50] = 'X'; + !feld(ships1); + + k2++; + + } while (k2 < 17); return 0; } From 20874e564f0ac3527854e096941125ade4edaad0 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Tue, 6 Feb 2024 17:27:16 +0100 Subject: [PATCH 261/375] solving errors --- .idea/inspectionProfiles/Project_Default.xml | 6 ++++++ cmake-build-debug/.ninja_deps | Bin 20184 -> 23432 bytes cmake-build-debug/.ninja_log | 9 +++++++++ .../src/main/c/main.c.o | Bin 3816 -> 4096 bytes .../Testing/Temporary/LastTest.log | 4 ++-- src/main/c/Hangman/playHangman.h | 2 ++ src/main/c/main.c | 2 +- 7 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 .idea/inspectionProfiles/Project_Default.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..e0035c9 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index 3bcb602487d3be52859d5953ed7adbacb6584329..e5a48ee2c18db5215f32cc146adc2401781b52b8 100644 GIT binary patch delta 198 zcmcaHm$73zp3Mx{9Ov4^IC+gX2YbU45P#$5`Lec*lYjX5 zfCcyUom)2tNsxa5P&ZIBLxYP$$Z8}B=|G@h91v#$@f4^c&&yF}Kado`?N;6s0h9pS d%|8LESiF+q>7pR0{S*8=;EH8FaRDX3iUDqUM3(>n delta 9 QcmeC!&Uj-kNrrM0)c{paRVfZ-843! zmP$rZK$W0ScU`GMRJ5X~6{>`Q7YYaoo~Q(UN4)egJRlH4Y9E=oTQ?yRquZVR=9}G_ z{h3?qd#nGB-j`@;>sB3yr-A^P&ZoPhJ>mn8ho8ADYWGR5ZMPXY zqMY><9F`AjrM`2@dQq+Thw0I0LI5FoPTOriq$2NE9;fB6TFHK$dwyND+D*AbFGVdi z`+jA8$&x4ZefH2M^E>i}Ub3f^^|EsQOggOO+)>tkWjz=GU^u=bkFi2J<@3x@mCO>d zu7u@}Y$W6l1H=(eL;${)+}Nu5KhoxV}8;$*gBf)?MEA)5XGVs=*m^TOZ!}Y!T(Iq7wn4i@|c8R-~7jLuVBCQ48PIbq+qw?C7)xY1iLN2_c`sf zV4$AEdME}y2j`7o(=i;*bcIcz!ObP^_6hJ)c0$oWJJIUfskb`VTYBfsU4#PXu@4L@ zzhRGRjiR=-2zdhVK~&t}`LFi+w`$^zqsvE{mHB2%J}U+|Wx!;{O70+6@?U6wc#&Ytec7+Rbh1LFMedYh_xwByYgOkhV?|FY(y3n+d_n|x3c8v;-bse75h9Q1KAl*7wKXm@C3kvrVdY`a`zcux{+k!Zv=Hifc zNE^E=+cx2Xi=Vp7Lur%4W1Dbp6Q;$fUG7DhU9Ynj!>Rm+hYhpMQge%QwbpdCapY+I8LU!yI(%5|=USHj)xy{abgXLX&kv#fpZeB~3MHlugLb z`Y%L+V4%S^915i`$wP%a_|V!Xp${!6)Cb=qg%W&_^+8h#1;Lk|b7wA1TRbrLJKy=v z%$%J$JJ<7#*00LxTM-Csz}9#xvUvPZwkH0GTI4q30PTynd(xrsrPkrT!lKxMO1zbN zW#(Kl(ucTDlv>a8bh5fpA32(@c>o@MEqYSVq>dC!#$kLcN~yfk(MuZO67H}{>2FMQ zn~DD6;uY&q>ZkvNGx*RdrPfUJJCnQ@eOdD7O#yimU5f#51!bI)1%Jh;PmK!n!`XUC z&EcxdCypfmQWW_#2{4b!ZWlJbYjYNvAvP$!R^~Ux7DbT#D?ovE&)|Z3NBn^I)H?p`WLlzoz}hU6`{M`Vea!%FT%<&r ztDeLcPFIpI$a;^cNV>9yJ0hJOO|G0aXDdG-#Xd=&7O=kHtWB<5z^RB|NV#&!WN9Vs z%DevxG`sRa82F9nW?Z?7zeIdH>&kWfJ>s9qx$@=zwvu3a41lW><34{QBlL}0i&wWY zi?ZT&)2eK5YpLGNlE;Yvs*OO|YUhtPqwNB}cen53*5W~}6d30T&^O5bx!G^8sVu-= z@_T6n`x18GmRJEli!Hy&YjP%UVR~w(3DvMIzQ044Od00yL7uTEgf^E zMEpWUS&rc_j?xPQcL2<(c}(I1EirpPi_W5 Date: Tue, 6 Feb 2024 21:14:02 +0100 Subject: [PATCH 262/375] test drawHangman --- src/main/c/Hangman/Test/test_drawHangman.c | 21 ------------------- test/Hangman/test_drawHangman.c | 12 +++++++++++ .../Test => test/Hangman}/test_drawHangman.h | 0 .../Test => test/Hangman}/test_playHangman.c | 1 - 4 files changed, 12 insertions(+), 22 deletions(-) delete mode 100644 src/main/c/Hangman/Test/test_drawHangman.c create mode 100644 test/Hangman/test_drawHangman.c rename {src/main/c/Hangman/Test => test/Hangman}/test_drawHangman.h (100%) rename {src/main/c/Hangman/Test => test/Hangman}/test_playHangman.c (99%) diff --git a/src/main/c/Hangman/Test/test_drawHangman.c b/src/main/c/Hangman/Test/test_drawHangman.c deleted file mode 100644 index c22e956..0000000 --- a/src/main/c/Hangman/Test/test_drawHangman.c +++ /dev/null @@ -1,21 +0,0 @@ -#include "test_drawHangman.h" -void test_drawHangman(int mistakes){ - switch (mistakes) { - case 0: - drawHangman(0); - case 1: - drawHangman(1); - case 2: - drawHangman(2); - case 3: - drawHangman(3); - case 4: - drawHangman(4); - case 5: - drawHangman(5); - case 6: - drawHangman(6); - case 10: // More than 6 mistakes - drawHangman(10); - } -} \ No newline at end of file diff --git a/test/Hangman/test_drawHangman.c b/test/Hangman/test_drawHangman.c new file mode 100644 index 0000000..6eb9faf --- /dev/null +++ b/test/Hangman/test_drawHangman.c @@ -0,0 +1,12 @@ +#include +#include +#include "drawHangman.h" +#include "playHangman.h" + +void test_drawHangman() { + // Test each case of incorrectGuesses + printf("Testing drawHangman(0):\n"); + drawHangman(0); + printf("\n"); + +} \ No newline at end of file diff --git a/src/main/c/Hangman/Test/test_drawHangman.h b/test/Hangman/test_drawHangman.h similarity index 100% rename from src/main/c/Hangman/Test/test_drawHangman.h rename to test/Hangman/test_drawHangman.h diff --git a/src/main/c/Hangman/Test/test_playHangman.c b/test/Hangman/test_playHangman.c similarity index 99% rename from src/main/c/Hangman/Test/test_playHangman.c rename to test/Hangman/test_playHangman.c index 482eb2c..2b4c51b 100644 --- a/src/main/c/Hangman/Test/test_playHangman.c +++ b/test/Hangman/test_playHangman.c @@ -2,7 +2,6 @@ #include #include - // Custom assert function to compare expected and actual values void assert_equal(const char *test_name, const char *expected, const char *actual) { if (strcmp(expected, actual) == 0) { From e4b7b0dbfd8a5ab3eaada626aabd91ddbff9ebf5 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Tue, 6 Feb 2024 21:15:51 +0100 Subject: [PATCH 263/375] test drawHangman (more test cases) --- test/Hangman/test_drawHangman.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/Hangman/test_drawHangman.c b/test/Hangman/test_drawHangman.c index 6eb9faf..debca49 100644 --- a/test/Hangman/test_drawHangman.c +++ b/test/Hangman/test_drawHangman.c @@ -9,4 +9,32 @@ void test_drawHangman() { drawHangman(0); printf("\n"); + printf("Testing drawHangman(1):\n"); + drawHangman(1); + printf("\n"); + + printf("Testing drawHangman(2):\n"); + drawHangman(2); + printf("\n"); + + printf("Testing drawHangman(3):\n"); + drawHangman(3); + printf("\n"); + + printf("Testing drawHangman(4):\n"); + drawHangman(4); + printf("\n"); + + printf("Testing drawHangman(5):\n"); + drawHangman(5); + printf("\n"); + + printf("Testing drawHangman(6):\n"); + drawHangman(6); + printf("\n"); + + printf("Testing drawHangman(7):\n"); + drawHangman(7); + printf("\n"); + } \ No newline at end of file From 8e35c626367c14b970f02758dc941851ef019cd5 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Tue, 6 Feb 2024 21:23:24 +0100 Subject: [PATCH 264/375] bug with single-letter-check fixed --- cmake-build-debug/.ninja_deps | Bin 23432 -> 23832 bytes cmake-build-debug/.ninja_log | 2 ++ .../Testing/Temporary/LastTest.log | 4 ++-- src/main/c/Hangman/playHangman.c | 8 -------- 4 files changed, 4 insertions(+), 10 deletions(-) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index e5a48ee2c18db5215f32cc146adc2401781b52b8..44b6d3eeed46916022fe71a6a5182d84f5b4b66a 100644 GIT binary patch delta 29 lcmeC!&NyQi Date: Tue, 6 Feb 2024 21:39:32 +0100 Subject: [PATCH 265/375] rules explained --- cmake-build-debug/.ninja_deps | Bin 23832 -> 24452 bytes cmake-build-debug/.ninja_log | 3 +++ src/main/c/Hangman/initializeHangman.c | 12 +++++++++++- src/main/c/Hangman/playHangman.c | 2 +- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index 44b6d3eeed46916022fe71a6a5182d84f5b4b66a..d9e775224281dcb27378e91d3186bd0701636184 100644 GIT binary patch delta 44 zcmbQSi?L-t;|7V?$u^E0Y~^lRL9-GjdpVxt>tSSQNMm4N@R?-+6xtl;+QbL|Sz`{q delta 9 QcmZqK&p2Zj;|7UX02F@%y#N3J diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index a7916c1..db26d5f 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -35,3 +35,6 @@ 45 72 1707236593357601081 pmuw_projekt_notebinder a5668107eb06d295 0 44 1707250874478682419 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 44 70 1707250874504270369 pmuw_projekt_notebinder a5668107eb06d295 +1 192 1707251949669860983 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o 7d64de4520ec9e97 +1 193 1707251949670799948 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 +193 280 1707251949757039868 pmuw_projekt_notebinder a5668107eb06d295 diff --git a/src/main/c/Hangman/initializeHangman.c b/src/main/c/Hangman/initializeHangman.c index 9ea56a2..011799a 100644 --- a/src/main/c/Hangman/initializeHangman.c +++ b/src/main/c/Hangman/initializeHangman.c @@ -13,6 +13,16 @@ void initializeHangman(char *wordToGuess, char *currentGuess) { } void printRules(){ - printf("Rules: \n"); + printf("Welcome to hangman game!\n"); + printf("How to play: \n"); + printf(" - A word be randomly selected from the list of words.\n"); + printf(" - A series of dashes will be displayed, each representing a letter in the secret word.\n"); + printf(" - You are allowed a maximum of 6 mistakes.\n"); + printf(" - You will start guessing letters one at a time.\n"); + printf(" - Each guess should be a single letter of the alphabet, either uppercase or lowercase.\n"); + printf(" - After each guess, the computer will check if the letter you guessed is in the secret word.\n"); + printf(" - If the guessed letter is in the word, the computer will reveal all occurrences of that letter in the word.\n"); + printf(" - If the guessed letter is not in the word, the computer will count the incorrect guesses.\n"); + printf(" - Wrong guesses are represented by drawing parts of a hangman figure.\n"); printf(" - You are allowed a maximum of 6 mistakes.\n"); } \ No newline at end of file diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 9923dab..7ee3ee3 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -36,6 +36,7 @@ char getSingleCharInput() { return '\0'; // More than one character entered } } + void playHangman(char *wordToGuess) { int mistakes = 0; char guessedLetters[30]; //Guessed letters @@ -69,7 +70,6 @@ void playHangman(char *wordToGuess) { continue; } - // Check if the letter has already been guessed by the player if (strchr(guessedLetters, guess) != NULL) { printf("You already guessed that letter. Try another letter.\n"); From ca77bb5af24735f9c82c7b5164a222e838bfcee0 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Tue, 6 Feb 2024 21:57:29 +0100 Subject: [PATCH 266/375] display rules before playing --- cmake-build-debug/.ninja_deps | Bin 24452 -> 26052 bytes cmake-build-debug/.ninja_log | 8 ++++++++ .../Testing/Temporary/LastTest.log | 4 ++-- src/main/c/Hangman/playHangman.c | 14 +++++++++++++- 4 files changed, 23 insertions(+), 3 deletions(-) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index d9e775224281dcb27378e91d3186bd0701636184..a2c5a66c5fefa43a1efcacca25b7d40b1ab878c1 100644 GIT binary patch delta 89 zcmZqK&v@iC Date: Tue, 6 Feb 2024 22:10:03 +0100 Subject: [PATCH 267/375] display rules - separate function --- cmake-build-debug/.ninja_deps | Bin 26052 -> 29296 bytes cmake-build-debug/.ninja_log | 16 ++++++++++++++++ .../Testing/Temporary/LastTest.log | 4 ++-- src/main/c/Hangman/initializeHangman.c | 15 +++++++++++++++ src/main/c/Hangman/playHangman.c | 13 +------------ src/main/c/Hangman/playHangman.h | 2 +- 6 files changed, 35 insertions(+), 15 deletions(-) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index a2c5a66c5fefa43a1efcacca25b7d40b1ab878c1..87365018838c3994db427ae371f53e3b27a8e2d8 100644 GIT binary patch delta 156 zcmX?dn(@OE#tlbOd3zWc8qydT7_R?}a@ewYVth9v>oT36w{}CAH;(ddKM7 Date: Tue, 6 Feb 2024 22:11:20 +0100 Subject: [PATCH 268/375] displayRules: bug of 3rd condition fixed --- src/main/c/Hangman/initializeHangman.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/c/Hangman/initializeHangman.c b/src/main/c/Hangman/initializeHangman.c index 4dc25e6..0259565 100644 --- a/src/main/c/Hangman/initializeHangman.c +++ b/src/main/c/Hangman/initializeHangman.c @@ -39,5 +39,6 @@ void displayRules(){ printf("Let's get started!\n"); } else { printf("Please enter either 1 or 2 to continue: \n"); + displayRules(); } } \ No newline at end of file From ef32769e1c3f0824ee470e01f17b490461961788 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Tue, 6 Feb 2024 21:35:10 +0000 Subject: [PATCH 269/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 42 +++++++++++++++++++++++---- 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 39f5a59..5c7aca1 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -1,4 +1,6 @@ #include +#include + int feld(char prifield[]) { @@ -6,11 +8,11 @@ int feld(char prifield[]) { int numcoor[10]; char letcoor[10] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J' }; - printf("--"); + printf(" "); for (int k = 0; k <= 9; k++) { numcoor[k] = k + 1; - printf("%d", numcoor[k]); + printf(" %d ", numcoor[k]); } printf("\n"); @@ -21,7 +23,7 @@ int feld(char prifield[]) { printf("%c-", letcoor[i]); for (int j = 0; j <= 9; j++) { - printf("%c", prifield[a]); + printf("[%c]", prifield[a]); a++; } @@ -82,6 +84,7 @@ int multiplayer() { char letco; int numco, coor; + int score1, score2; for (int i = 0; i <= 99; i++) { @@ -121,7 +124,7 @@ int multiplayer() { { printf("Player 1, platziere deine Schiffe.\nKoordinate: "); - scanf("%c%d", &letco, &numco); + scanf(" %c%d", &letco, &numco); coor = convertcoor(letco, numco); @@ -139,17 +142,44 @@ int multiplayer() { { printf("Player 2, platziere deine Schiffe.\nKoordinate: "); - scanf("%c%d", &letco, &numco); + scanf(" %c%d", &letco, &numco); coor = convertcoor(letco, numco); - ships1[50] = 'X'; + ships1[coor] = 'X'; !feld(ships1); k2++; } while (k2 < 17); + printf("\n\n\n"); + + + !feld(player1); + + while (score1<16 !! score2 < 16) { + + !feld(player1); + printf("Gib eine Zielkoordinate ein: "); + scanf(" %c%d", &letco, &numco); + + coor = convertcoor(letco, numco); + + if (player1[coor] == ships2[coor]) { + player1[coor] = 'X'; + score1 += 1; + printf("Treffer!!\n"); + } + else { + player[coor] = '-' + printf("Kein Treffer.\n") + } + !feld(player1); + + + } + return 0; } From c890fe4b2f5f6b9be58ddbb6768270d6e2d71ebc Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Tue, 6 Feb 2024 23:02:58 +0000 Subject: [PATCH 270/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 34 +++++++++++++++++---------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 5c7aca1..cbb2f92 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -76,7 +76,6 @@ int singleplayer() { int multiplayer() { - char multi[100]; char player1[100]; char player2[100]; char ships1[100]; @@ -84,13 +83,9 @@ int multiplayer() { char letco; int numco, coor; - int score1, score2; + int score1 = 0; + int score2 = 0; - for (int i = 0; i <= 99; i++) { - - multi[i] = '0'; - - } for (int i = 0; i <= 99; i++) { @@ -156,17 +151,15 @@ int multiplayer() { printf("\n\n\n"); - !feld(player1); - - while (score1<16 !! score2 < 16) { + while (score1 || score2 < 16) { !feld(player1); - printf("Gib eine Zielkoordinate ein: "); + printf("Player 1, gib eine Zielkoordinate ein: "); scanf(" %c%d", &letco, &numco); coor = convertcoor(letco, numco); - if (player1[coor] == ships2[coor]) { + if (ships2[coor] = 'X') { player1[coor] = 'X'; score1 += 1; printf("Treffer!!\n"); @@ -175,7 +168,22 @@ int multiplayer() { player[coor] = '-' printf("Kein Treffer.\n") } - !feld(player1); + + !feld(player2); + printf("Player 2, gib eine Zielkoordinate ein: "); + scanf(" %c%d", &letco, &numco); + + coor = convertcoor(letco, numco); + + if (ships1[coor] == 'X') { + player2[coor] = 'X'; + score2 += 1; + printf("Treffer!!\n"); + } + else { + player2[coor] = '-'; + printf("Kein Treffer.\n"); + } } From f9ef7e6313214bdf86a0a19bf15be84e1c4ceccb Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Tue, 6 Feb 2024 23:54:46 +0000 Subject: [PATCH 271/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 39 ++++++++++++++++++--------- 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index cbb2f92..874c927 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -82,7 +82,7 @@ int multiplayer() { char ships2[100]; char letco; - int numco, coor; + int numco, coor, coor1, coor2; int score1 = 0; int score2 = 0; @@ -113,22 +113,37 @@ int multiplayer() { !feld(multi); - int k1 = 1; - do - { - - printf("Player 1, platziere deine Schiffe.\nKoordinate: "); + printf("Player 1, platziere dein Schlachtschiff (5).\nKoordinate: "); scanf(" %c%d", &letco, &numco); - coor = convertcoor(letco, numco); - - ships1[coor] = 'X'; - !feld(ships1); + coor1 = convertcoor(letco, numco); + + ships1[coor1] = 'X'; + for (int i = 0; i < 4; i++) { + !feld(ships1); + printf("\n"); + scanf(" %c%d", &letco, &numco); + + coor2 = convertcoor(letco, numco); + + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else { + printf("Ungueltige Eingabe.\n"); + i--; + } + + !feld(ships1); + } - k1++; - } while (k1 < 17); int k2 = 1; From ba3794673b610917f520dbbbedd0d3bcd2cb7a5d Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Tue, 6 Feb 2024 23:56:16 +0000 Subject: [PATCH 272/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 87 +++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 874c927..9338420 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -143,7 +143,94 @@ int multiplayer() { !feld(ships1); } + printf("Player 1, platziere deinen Kreuzer (4).\nKoordinate: "); + scanf(" %c%d", &letco, &numco); + + coor1 = convertcoor(letco, numco); + + ships1[coor1] = 'X'; + + for (int i = 0; i < 3; i++) { + !feld(ships1); + printf("\n"); + scanf(" %c%d", &letco, &numco); + + coor2 = convertcoor(letco, numco); + + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else { + printf("Ungueltige Eingabe.\n"); + i--; + } + + !feld(ships1); + } + + for (int i = 0; i < 2; i++) { + printf("Player 1, platziere deine Zerstoerer 2x(3).\nKoordinate: "); + scanf(" %c%d", &letco, &numco); + coor1 = convertcoor(letco, numco); + + ships1[coor1] = 'X'; + + for (int i = 0; i < 2; i++) { + !feld(ships1); + printf("\n"); + scanf(" %c%d", &letco, &numco); + + coor2 = convertcoor(letco, numco); + + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else { + printf("Ungueltige Eingabe.\n"); + i--; + } + + !feld(ships1); + } + } + + printf("Player 1, platziere dein U-Boot (2).\nKoordinate: "); + scanf(" %c%d", &letco, &numco); + + coor1 = convertcoor(letco, numco); + + ships1[coor1] = 'X'; + + !feld(ships1); + printf("\n"); + scanf(" %c%d", &letco, &numco); + + coor2 = convertcoor(letco, numco); + + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else { + printf("Ungueltige Eingabe.\n"); + } + + !feld(ships1); int k2 = 1; From 310c40a57a4629290ae930c9339389db160e2ee0 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 7 Feb 2024 01:03:03 +0100 Subject: [PATCH 273/375] getting input method changed --- cmake-build-debug/.ninja_deps | Bin 29296 -> 38316 bytes cmake-build-debug/.ninja_log | 80 +++++------------- .../Testing/Temporary/LastTest.log | 4 +- src/main/c/Hangman/playHangman.c | 12 +-- 4 files changed, 27 insertions(+), 69 deletions(-) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index 87365018838c3994db427ae371f53e3b27a8e2d8..c82727a0759cbdc3efa6fedcc3899dbce9cb51d4 100644 GIT binary patch delta 445 zcmezHgmKMkrVRx}yf+va8uA$!7}|Eo9V?r>u<-okfNTy{2XonbEt?zjx*1uylo&PU zf|+b@B$7QsQa8uBHZk(`Ffufx0rlCLta!8rO>FwnIE(FQV#2JNmS54tTf%m*wxb}j1$qs%&vB<*pDVw zX&Wo?22G58YveKEbW}J0sCfTI6HRPeCIeG6nwU=FwSRGFV&7-4jNF4J_U_}qBhS#p N)`lNp Date: Wed, 7 Feb 2024 00:04:18 +0000 Subject: [PATCH 274/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 124 ++++++++++++++++++++++++-- 1 file changed, 115 insertions(+), 9 deletions(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 9338420..e06207a 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -233,22 +233,128 @@ int multiplayer() { !feld(ships1); - int k2 = 1; + printf("\n\n\n"); - do - { + !feld(ships2); - printf("Player 2, platziere deine Schiffe.\nKoordinate: "); + printf("Player 2, platziere dein Schlachtschiff (5).\nKoordinate: "); scanf(" %c%d", &letco, &numco); - coor = convertcoor(letco, numco); + coor1 = convertcoor(letco, numco); - ships1[coor] = 'X'; - !feld(ships1); + ships2[coor1] = 'X'; + + for (int i = 0; i < 4; i++) { + !feld(ships2); + printf("\n"); + scanf(" %c%d", &letco, &numco); + + coor2 = convertcoor(letco, numco); + + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships2[coor2] = 'X'; + coor1 = coor2; + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships2[coor2] = 'X'; + coor1 = coor2; + } + else { + printf("Ungueltige Eingabe.\n"); + i--; + } + + !feld(ships2); + } + + printf("Player 2, platziere deinen Kreuzer (4).\nKoordinate: "); + scanf(" %c%d", &letco, &numco); + + coor1 = convertcoor(letco, numco); + + ships2[coor1] = 'X'; + + for (int i = 0; i < 3; i++) { + !feld(ships2); + printf("\n"); + scanf(" %c%d", &letco, &numco); + + coor2 = convertcoor(letco, numco); + + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships2[coor2] = 'X'; + coor1 = coor2; + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships2[coor2] = 'X'; + coor1 = coor2; + } + else { + printf("Ungueltige Eingabe.\n"); + i--; + } + + !feld(ships2); + } + + for (int i = 0; i < 2; i++) { + printf("Player 2, platziere deine Zerstoerer 2x(3).\nKoordinate: "); + scanf(" %c%d", &letco, &numco); + + coor1 = convertcoor(letco, numco); + + ships2[coor1] = 'X'; + + for (int i = 0; i < 2; i++) { + !feld(ships2); + printf("\n"); + scanf(" %c%d", &letco, &numco); + + coor2 = convertcoor(letco, numco); + + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships2[coor2] = 'X'; + coor1 = coor2; + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships2[coor2] = 'X'; + coor1 = coor2; + } + else { + printf("Ungueltige Eingabe.\n"); + i--; + } + + !feld(ships2); + } + } + + printf("Player 2, platziere dein U-Boot (2).\nKoordinate: "); + scanf(" %c%d", &letco, &numco); + + coor1 = convertcoor(letco, numco); + + ships2[coor1] = 'X'; + + !feld(ships2); + printf("\n"); + scanf(" %c%d", &letco, &numco); - k2++; + coor2 = convertcoor(letco, numco); + + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships2[coor2] = 'X'; + coor1 = coor2; + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships2[coor2] = 'X'; + coor1 = coor2; + } + else { + printf("Ungueltige Eingabe.\n"); + } - } while (k2 < 17); + !feld(ships2); printf("\n\n\n"); From 9cd6f1e3be02a70a3a457698c5d70fa3594a95f6 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 7 Feb 2024 01:06:26 +0100 Subject: [PATCH 275/375] refactoring + some bugs fixed --- src/main/c/Hangman/playHangman.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index bc6141e..86865f5 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -55,22 +55,32 @@ void playHangman(char *wordToGuess) { printf("Enter your guess: \n"); scanf("%s", input); - // Check if a valid character is entered - if (guess == '\0') { + // Check if the input is a single letter + if(strlen(input) > 1) { printf("Invalid input. Please enter a single letter.\n"); continue; } + // Check if the input is an alphabet + char guess = input[0]; + if (!isalpha(guess)) { + printf("Please enter a valid alphabet.\n"); + continue; + } + // Convert uppercase letter to lowercase guess = toLower(guess); - // Check if the guess is a letter (valid) - if (!isalpha(guess)) { - printf("Please enter a valid alphabet.\n"); - ignoreExtraInput(); + // Check if the letter has already been guessed by the player + if (strchr(guessedLetters, guess) != NULL) { + printf("You already guessed that letter. Try another letter.\n"); continue; } + // Add the guessed letter to the list + guessedLetters[strlen(guessedLetters)] = guess; + + // Check if the letter has already been guessed by the player if (strchr(guessedLetters, guess) != NULL) { printf("You already guessed that letter. Try another letter.\n"); From cdd703a1131a04721fa8d45e53d8e35852b5efb7 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 7 Feb 2024 01:12:22 +0100 Subject: [PATCH 276/375] make the code cleaner + debugging --- src/main/c/Hangman/playHangman.c | 48 ++++---------------------------- 1 file changed, 5 insertions(+), 43 deletions(-) diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 86865f5..dc64e50 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -9,37 +9,9 @@ char toLower(char ch) { return ch; } -// Ignores the inputs with more than one letter -void ignoreExtraInput() { - int c; - while ((c = getchar()) != '\n' && c != EOF); -} - -// Function to get a single character input from the user -char getSingleCharInput() { - char input[3]; // Buffer for input (including null terminator and newline character) - - // Read a line of input (up to 2 characters) and consume the rest - if (fgets(input, sizeof(input), stdin) == NULL) { - return '\0'; // Error or end of file - } - - // Check if the last character is a newline, if not, consume the rest of the line - if (input[strlen(input) - 1] != '\n') { - ignoreExtraInput(); - } - - // Check if only one character is entered - if (strlen(input) == 2 && input[1] == '\n') { - return input[0]; - } else { - return '\0'; // More than one character entered - } -} - void playHangman(char *wordToGuess) { int mistakes = 0; - char guessedLetters[30]; //Guessed letters + char guessedLetters[30] = ""; //Guessed letters char currentGuess[50]; //Current state of the guessed word displayRules(); @@ -55,13 +27,11 @@ void playHangman(char *wordToGuess) { printf("Enter your guess: \n"); scanf("%s", input); - // Check if the input is a single letter if(strlen(input) > 1) { printf("Invalid input. Please enter a single letter.\n"); continue; } - // Check if the input is an alphabet char guess = input[0]; if (!isalpha(guess)) { printf("Please enter a valid alphabet.\n"); @@ -80,17 +50,6 @@ void playHangman(char *wordToGuess) { // Add the guessed letter to the list guessedLetters[strlen(guessedLetters)] = guess; - - // Check if the letter has already been guessed by the player - if (strchr(guessedLetters, guess) != NULL) { - printf("You already guessed that letter. Try another letter.\n"); - ignoreExtraInput(); - continue; - } - - // Add the guessed letter to the list - guessedLetters[strlen(guessedLetters)] = guess; - // Check if the guessed letter is in the word int found = 0; for (int i = 0; i < strlen(wordToGuess); ++i) { @@ -125,6 +84,9 @@ void playHangman(char *wordToGuess) { if (mistakes == MAX_MISTAKES) { currentState(currentGuess, mistakes); printf("Oops! You have no more guesses :( \n The answer was: %s \n", wordToGuess); + break; } + + currentState(currentGuess, mistakes); } -} +} \ No newline at end of file From efcde861fccf859dae5ee41d18d05f7ff38026c9 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Wed, 7 Feb 2024 00:14:07 +0000 Subject: [PATCH 277/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index e06207a..9be5bec 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -396,6 +396,13 @@ int multiplayer() { } + if (score1 = 16) { + printf("Player 1 hat gewonnen."); + } + if (score1 = 16) { + printf("Player 1 hat gewonnen."); + } + return 0; } @@ -404,7 +411,7 @@ int main() { int player; - printf("*Battleship*\n\n Single player: press <1>\n Multiplayer: press <2>\n"); + printf("*Schiffeversenken*\n\n Single player: Drück <1>\n Multiplayer: Drück <2>\n"); scanf("%d", &player); if (player == 1) { From 6d89e784aea3192bae6ffa2d9dc09bf2712ea287 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 7 Feb 2024 01:39:44 +0100 Subject: [PATCH 278/375] test displayRules --- cmake-build-debug/.ninja_deps | Bin 38316 -> 38716 bytes cmake-build-debug/.ninja_log | 2 ++ .../Testing/Temporary/LastTest.log | 4 +-- test/Hangman/test_playHangman.c | 31 ++++++++++-------- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index c82727a0759cbdc3efa6fedcc3899dbce9cb51d4..ad32c4ec4524529a6b8eeae7125ce3d329ed0701 100644 GIT binary patch delta 25 hcmZ3pnrY8ErVVSRPQFvZ!6qV~aqUXZ<~Y|TMgW^*3o-xz delta 9 Rcmdn9j%m$mrVVSR0st3>1h)VH diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index e2bb7e3..1ced4ca 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -20,3 +20,5 @@ 41 68 1707259974621052571 pmuw_projekt_notebinder a5668107eb06d295 0 41 1707260143202490285 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 41 66 1707260143227530868 pmuw_projekt_notebinder a5668107eb06d295 +2 209 1707265395136143124 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 +209 296 1707265395223868349 pmuw_projekt_notebinder a5668107eb06d295 diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index 47dd361..e5ab0e9 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Feb 06 23:55 CET +Start testing: Feb 07 01:39 CET ---------------------------------------------------------- -End testing: Feb 06 23:55 CET +End testing: Feb 07 01:39 CET diff --git a/test/Hangman/test_playHangman.c b/test/Hangman/test_playHangman.c index 2b4c51b..7e01f23 100644 --- a/test/Hangman/test_playHangman.c +++ b/test/Hangman/test_playHangman.c @@ -1,18 +1,21 @@ -#include "playHangman.c" -#include #include +#include "playHangman.h" -// Custom assert function to compare expected and actual values -void assert_equal(const char *test_name, const char *expected, const char *actual) { - if (strcmp(expected, actual) == 0) { - printf("[PASS] %s\n", test_name); - } else { - printf("[FAIL] %s - Expected: \"%s\", Actual: \"%s\"\n", test_name, expected, actual); - } -} -// Test function for playHangman() -void test_playHangman() { - char wordToGuess[] = "test"; - //playHangman(wordToGuess); +void test_displayRules() { + // Simulate user input: 1, 2, and an invalid input + printf("Test Case 1: User enters '1' (YES)\n"); + printf("Expected Output: \"Let's get started!\"\n"); + printf("Actual Output: "); + displayRules(); // Call displayRules() with input 1 + + printf("\nTest Case 2: User enters '2' (NO)\n"); + printf("Expected Output: Output of printRules()\n"); + printf("Actual Output: "); + displayRules(); // Call displayRules() with input 2 + + printf("\nTest Case 3: User enters an invalid input\n"); + printf("Expected Output: \"Please enter either 1 or 2 to continue:\"\n"); + printf("Actual Output: "); + displayRules(); // Call displayRules() with invalid input } \ No newline at end of file From 0ba06ef885ada58077bd8e22a9b36676252d09e0 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 7 Feb 2024 01:43:57 +0100 Subject: [PATCH 279/375] test toLower --- .../Testing/Temporary/LastTest.log | 4 ++-- test/Hangman/test_playHangman.c | 24 ++++++++++++++++++- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index e5ab0e9..d4630a9 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Feb 07 01:39 CET +Start testing: Feb 07 01:43 CET ---------------------------------------------------------- -End testing: Feb 07 01:39 CET +End testing: Feb 07 01:43 CET diff --git a/test/Hangman/test_playHangman.c b/test/Hangman/test_playHangman.c index 7e01f23..cfc47b0 100644 --- a/test/Hangman/test_playHangman.c +++ b/test/Hangman/test_playHangman.c @@ -1,5 +1,7 @@ #include -#include "playHangman.h" +#include "playHangman.c" +#include + void test_displayRules() { @@ -18,4 +20,24 @@ void test_displayRules() { printf("Expected Output: \"Please enter either 1 or 2 to continue:\"\n"); printf("Actual Output: "); displayRules(); // Call displayRules() with invalid input +} + +void test_toLower() { + printf("Test Case 1: Lowercase letter 'a'\n"); + printf("Expected Output: 'a'\n"); + char result = toLower('a'); + printf("Actual Output: '%c'\n", result); + assert(result == 'a'); + + printf("\nTest Case 2: Uppercase letter 'B'\n"); + printf("Expected Output: 'b'\n"); + result = toLower('B'); + printf("Actual Output: '%c'\n", result); + assert(result == 'b'); + + printf("\nTest Case 3: Non-alphabetic character '#'\n"); + printf("Expected Output: '#'\n"); + result = toLower('?'); + printf("Actual Output: '%c'\n", result); + assert(result == '?'); } \ No newline at end of file From 994e9f666b70e5662891004fbd345a264351cc62 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 7 Feb 2024 01:47:31 +0100 Subject: [PATCH 280/375] test initializeHangman --- test/Hangman/test_playHangman.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/Hangman/test_playHangman.c b/test/Hangman/test_playHangman.c index cfc47b0..3f7ba5a 100644 --- a/test/Hangman/test_playHangman.c +++ b/test/Hangman/test_playHangman.c @@ -40,4 +40,12 @@ void test_toLower() { result = toLower('?'); printf("Actual Output: '%c'\n", result); assert(result == '?'); +} + +void test_initializeHangman() { + char wordToGuess[] = "hangman"; + char currentGuess[8]; + initializeHangman(wordToGuess, currentGuess); + assert(strcmp(currentGuess, "_______") == 0); + printf("initializeHangman test passed!\n"); } \ No newline at end of file From 6e079cedfa5cdcfbd01fa99bcee9cd21faf2a0c4 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 7 Feb 2024 01:52:18 +0100 Subject: [PATCH 281/375] new test case for word with space --- cmake-build-debug/.ninja_deps | Bin 38716 -> 39088 bytes cmake-build-debug/.ninja_log | 2 ++ .../Testing/Temporary/LastTest.log | 4 ++-- src/main/c/Hangman/word_selector.c | 2 +- test/Hangman/test_playHangman.c | 17 +++++++++++------ 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index ad32c4ec4524529a6b8eeae7125ce3d329ed0701..9978f2d783bcd1807b0d667abcbd5b1b9be116d4 100644 GIT binary patch delta 40 vcmdn9j%mY2rVTdJMGF`i8Uh#?7^Xho{nR^eqj(^Y9kh9&tU2T42Pzr>H75>H delta 9 Qcmdn6k!jC5rVTdJ0T#prQvd(} diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index 1ced4ca..5e1153a 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -22,3 +22,5 @@ 41 66 1707260143227530868 pmuw_projekt_notebinder a5668107eb06d295 2 209 1707265395136143124 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 209 296 1707265395223868349 pmuw_projekt_notebinder a5668107eb06d295 +0 192 1707267006006028181 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 +192 278 1707267006091837249 pmuw_projekt_notebinder a5668107eb06d295 diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index d4630a9..cf33378 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Feb 07 01:43 CET +Start testing: Feb 07 01:50 CET ---------------------------------------------------------- -End testing: Feb 07 01:43 CET +End testing: Feb 07 01:50 CET diff --git a/src/main/c/Hangman/word_selector.c b/src/main/c/Hangman/word_selector.c index 157fb93..5b2b914 100644 --- a/src/main/c/Hangman/word_selector.c +++ b/src/main/c/Hangman/word_selector.c @@ -14,7 +14,7 @@ const char wordsList[NUM_WORDS][MAX_WORD_LENGTH + 1] = { "year", "dealer", "patience", - "initiative", + "table tennis", "pollution", "awareness", "problem", diff --git a/test/Hangman/test_playHangman.c b/test/Hangman/test_playHangman.c index 3f7ba5a..94e9743 100644 --- a/test/Hangman/test_playHangman.c +++ b/test/Hangman/test_playHangman.c @@ -2,8 +2,6 @@ #include "playHangman.c" #include - - void test_displayRules() { // Simulate user input: 1, 2, and an invalid input printf("Test Case 1: User enters '1' (YES)\n"); @@ -43,9 +41,16 @@ void test_toLower() { } void test_initializeHangman() { - char wordToGuess[] = "hangman"; - char currentGuess[8]; - initializeHangman(wordToGuess, currentGuess); - assert(strcmp(currentGuess, "_______") == 0); + // Test case 1: Word with alphabets only + char wordToGuess1[] = "hangman"; + char currentGuess1[8]; // Make sure this size is enough to accommodate the wordToGuess and the null terminator + initializeHangman(wordToGuess1, currentGuess1); + assert(strcmp(currentGuess1, "_______") == 0); + + // Test case 2: Word with spaces (e.g: table tennis) + char wordToGuess2[] = "hello world"; + char currentGuess2[12]; // Make sure this size is enough to accommodate the wordToGuess and the null terminator + initializeHangman(wordToGuess2, currentGuess2); + assert(strcmp(currentGuess2, "_____ _____") == 0); printf("initializeHangman test passed!\n"); } \ No newline at end of file From 298f84f7be401b44fc7a27583ecec0c85f518c71 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Wed, 7 Feb 2024 02:06:35 +0100 Subject: [PATCH 282/375] End message changed --- cmake-build-debug/.ninja_deps | Bin 39088 -> 40056 bytes cmake-build-debug/.ninja_log | 6 ++++++ .../src/main/c/Hangman/word_selector.c.o | Bin 3072 -> 3072 bytes .../Testing/Temporary/LastTest.log | 4 ++-- src/main/c/Hangman/drawHangman.c | 13 +++++-------- src/main/c/Hangman/playHangman.c | 13 +++++-------- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps index 9978f2d783bcd1807b0d667abcbd5b1b9be116d4..ef1dc81ee98d1ae0e73e1fa750426d1b0c3f2617 100644 GIT binary patch delta 64 zcmdn6k?F?{rVSfr@bxewLuHF}h@cEW7Ff_yh Q)tu+&pQ4#R`Jde^03wJN`Tzg` delta 9 RcmeydgK5J?rVSfr000^^1r7iJ diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log index 5e1153a..8480529 100644 --- a/cmake-build-debug/.ninja_log +++ b/cmake-build-debug/.ninja_log @@ -24,3 +24,9 @@ 209 296 1707265395223868349 pmuw_projekt_notebinder a5668107eb06d295 0 192 1707267006006028181 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 192 278 1707267006091837249 pmuw_projekt_notebinder a5668107eb06d295 +1 203 1707267786560704417 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 +204 289 1707267786646774332 pmuw_projekt_notebinder a5668107eb06d295 +1 37 1707267864900519056 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 +38 63 1707267864925012751 pmuw_projekt_notebinder a5668107eb06d295 +1 29 1707267958118485967 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 +29 55 1707267958144023054 pmuw_projekt_notebinder a5668107eb06d295 diff --git a/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o b/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o index a81ae5130f1cae010503c93b8dbee5158b1c90e5..32246661cc6bb4bf24faf5444d652756aa46bb6a 100644 GIT binary patch delta 25 gcmZpWXpq>jmzAd^F)1fip(HggFSB^_Nmg?<0C&;}CIA2c delta 25 gcmZpWXpq>jmz5_oFS8^wu_UuBm4RXNNmg?<0CtxMqW}N^ diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log index cf33378..4fa8644 100644 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ b/cmake-build-debug/Testing/Temporary/LastTest.log @@ -1,3 +1,3 @@ -Start testing: Feb 07 01:50 CET +Start testing: Feb 07 02:05 CET ---------------------------------------------------------- -End testing: Feb 07 01:50 CET +End testing: Feb 07 02:05 CET diff --git a/src/main/c/Hangman/drawHangman.c b/src/main/c/Hangman/drawHangman.c index 12b074a..5ccf2e7 100644 --- a/src/main/c/Hangman/drawHangman.c +++ b/src/main/c/Hangman/drawHangman.c @@ -74,14 +74,11 @@ void drawHangman(int incorrectGuesses) { if (incorrectGuesses >= 6) { printf("\n" - " _____ ____ \n" - " / ____| / __ \\ \n" - " | | __ __ _ _ __ ___ ___ | | | |_ _____ _ __ \n" - " | | |_ |/ _` | '_ ` _ \\ / _ \\ | | | \\ \\ / / _ \\ '__| \n" - " | |__| | (_| | | | | | | __/ | |__| |\\ V / __/ | \n" - " \\_____|\\__,_|_| |_| |_|\\___| \\____/ \\_/ \\___|_| \n" - " \n" - " \n"); + " ___ ___ _ \n" + " / __|__ _ _ __ ___ / _ \\__ _____ _ _| |\n" + " | (_ / _` | ' \\/ -_) | (_) \\ V / -_) '_|_|\n" + " \\___\\__,_|_|_|_\\___| \\___/ \\_/\\___|_| (_)\n" + " \n"); } } diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index dc64e50..93d9998 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -69,14 +69,11 @@ void playHangman(char *wordToGuess) { currentState(currentGuess, mistakes); printf("Bravo! You guessed the word: %s \n", wordToGuess); printf("\n" - " __ __ _ _ _ _ \n" - " \\ \\ / / | | | | (_) | |\n" - " \\ \\_/ /__ _ _ __ _ _ __ ___ | |_| |__ ___ __ ___ _ __ _ __ ___ _ __| |\n" - " \\ / _ \\| | | | / _` | '__/ _ \\ | __| '_ \\ / _ \\ \\ \\ /\\ / / | '_ \\| '_ \\ / _ \\ '__| |\n" - " | | (_) | |_| | | (_| | | | __/ | |_| | | | __/ \\ V V /| | | | | | | | __/ | |_|\n" - " |_|\\___/ \\__,_| \\__,_|_| \\___| \\__|_| |_|\\___| \\_/\\_/ |_|_| |_|_| |_|\\___|_| (_)\n" - " \n" - " "); + " __ __ __ __ _ \n" + " \\ \\ / /__ _ _ \\ \\ / /__ _ _ | |\n" + " \\ V / _ \\ || | \\ \\/\\/ / _ \\ ' \\|_|\n" + " |_|\\___/\\_,_| \\_/\\_/\\___/_||_(_)\n" + " \n"); break; } From 3073c64b17eaf395b2604f73e3c5aa3ffb754482 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Wed, 7 Feb 2024 02:16:34 +0000 Subject: [PATCH 283/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 29 ++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 9be5bec..cb7514c 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -69,7 +69,34 @@ int convertcoor(char a, int b) { int singleplayer() { + char player[100]; + char progplayer[100]; + char ships1[100]; + char ships2[100]; + + for (int i = 0; i <= 99; i++) { + + player[i] = '0'; + + } + + for (int i = 0; i <= 99; i++) { + + progplayer[i] = '0'; + + } + for (int i = 0; i <= 99; i++) { + + ships1[i] = '0'; + + } + + for (int i = 0; i <= 99; i++) { + + ships2[i] = '0'; + + } } @@ -411,7 +438,7 @@ int main() { int player; - printf("*Schiffeversenken*\n\n Single player: Drück <1>\n Multiplayer: Drück <2>\n"); + printf("*Schiffeversenken*\n\n Single player: Drueck <1>\n Multiplayer: Drueck <2>\n"); scanf("%d", &player); if (player == 1) { From b021704c0545759ea2a2f2734dc5d829eca03d09 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Wed, 7 Feb 2024 02:18:12 +0000 Subject: [PATCH 284/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 128 ++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index cb7514c..a408c89 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -74,6 +74,13 @@ int singleplayer() { char ships1[100]; char ships2[100]; + char letco; + int numco; + int coor, coor1, coor2; + int score1 = 0; + int score2 = 0; + + for (int i = 0; i <= 99; i++) { player[i] = '0'; @@ -98,6 +105,127 @@ int singleplayer() { } + !feld(ships1); + + printf("Player, platziere dein Schlachtschiff (5).\nKoordinate: "); + scanf(" %c%d", &letco, &numco); + + coor1 = convertcoor(letco, numco); + + ships1[coor1] = 'X'; + + for (int i = 0; i < 4; i++) { + !feld(ships1); + printf("\n"); + scanf(" %c%d", &letco, &numco); + + coor2 = convertcoor(letco, numco); + + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else { + printf("Ungueltige Eingabe.\n"); + i--; + } + + !feld(ships1); + } + + printf("Player, platziere deinen Kreuzer (4).\nKoordinate: "); + scanf(" %c%d", &letco, &numco); + + coor1 = convertcoor(letco, numco); + + ships1[coor1] = 'X'; + + for (int i = 0; i < 3; i++) { + !feld(ships1); + printf("\n"); + scanf(" %c%d", &letco, &numco); + + coor2 = convertcoor(letco, numco); + + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else { + printf("Ungueltige Eingabe.\n"); + i--; + } + + !feld(ships1); + } + + for (int i = 0; i < 2; i++) { + printf("Player, platziere deine Zerstoerer 2x(3).\nKoordinate: "); + scanf(" %c%d", &letco, &numco); + + coor1 = convertcoor(letco, numco); + + ships1[coor1] = 'X'; + + for (int i = 0; i < 2; i++) { + !feld(ships1); + printf("\n"); + scanf(" %c%d", &letco, &numco); + + coor2 = convertcoor(letco, numco); + + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else { + printf("Ungueltige Eingabe.\n"); + i--; + } + + !feld(ships1); + } + } + + printf("Player, platziere dein U-Boot (2).\nKoordinate: "); + scanf(" %c%d", &letco, &numco); + + coor1 = convertcoor(letco, numco); + + ships1[coor1] = 'X'; + + !feld(ships1); + printf("\n"); + scanf(" %c%d", &letco, &numco); + + coor2 = convertcoor(letco, numco); + + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships1[coor2] = 'X'; + coor1 = coor2; + } + else { + printf("Ungueltige Eingabe.\n"); + } + + !feld(ships1); + } From b87ac2585490b78d95f2d7f86955fc3975c78689 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Wed, 7 Feb 2024 02:19:36 +0000 Subject: [PATCH 285/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index a408c89..1ce9e01 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -226,7 +226,26 @@ int singleplayer() { !feld(ships1); + while (score1 || score2 < 16) { + + !feld(player); + printf("Player 1, gib eine Zielkoordinate ein: "); + scanf(" %c%d", &letco, &numco); + coor = convertcoor(letco, numco); + + if (ships2[coor] == 'X') { + player[coor] = 'X'; + score1 += 1; + printf("Treffer!!\n"); + } + else { + player[coor] = '-'; + printf("Kein Treffer.\n"); + } + } + + return 0; } int multiplayer() { From 1997f08482dff78525133cdf35f6f2ca72f7c4f4 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Wed, 7 Feb 2024 08:28:26 +0100 Subject: [PATCH 286/375] Test detect not valid tile --- src/main/c/Minesweeper/minesweeper_start.c | 11 +++++----- src/main/c/Minesweeper/minesweeper_start.h | 4 ++-- test/Minesweeper/test_is_Valid_tile.c | 24 ++++++++++++++++++++++ 3 files changed, 32 insertions(+), 7 deletions(-) create mode 100644 test/Minesweeper/test_is_Valid_tile.c diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 19b4e50..fedb818 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -247,16 +247,17 @@ void open_empty_space(Minesweeper_Board *board, int tile, int index){ } } -int is_Valid_tile(Minesweeper_Board *board, int tile, int i){ +//0 = up-left, 1 = down-left, 2 = mid-left, 3 = up-mid, 4 = down-mid, 5 = mid-right, 6 = up-right, 7 = down-right +int is_Valid_tile(Minesweeper_Board *board, int tile, int direction){ int check_tile = tile; - if(i < 3){if(tile % board->width == 0){return -1;} + if(direction < 3){if(tile % board->width == 0){return -1;} else{check_tile -= 1;}} - if(i > 4){if(tile % board->width + 1 == board->width){return -1;} + if(direction > 4){if(tile % board->width + 1 == board->width){return -1;} else{check_tile += 1;}} - if(i % 3 == 0){if(tile / board->width == 0){return -1;} + if(direction % 3 == 0){if(tile / board->width == 0){return -1;} else{check_tile -= board->width;}} - if(i % 3 == 1){if(tile / board->width + 1 == height){return -1;} + if(direction % 3 == 1){if(tile / board->width + 1 == height){return -1;} else{check_tile += board->width;}} return check_tile; diff --git a/src/main/c/Minesweeper/minesweeper_start.h b/src/main/c/Minesweeper/minesweeper_start.h index c37d731..750003e 100644 --- a/src/main/c/Minesweeper/minesweeper_start.h +++ b/src/main/c/Minesweeper/minesweeper_start.h @@ -1,5 +1,6 @@ #ifndef MINESWEEPER_START_H #define MINESWEEPER_START_H +#include typedef struct Minesweeper_Board{ unsigned int width; @@ -10,11 +11,10 @@ typedef struct Minesweeper_Board{ int *bombs; }Minesweeper_Board; - void minesweeper_start(); Minesweeper_Board initialize_minesweeper(); bool array_contains_value(int *array, int bomb, int length); int number_of_bombs(Minesweeper_Board *board, int tile); - +int is_Valid_tile(Minesweeper_Board *board, int tile, int direction); #endif // MINESWEEPER_START_H \ No newline at end of file diff --git a/test/Minesweeper/test_is_Valid_tile.c b/test/Minesweeper/test_is_Valid_tile.c new file mode 100644 index 0000000..65082e2 --- /dev/null +++ b/test/Minesweeper/test_is_Valid_tile.c @@ -0,0 +1,24 @@ +#ifdef TEST +#include "unity.h" +#include "../../src/main/c/Minesweeper/minesweeper_start.h" + + +void setUp(void){} +void tearDown(void){} + + +void test_detect_not_valid_tile(void){ + /* arrange */ + Minesweeper_Board board = initialize_minesweeper(); + int tile = 0; + int direction = 1; + int result; + + /* act */ + result = is_Valid_tile(&board, tile, direction); + + /* assert */ + TEST_ASSERT_EQUAL_INT(-1, result);//not valid tile +} + +#endif // TEST \ No newline at end of file From 6ce31b79c61b0eec2320011b4a1a8d6730cc1ae8 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Wed, 7 Feb 2024 08:31:29 +0100 Subject: [PATCH 287/375] Test detect valid tile --- test/Minesweeper/test_is_Valid_tile.c | 28 +++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/test/Minesweeper/test_is_Valid_tile.c b/test/Minesweeper/test_is_Valid_tile.c index 65082e2..503146d 100644 --- a/test/Minesweeper/test_is_Valid_tile.c +++ b/test/Minesweeper/test_is_Valid_tile.c @@ -21,4 +21,32 @@ void test_detect_not_valid_tile(void){ TEST_ASSERT_EQUAL_INT(-1, result);//not valid tile } +void test_detect_valid_tile_right(void){ + /* arrange */ + Minesweeper_Board board = initialize_minesweeper(); + int tile = 0; + int direction = 5; + int result; + + /* act */ + result = is_Valid_tile(&board, tile, direction); + + /* assert */ + TEST_ASSERT_EQUAL_INT(1, result);//not valid tile +} + +void test_detect_valid_tile_down(void){ + /* arrange */ + Minesweeper_Board board = initialize_minesweeper(); + int tile = 0; + int direction = 4; + int result; + + /* act */ + result = is_Valid_tile(&board, tile, direction); + + /* assert */ + TEST_ASSERT_EQUAL_INT(0 + board.width, result);//not valid tile +} + #endif // TEST \ No newline at end of file From d73c982cf104bb9653f1ef18c149a5576488f2ea Mon Sep 17 00:00:00 2001 From: David Moeller Date: Wed, 7 Feb 2024 08:35:08 +0100 Subject: [PATCH 288/375] Test detect not valid all directions --- .vscode/tasks.json | 28 +++ build/artifacts/release/project.out | Bin 17000 -> 27216 bytes build/release/dependencies/get_character.d | 1 + build/release/dependencies/main.d | 3 +- .../release/dependencies/minesweeper_start.d | 3 + build/release/dependencies/snake_start.d | 2 + build/release/dependencies/tictactoe.d | 1 + build/release/out/c/get_character.o | Bin 0 -> 3576 bytes build/release/out/c/main.o | Bin 3072 -> 3248 bytes build/release/out/c/minesweeper_start.o | Bin 0 -> 12272 bytes build/release/out/c/snake_start.o | Bin 0 -> 9184 bytes build/release/out/c/tictactoe.o | Bin 0 -> 5920 bytes build/release/project.out | Bin 17000 -> 27216 bytes build/test/cache/defines_dependency.yml | 8 + build/test/cache/test_bomb_in_array.c | 79 +++++++ build/test/cache/test_collision.c | 102 +++++++++ build/test/cache/test_is_Valid_tile.c | 205 ++++++++++++++++++ build/test/cache/test_moving_snake.c | 142 ++++++++++++ build/test/cache/test_number_of_bombs.c | 205 ++++++++++++++++++ build/test/cache/test_part_of_snake.c | 102 +++++++++ build/test/cache/test_tictactoe.c | 105 +++++++++ build/test/dependencies/get_character.d | 1 + build/test/dependencies/minesweeper_start.d | 3 + build/test/dependencies/snake_start.d | 2 + build/test/dependencies/test_bomb_in_array.d | 5 + .../dependencies/test_bomb_in_array_runner.d | 4 + build/test/dependencies/test_collision.d | 4 + .../test/dependencies/test_collision_runner.d | 4 + build/test/dependencies/test_is_Valid_tile.d | 5 + .../dependencies/test_is_Valid_tile_runner.d | 4 + build/test/dependencies/test_moving_snake.d | 5 + .../dependencies/test_moving_snake_runner.d | 4 + .../test/dependencies/test_number_of_bombs.d | 5 + .../test_number_of_bombs_runner.d | 4 + build/test/dependencies/test_part_of_snake.d | 5 + .../dependencies/test_part_of_snake_runner.d | 4 + build/test/dependencies/test_tictactoe.d | 4 + .../test/dependencies/test_tictactoe_runner.d | 4 + build/test/out/c/get_character.o | Bin 0 -> 8552 bytes build/test/out/c/minesweeper_start.o | Bin 0 -> 23696 bytes build/test/out/c/snake_start.o | Bin 0 -> 18016 bytes build/test/out/c/test_bomb_in_array.o | Bin 0 -> 9752 bytes build/test/out/c/test_bomb_in_array_runner.o | Bin 0 -> 11176 bytes build/test/out/c/test_collision.o | Bin 0 -> 10792 bytes build/test/out/c/test_collision_runner.o | Bin 0 -> 11296 bytes build/test/out/c/test_is_Valid_tile.o | Bin 0 -> 13608 bytes build/test/out/c/test_is_Valid_tile_runner.o | Bin 0 -> 11880 bytes build/test/out/c/test_moving_snake.o | Bin 0 -> 13544 bytes build/test/out/c/test_moving_snake_runner.o | Bin 0 -> 11424 bytes build/test/out/c/test_number_of_bombs.o | Bin 0 -> 13392 bytes .../test/out/c/test_number_of_bombs_runner.o | Bin 0 -> 11720 bytes build/test/out/c/test_part_of_snake.o | Bin 0 -> 11152 bytes build/test/out/c/test_part_of_snake_runner.o | Bin 0 -> 11320 bytes build/test/out/c/test_tictactoe_runner.o | Bin 0 -> 11336 bytes build/test/out/test_bomb_in_array.out | Bin 0 -> 76336 bytes build/test/out/test_collision.out | Bin 0 -> 76976 bytes build/test/out/test_is_Valid_tile.out | Bin 0 -> 77528 bytes build/test/out/test_moving_snake.out | Bin 0 -> 77304 bytes build/test/out/test_number_of_bombs.out | Bin 0 -> 77552 bytes build/test/out/test_part_of_snake.out | Bin 0 -> 77160 bytes .../preprocess/files/test_bomb_in_array.c | 79 +++++++ build/test/preprocess/files/test_collision.c | 102 +++++++++ .../preprocess/files/test_is_Valid_tile.c | 205 ++++++++++++++++++ .../test/preprocess/files/test_moving_snake.c | 142 ++++++++++++ .../preprocess/files/test_number_of_bombs.c | 205 ++++++++++++++++++ .../preprocess/files/test_part_of_snake.c | 102 +++++++++ build/test/preprocess/files/test_tictactoe.c | 105 +++++++++ .../preprocess/includes/test_bomb_in_array.c | 3 + .../test/preprocess/includes/test_collision.c | 4 + .../preprocess/includes/test_is_Valid_tile.c | 3 + .../preprocess/includes/test_moving_snake.c | 4 + .../includes/test_number_of_bombs.c | 3 + .../preprocess/includes/test_part_of_snake.c | 4 + .../test/preprocess/includes/test_tictactoe.c | 3 + build/test/results/test_bomb_in_array.pass | 22 ++ build/test/results/test_collision.pass | 26 +++ build/test/results/test_is_Valid_tile.pass | 38 ++++ build/test/results/test_moving_snake.pass | 30 +++ build/test/results/test_number_of_bombs.pass | 34 +++ build/test/results/test_part_of_snake.pass | 26 +++ build/test/results/test_template.pass | 2 +- .../test/runners/test_bomb_in_array_runner.c | 83 +++++++ build/test/runners/test_collision_runner.c | 85 ++++++++ .../test/runners/test_is_Valid_tile_runner.c | 91 ++++++++ build/test/runners/test_moving_snake_runner.c | 87 ++++++++ .../runners/test_number_of_bombs_runner.c | 89 ++++++++ .../test/runners/test_part_of_snake_runner.c | 85 ++++++++ build/test/runners/test_tictactoe_runner.c | 85 ++++++++ test/Minesweeper/test_is_Valid_tile.c | 44 +++- 89 files changed, 2841 insertions(+), 3 deletions(-) create mode 100644 .vscode/tasks.json create mode 100644 build/release/dependencies/get_character.d create mode 100644 build/release/dependencies/minesweeper_start.d create mode 100644 build/release/dependencies/snake_start.d create mode 100644 build/release/dependencies/tictactoe.d create mode 100644 build/release/out/c/get_character.o create mode 100644 build/release/out/c/minesweeper_start.o create mode 100644 build/release/out/c/snake_start.o create mode 100644 build/release/out/c/tictactoe.o create mode 100644 build/test/cache/test_bomb_in_array.c create mode 100644 build/test/cache/test_collision.c create mode 100644 build/test/cache/test_is_Valid_tile.c create mode 100644 build/test/cache/test_moving_snake.c create mode 100644 build/test/cache/test_number_of_bombs.c create mode 100644 build/test/cache/test_part_of_snake.c create mode 100644 build/test/cache/test_tictactoe.c create mode 100644 build/test/dependencies/get_character.d create mode 100644 build/test/dependencies/minesweeper_start.d create mode 100644 build/test/dependencies/snake_start.d create mode 100644 build/test/dependencies/test_bomb_in_array.d create mode 100644 build/test/dependencies/test_bomb_in_array_runner.d create mode 100644 build/test/dependencies/test_collision.d create mode 100644 build/test/dependencies/test_collision_runner.d create mode 100644 build/test/dependencies/test_is_Valid_tile.d create mode 100644 build/test/dependencies/test_is_Valid_tile_runner.d create mode 100644 build/test/dependencies/test_moving_snake.d create mode 100644 build/test/dependencies/test_moving_snake_runner.d create mode 100644 build/test/dependencies/test_number_of_bombs.d create mode 100644 build/test/dependencies/test_number_of_bombs_runner.d create mode 100644 build/test/dependencies/test_part_of_snake.d create mode 100644 build/test/dependencies/test_part_of_snake_runner.d create mode 100644 build/test/dependencies/test_tictactoe.d create mode 100644 build/test/dependencies/test_tictactoe_runner.d create mode 100644 build/test/out/c/get_character.o create mode 100644 build/test/out/c/minesweeper_start.o create mode 100644 build/test/out/c/snake_start.o create mode 100644 build/test/out/c/test_bomb_in_array.o create mode 100644 build/test/out/c/test_bomb_in_array_runner.o create mode 100644 build/test/out/c/test_collision.o create mode 100644 build/test/out/c/test_collision_runner.o create mode 100644 build/test/out/c/test_is_Valid_tile.o create mode 100644 build/test/out/c/test_is_Valid_tile_runner.o create mode 100644 build/test/out/c/test_moving_snake.o create mode 100644 build/test/out/c/test_moving_snake_runner.o create mode 100644 build/test/out/c/test_number_of_bombs.o create mode 100644 build/test/out/c/test_number_of_bombs_runner.o create mode 100644 build/test/out/c/test_part_of_snake.o create mode 100644 build/test/out/c/test_part_of_snake_runner.o create mode 100644 build/test/out/c/test_tictactoe_runner.o create mode 100755 build/test/out/test_bomb_in_array.out create mode 100755 build/test/out/test_collision.out create mode 100755 build/test/out/test_is_Valid_tile.out create mode 100755 build/test/out/test_moving_snake.out create mode 100755 build/test/out/test_number_of_bombs.out create mode 100755 build/test/out/test_part_of_snake.out create mode 100644 build/test/preprocess/files/test_bomb_in_array.c create mode 100644 build/test/preprocess/files/test_collision.c create mode 100644 build/test/preprocess/files/test_is_Valid_tile.c create mode 100644 build/test/preprocess/files/test_moving_snake.c create mode 100644 build/test/preprocess/files/test_number_of_bombs.c create mode 100644 build/test/preprocess/files/test_part_of_snake.c create mode 100644 build/test/preprocess/files/test_tictactoe.c create mode 100644 build/test/preprocess/includes/test_bomb_in_array.c create mode 100644 build/test/preprocess/includes/test_collision.c create mode 100644 build/test/preprocess/includes/test_is_Valid_tile.c create mode 100644 build/test/preprocess/includes/test_moving_snake.c create mode 100644 build/test/preprocess/includes/test_number_of_bombs.c create mode 100644 build/test/preprocess/includes/test_part_of_snake.c create mode 100644 build/test/preprocess/includes/test_tictactoe.c create mode 100644 build/test/results/test_bomb_in_array.pass create mode 100644 build/test/results/test_collision.pass create mode 100644 build/test/results/test_is_Valid_tile.pass create mode 100644 build/test/results/test_moving_snake.pass create mode 100644 build/test/results/test_number_of_bombs.pass create mode 100644 build/test/results/test_part_of_snake.pass create mode 100644 build/test/runners/test_bomb_in_array_runner.c create mode 100644 build/test/runners/test_collision_runner.c create mode 100644 build/test/runners/test_is_Valid_tile_runner.c create mode 100644 build/test/runners/test_moving_snake_runner.c create mode 100644 build/test/runners/test_number_of_bombs_runner.c create mode 100644 build/test/runners/test_part_of_snake_runner.c create mode 100644 build/test/runners/test_tictactoe_runner.c diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..08d9005 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,28 @@ +{ + "tasks": [ + { + "type": "cppbuild", + "label": "C/C++: gcc build active file", + "command": "/usr/bin/gcc", + "args": [ + "-fdiagnostics-color=always", + "-g", + "${file}", + "-o", + "${fileDirname}/${fileBasenameNoExtension}" + ], + "options": { + "cwd": "${fileDirname}" + }, + "problemMatcher": [ + "$gcc" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "detail": "Task generated by Debugger." + } + ], + "version": "2.0.0" +} \ No newline at end of file diff --git a/build/artifacts/release/project.out b/build/artifacts/release/project.out index 7e9f67263f51db4eadc14cd5936440bb3f23086e..2b21304b688344c6c05790118e49cce2e28dc54e 100755 GIT binary patch literal 27216 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 XN9C&&X}FG-9uEjSOwCA;5oP}y?UXae literal 17000 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 literal 0 HcmV?d00001 diff --git a/build/release/out/c/main.o b/build/release/out/c/main.o index b7d643634397335a1da69338ecc14490046ed8e8..517a416d0b3b6b5658484e0eb84728afe3feaf1d 100644 GIT binary patch delta 735 zcmZpW*dRGUgYm;eO>@Ru6BB!wxypSf{#54K!2kp=K*VeL$;ynXj53ow8Pgo|60=hk zic1oUN>cL}I8F3|3o=u4Ob{aGdcK)?sm0}~sRgM;2w_75J=coN5(d?j$&MU`lX;o) zg_RkBX1nqUv@tpJvN20B^00GE{>Ugf*?^N}@*1WmjLMTIGEZj=n!J%&oG}GNPIh2% zmjT%y54N8n7hw@ZWb$@YK*fdJ$N z5dI6|0KtUGjO^l*J=g^-S)n>-KqTNQ??d@>(8PJ6>K9B-WEZbrf+i~pm0f`*{u|0) zgC-7h_Xad^MW{Jj(8PtI;tCM)$?Mra0%L3;hdJj1kk^5rVDdu_bEafQV5EuxBUJ;& zEa24OOo8g&F?k`UIadHXL03jc&yi+m>y3#c4W>;%{um^ zB3fg~g)v8|8^U)8VKtj7s|Q6))>)zzg}~s&lndgMQ1OC2Lp>f9?L#kGYQG^} z21Zg7HkqH_spS9`<~&U>h<57p6%4%56ReH> tHAcKqXv1!A0{U>%O%i+6iX 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 literal 0 HcmV?d00001 diff --git a/build/release/out/c/snake_start.o b/build/release/out/c/snake_start.o new file mode 100644 index 0000000000000000000000000000000000000000..de4954f93412bd8a8758977e408e7f510757cd91 GIT binary patch literal 9184 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 literal 0 HcmV?d00001 diff --git a/build/release/out/c/tictactoe.o b/build/release/out/c/tictactoe.o new file mode 100644 index 0000000000000000000000000000000000000000..a10f2f1f99b111007985a518e4a8fa071c39aaa0 GIT binary patch literal 5920 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 XN9C&&X}FG-9uEjSOwCA;5oP}y?UXae literal 17000 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 literal 0 HcmV?d00001 diff --git a/build/test/out/c/minesweeper_start.o b/build/test/out/c/minesweeper_start.o new file mode 100644 index 0000000000000000000000000000000000000000..90e6d3f08937520f8ecb4c6072521866ef6fb22a GIT binary patch literal 23696 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 literal 0 HcmV?d00001 diff --git a/build/test/out/c/snake_start.o b/build/test/out/c/snake_start.o new file mode 100644 index 0000000000000000000000000000000000000000..cba181337a069c8bbe42fb6c79ab350b66cb705c GIT binary patch literal 18016 zcmds;d3Y4ZmB71aRA_XLgainL@o+hStqT(_bI8EJfWgQdw(!9)n(2`yh#7gNhr=<4 z5yVmy5-D+F@&y~b@g~mNN$hMEv&c3Avp_b9L%dGRZX8Fk@qQv=H^g{jZ9>AnSM{n@ zDx~DwZ~xo+PUDK@O|#p-a;eKS4Vg@1fzdBXY8XeV`|~1OZHzKT8dtsJ z{;)pK`a$5pd{pSc!!ak<{?O}=Li6QIPcR_S-(Qe;6QBxY)Yi zgXNAIr!D(40bc6W2FH8!%g9N&_2*!f`Y9XX;=V4sbnpSW^c+|eRc;mSisnD`7BHNN z4+Gw52hbk?BRKGG{O1q751tGh_%izJxal-4j1Ag}p}gJSl^)?35*-lz^&aH|v#-m` z&wp*aZwxGmCyZfr+HV+#z=6R72IAvG@3eEyNO(7%{Lov-N9C_LvNrJ8#`DKpfKNRoguua;CzuOBGcPlnUqyA- zuD1eh`_Xow?EqQ}v^~XxrqvT@t@QxpA=dU(36`}63V@aX^$FD}g8G0?0a_{OY(Xo5 z&IVd7Xh6_vpaGyYg4POJ1GEf*us~2+-$%9uX8{6?9(&dJO1`g5qTav z^~yZ!zk<~-eGG>ak4jy-gfE>1(B{8#vOA+~{YU0`?@^dq|Aqb~54w)sN^e9A-N6Cr zE3g;C!TSXqeq7>Vu{U>ry1DNPF80@9u}_@1Q#RBaIWf=4*PdA5&E{dA*;n!0SS}SvEuWn|EG; zlIw6`tK-)P^|kTq1Jyol{8VFFl;Heb6!WZx%2+2dyhoR~T(kWb(+mQo*DHf$$GgYC z%j*L|-va^B2e$ek>|A0R`ue9~f0v!fqoB7;>NIzI;RZBZid{V!oTN#Q;RS3cQQdsm z2Tk;xK+I!_Zfa-!*AVqi||T_Mu|{4+9+FPl3{9v$@M`#Y?5Hr3NlCf1kYP{@``=j#Br+aHADU8ux{) zhDIyyTN|@{RxED$RyWzPM0~E1RaL&$4kc|PYkIk0DI@Fla{u<2ZA^|B8xm>X%0$W< zZ`6RDl;ulVjaJz9g?y1%G#U%18|@uas(fX>s>-QzeX`a6ujjSlMADi&IpXuJZL+M$ z+{w{w<5uHQV@gfZN~L@c`|O18o^;Hf3PYEz48op$<#>5R>Rxy?(=al4-h-=*k<0VS z!JXAFxG?Mb>8Lqya(kdAoHF<+!{atRTy_a;4igez8(9X6#cimbMp+pFCxZo4Q zTrNxz!W~?w6v8|%%of6YE>sJlnhOCT+{uL+AuQrTtq_)sTn>J262j8r)gUwoA;7(E z62fvW*g{y5lY%a67s9IHH6ZK}!rk8cK-epU)t>cWtyu{7cr6fGgs>rRH>kA>;ek<2 zP;yWR503sc2uFnQ5O?P}A#BWA26bK(LNFU|M#qG(iTlp8_rgAnRlu;ih^0tY-=_L`D7^iq3Zwo$qp;0?;$EZ+3ZuV0)McTjAAmCgu0%r}tOO znWg0K;CZ@G=n~_R|9JU83* zbwGt!*BtN3h6_InWRct+z77mW$$Z0$^<|n)8S~I$&?!R6d}AW!T^$Y3M{GybJ3XLY zyHl^lsdsvUs8?H@G|V$uIC-v)Myh^%*m3TJs26ssBNfdaFO|)@O+K6adC`1{@uh$& zta2)jXR_i;W2jwW=cNklpsQouNYXVvNtxo9VSX=9`UNlXkjy9ea)#N{e3=Av$PG*w zd!j_x4v<(TY%eLn3YcyZCu0w|gZ7^!`wtq9N*>vLpH#j|Dw`Y!e@RA)KV_I-D-;e! zoYL2+bTppLLsX7I>!?UC(1Yj6e1l<(;WZ98J*-0+l6k1c>EQwDVXb5A4xz-m^Lc%^ z5{|JJQZo;I%Q2QH#mIAY)QaIsOckS7L*h)-bae!Z!-mnHX_0 zbvrYH_a4#zXbx()JFe_>9G*@3*!viF*xhk?r(ujmZa(CA+)8@pp-RWxMvBu2X|Hg! zo1DfEINEnn<9l`qXI5sT>+X)chyGt5GBa(+>cJHIr)&>Wsw08#E5X}I&} z=G>7pCucd#gnN>ald}Lc;Q7D{S;JsNU_Ba!1hq16G4SLmGTr$(Iij`+AS+KXHXABu z_gjZMK@pVB1AlW(b9oW!=ZyzD6`+?tL#eoMG%9(~?*ifsy%W4}psEWlrQzk~!qKu9 zpBTNo2s>9@@|8uSv5_LC*hckYu;7thMlfRV`cI1bBXeNbhQmyZ8mKm)krJVV?TuC) zMDt??t4GF5)iTZTv1-|X)@~{{`aA5DzcioR?XzbFXU-^VjK$O2%j)Cl zia8arc(^egAw3dq)T@ixDPig_s#MrJnyi6}hLJ))f+>7cD2G)7fE|fg(eeiDGp_(y zSO8LXG99*qOP8SF4OfP_g3ZR0XE@8kb1gQJQ_Hg6W)t_avUZkroaK2sSr*g+4?H%T zC2Hlmw|iEw92?ro*~>}SkV%*MGYMquS}Rr+xx^m!XI zC$Mn~*vL+n_X1;4Rw)`N!&8)v#nTJyHawjb?W|xWG3MLLO2GLJcKZToxP%mdbJUvad>RDbVmSt^Vg@;*|%|5w-jeY?-I-lKC&kCP*O&G;Wr$L5| zslelCeiZrQN^Z-HvQeFE>|W-pWyLGlG%ybnFuao$zRV_r;Bs&GiFsJTrM#!v1fF^L zI62`4!+*g=2$xPaVJ&S+bi6QvUMQ2SFqfzSba(*%ejhkng#I$^9xP!$jSBG3!yTP z%|MH_qMK2+5Dl$hyk|e>t-0p0+`E}MpG~b~*;m={y(||y;BvuYLRXX#+!l*i!AQss z8O!co?^|3o%QvTdMtP;LY>S6+G+)@c*ICGB$BodUu9FVN35W21QXF{%CZeu4T5oN zyB*w;*a}vH_9OAo7R!jllHd-sX9S~-q52e*I0FGK)up4sI@rYkY{j?6z+)o_{oZUP zK@-Z8Rw%;T4Mvle1@H7&!-#}-G{)*1Yy$?s+HN$#8VGI#`TD~bt49)X%Sfi<@mRdx zh$dkJz<{L+y|81@M_9tJWBnT@Mq_LX=z!O-((%ecT>k(#O*P_R@_zFhfVd5yi`$Yh z+Y+5f$5XNTxE1k*8(@d0zp%+p8nD+>Z#Nk0map;$*R5Z3w^7lM*kV;gLR({ziY19~ zdW#jeQx!F<*56lAlT3Wd+H4zm%LxKcQ`evmp=3RbywXTG5wXHsZG-#A4~`e;trfCi z3}Ezd3~Q&wa;j-U(&oHmRG-p@!fw5{Jkm=YT6 z6hZywS)tx1!VniUvv~7?5r=r1IRgSq(K3RI5{X7AYYIg^X{4G$+v3!taDxT6saP}^ zfk2_)9MH=fN2GsRum>2em z-_W@hw}r7545yQDUv5lqiDRrM(rS2MRA9^E25%V47B8Obo3g$x9k?&EsB9i`Nc^#1mb<#S0@i(yml_6t=aA*@dJ`3}{81`z#j`AT z?cw!(fDR#t#9x?Xd7#)N$>0eCVd~x&h@IoO1r;17-X*S=M)V zIzIYfEHLp`bXo3N;?%FE@-Qkn<@Y<~o2Z;`EjZ&QaOOK_B+C*y>*-ZBN z^$iR^JVD+;_T|=^3;Kclr{t&HBJ=_utlgW2;FE{o(}v);4#CwsCcF~%KWPlOlP+7i zdeNOLgR7S=UF%;LTzBW9mHr?;>)FnnFd zxCz0dmAu^t@ud`Q%Hf91!DuMf2oGu6eU(1|4!Dggj}Qaz=uJtuUGYYhhfC$2J@Cj2yN$ z9FD*EV$$ub6PW9(b{-%u_3?~p6F&<3cn_8B))SZdr6l9VCMNVp)lYHS@6RNXx6@hI z#~(~EN&6K-H1^S1*Z(4MsXvQkd2dC1+>)05KSSlnamP;b=ZH%?l7Cy#SI6zV!f{Jl z>c69K*kN*b23#kYuw7hprT%P%%4~o7zp08{A zGR}Xj=&N!5j;6nl#;r%;>Nx*Nv7`3u4ID^FcvAT=x-TK01b=e;Zy}E6Fe}%E=|k`j z6t4OserfJs2Lj}O4(*;}yXyFiQ21oUpD9D|ImD%(50d=_ioUvzty8#a|51fcP}+S} z;i~=*hTuONg8zC5esu_5OwR>4K5DzZA^2?KavV0&ILue{)p1y_aMgap5PXMbUyk!G zMPIeQU(?@2{(N=_eK$StV1L!|zfa+}DD$#W;h#`=qr#^s{4>Pm_$0}nc12%}!)Fz) z`tv7+tLt_Xw1o-nRrUX|lElK4DL|90Zl8lOd6KHo|^cMzBNdC7~3(~0l2 z(5--ve=a|YZ=dk{Cwv#eBzH`Z;opCwK}h`b6gW#>KpdZKFrmAIxIC2~g?<+0@l>vG zv?Z^@c^cnJ`wWXU-b{_G)VO@!U90gh*|}fi@;No6@iQbRG=75S!`65=+25n_TZn&7 zHU1Xq%XLHA{~d8g zXUSWrzr!_NNb=1ZKS%wQ*O#<2oBWxh>B|pgmTLST$?vrqm)G+qjUOjJw`lx(#2?Z4 zpNT)N@xLYipV0Vb^8Xo)`-p!><6k2?of?;V=QRE{_4j8QznAR1r*RMI|5oEA)URtA zUqG^aAC&X5i1bHNJCgq!@rfEgMsk(LH_$lD*ZAj%`!(K9a-+tFk^VM~|A_qgqQ?7( z%lAs@|2DGoqNd+Q~98khSB6&inu z+Pg#JcafcC8gC%JR^#J{M>W2f>?bvTk@zl+pCtZSjjy5cIjHen#1CscNOqpp_#5Qs zOB(+@jpu6`zfSr;)OZE8dr9Nc{(otF82RI(dT18kyJgBFF6Z|M70C5fa{N>n(@lyU zL~{RmhGs`z|0^`Uocvp_*^&G0jheo+)2i|HWakOZj@*ZTUelL$Ue)+KvU5t~a^LO8 zntizse^Jwy_OELEGc=Dbdagtf$L(+Ep=JVcInMt|<2+T2IL^W>7uZ->=a4%jad;?q;e#LDQH0 zts*YhDF(4w*4%`1$*S z%wt&rDM&x1el4}5a~~;SH>sXO!0(j^2xx7EW3tfIbP@Ug5Vt3abhc{s5J zzjrapTwdL?>Ta%TvcaR;c0lopkPt5+W$p;2-h}2j^o7H%L zq<=3=!zl{kh`)K@EvFj()O2BzkoqXji$TP?^0~T%ly4zUmjzMyPr>x^EA?f8F5d

)HvV`7>DOAJCK`31qcf~` z3>$=0DNfE&*L?^|2J^oOI|fPCM{_tNy8l~&={5lwJ=A^>jVnpleHh9HYySwfFXsu( z;ZW-B?*)c7rJs=HX&G(sJUK-B(vJh6Jy`vB=|AgG7?IWfzRLPvq56&jWwOWVM98w9 zEd2&#FfR1?FQEE9sYqwpe~Dj%4BFJ|S5o~WT7!Ch+=m!!{EsaVE%>NDjz5N^tS{$f zu(q-0dHj(C68>*EOt=q+?;U!5TxRsO1Ca6DL_EU0YW`~?-}f7={)L62{yA}Sj(Yw7 E0b>n+2LJ#7 literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_bomb_in_array.o b/build/test/out/c/test_bomb_in_array.o new file mode 100644 index 0000000000000000000000000000000000000000..651d6c6463a7184d2748ee5bb961fac1bb8b4640 GIT binary patch literal 9752 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 mzHL8# zyu(R=9@GSymLpLs+Da)&3zVvAB`ApA5J=jB1QG=V;VPwo>WYFWM~TW2{(t75-RH>~ zA;d`gX8!O0=AVE5Io`anZ|NKAuhBFnlg2i(iX>6SPF`9m_wr&do5$v|KQ}FWdvxH) zZ(r1f6p!vbEt%DelURN7?D_NOCtt?L=kS48h(7rgfFXHc;*HqAk(jQTRw~o9xxdN&^-CkAIf+`ICg|*)L7e#3AY2WsI zGgT@S@?O5=#8Zp|o?XaPP=Prm6**uP3L&g}24l78A2awgK#!-S!=c$xgPNK}v)4iv z8G*+j{A%%0$8@6(a>#f$XWSam>m9CuN2G2pmZ5;$o8iYRH8E~5VnnV3$bcXFR_$Wr z>yUF>wU;$@A}EBV^{D6-!m?(xGQjF<^}OQ?JGGq)zYk#K4tTr@Ki&p-q;bo7jqtBl zWE%7vbT!;t?uLGEJ9bHw@9V(wOe1Ps0{zzoyMdQ$dAM|gXS2}COg++ozVWIvUYd`c zq&Vo!oW?bE55`a<%3oNJ0mIz0vqra}N2r^|6?JGz^x0TlzX(~}W#dXNGz(!37utld zmJ2Z5^VT};3;(`dL(aVJaq1nWR5g}~m!u3MfI&UHPxlaiFbC!UR z6T$%ZdQ1p|T=0ePuBZ-OI4FeevtNh4-716~O@9O7HX#ff%fZ@&5Uy!j2g2<_*gdNS z3>+204fFdzbFUC?Y##yPq!9LUcODkPd+RTTI$somIdcevCxx(&`*unQN#j~Da7GMC zeO>#_z-z?l8<#gWVIDQwfe|pQ8;YEpk=$0+%#9ssbODO; z!4}9J91-O^E9Hg-d_F}U2l^M_*TNc(^O`Hbg@#9=$g4DTEI{pSG+y^9t@(SL^CNh+ z&OxkAtNW2=d>CfnTuwQwwP0P6ej+48=zb=oW+DAtNNqxTS)1!Z!!aTKQfotLsgPa~ zQkRf^C8RY%dR0ihLi)9k288swHtPj&WrXn+RQG#r(T~Bk2zKy3a2R_0Nyvoq*_u|w zgz#Kg_*z)_dRX{ISomgGI2{(w2w@(^N1LJJ(yPZ1@g&f?s;E(iE3?9#k2SRIoGWTG zR-l4*yp3zSc@MDo`LgD5*nsd=z_jkAr=jJVV>uGn;aJri+ehLE2EFFk^=tuWU(WY0 zEb^&<2968OJIb0RsD`8+@8H=*<@Tc-uV~t*)wGs1%gc3`)}md~*cy#Ab~LtVv+J6n z^ELBWq;XwzeROSfuoVVU(*|2LDAX=ygRKc@PhY~K(Tz}tu^FveG%C1Ashbt5x(295 zs}^YtGwP`>Y?m{ezzi%R%&?(`OTj+OjUHh`$L6nY-vB{ttat>=v=#J-HWQKiDTpnL zp=Yy+%?-c;n#(Q&_8jhs4!#18zRo3IISqZCH`QJZjP(3CySiNle>GLievE{M$R<7d=>!H2N{-M zSqIw>cU;gsKb^KSP=>|J8!_P!V!Mu2@BoDM=lO1s^3DFip*~@#QYu=04lpnXR`Mk( z9`a1vb>TdR4dW2POS4`KB?ysLO`kh)LZ5R&*B;wAv2kLP9+}t;N!NB?4MoU$^$sJ@ z7eA)Y{F2`0>-uBH9=(3IZv08FAKIOxT-W#P;oQi?GsX$ygg(2#@Z-YC%4crnm|Gd}LdnU-_yf<4FxrltjzKrDtJDkAx3bL4KnI;t z*suOV$qGdR<`^p*GBX7$>y;fwotX+;^dKlggdlv<{j~7eEEUoiTnGS@xs1(-<$0oI zUbASq`(Z3_zBnv2PJ>ye>4^88c#HQ5bzVew6I4K`KL%6G+HExUH3i*jc4Q|Tb4ew`Wp_GCr z586s*7GY$ud!@iL!BUC5_EwA@tgD%iL>SNFs^v$4*M zGfJ}6R| zkPM?zw7mW10n0NnDl}PW^hb9L?%Hkc+%^23P22j+T|9PT9Qf3MQNak&!o$sjW%%sF z5uuF&!p7%?$Ht+5nL}b3al4~~J9aVH5N*>5inJQ9<)mRZ4KqosPhN)gR&py7hpz-0 zx~;Yk1J^BQoDf%*hY@P7?xC5%=NnF?eA+hCmT%F(48me(<~Wb3oaDSWqW|b8*x-$3 zU>ZTpU`4F%32!)J?SpMTwJQ<3E4>Ob9&tVZ%nY2sv(qba zg5g}2dlkF`Odq!%Tr*j#$nAWQyhCUE`+hxZ0Q@!@wXOm}=& zoI(s&IuQR?&qZE=jyUP zB@B>G&7kY>u6^^oilZE<2jONr@5qxVa36EXy`YfaJl#DSzT*^FVfOQkTifTyw zYQlZOc?_r=!E;8H6v3lLl@w8qf07bm^|Cl6kBAYSf}s!*pIlXN{?%Irm){~&RT21{ ztCk|-V|$8f0HhZ7r}Hw>GT$=|j&lL|{3Zp;GQSDRvmySykYmE}!1OWrRrB)xY4C@p z!5;-2?WZBfByBzsDsu%ro|^`Lej5D8fTR6(np%9$1BPorwgtsSu4c=)i};N{vphq--{q5#BmRj z_+1D>LOb}?k9tg>5m_0>{S=ejXC!}#fY}!*S8<%*m?SRO+cyPV#^v0?8(B<}KO{tk z^BWWThrUSve}f<-#KZl1lcN{fd5dt>PK4GC;^DZ>4&fJrPPV&*aP$**Nr^8D@o|hK zzDnWCYmyCwOY+J6W9B>xt|vA^#O;qncE z^HIKQpvW5V0SR%u@;rkbha`7ui9ah~ac2l+iQh$h93xEFJV9Ju#-D;OV}npUgk!tw zNtW|M+W!spXQ#rKakmuwW#ZqW;I-t`oeD1h1a_~2KSOrpx{&@{Lq~$g75;ZH;E-Mv zSvfwh6aHHT|0mgbL%}a5KmV-YXULzo75uLx%YH~ducUToP(6wByG*Df=fA`c6Mw0~ z{~+N#3VxFOU$5YKl6w{WZL+gn!TZSn8x$PhW0;Z(o}_lO3ht17Pr+XxzFZfwzxNRS zafQE;T&iq~J1MUsmu>kw2#tJf{mo-&OFpNdBpU-%NhKrr>vzKYvm1K9V(> zN3y@0Np4i|M)Ida!S5&kmnt~^DFV|f1@93slkLcMo5-JGh3}Dkqk@kSKd<1|5I(Np zd&tiT1%EI3b5y~LB;T*#A0qpYDEI?p=LrShKyj1%rR?uQ!e3JOFOmJ175sVf|91-h zL6XlY_)myGgT_I&nf`6Rk1qyx-`LjvE_Yyv&;G4*PR>2=6{viebF!_C0!Cxgi z#}s@H@t;)ihe$r7;9bN&tKbgFuPONDG>(5&@D(&(5%NpMGfHxcf-fL>k%E(X)~Vo6 zki1^OA0c^A!Nnh<;XI(=Bh+78!5^mhdkTI#@o!UbyyVApLcx>7e^kLgLj0!`JSWVs z7ZiLO#q$RWKA-HoqTr8^o!=|?GLq$cLyn7luh&sK5|`(OIfP?#tz;XsixvJ)X&x*O z@#UEu`By0XH;CUG;`6^?A{o-4!cURBE5yeT%kQ|X!he(c>nMDmTZcd0DEwQAf471+ z(Kvoq!CxZ(zpUWT5dJjb7&kPLrgp!p@B_kssPKCUe@)?kmHhdG!e2#v@gEhH^W?R} zGw8r7{aH@@4#MTQ4^tfEUppnA=;fOc5v7s(;q*uYEpZgSC z_V-o=?x%2{^oLC6lf_4m7MxkZU zC0v}tMJmbgm%=z)sgKz%e3lD4b`Jhhfw!ptmlOjlIEM1OM;h&=g8HXW8g@x5e=|$I zROIH1lH6Z$kHNa~`xn14FMgZ{{>xrcA*eTD))NORr7yxiKry&qyK19_5b~VsW!3ZEb4cIGB7H)0NiTrw_So( z#9apF*gk&GtL@(e7}}J6LXoHT29Y12eU{*|uhNg(K~b&#QMwqw`58{Kp3IMdQkKKK zXQ_S|!?MbK0I)jvDPdx#sD2D|;UxPnv8SMbHr4vCQ2ld~NV!`7D}Yyve;397VXBAm zN0YL?T>sVD#wus|e`ztcj}|tbInah$ALo?1_5osR=mUPa5->&NK2@uKmi#}B#zIN0 F|8MSr?Y95` literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_is_Valid_tile.o b/build/test/out/c/test_is_Valid_tile.o new file mode 100644 index 0000000000000000000000000000000000000000..aeddeac346154c937d2cd76ff9bf05cd06cf7578 GIT binary patch literal 13608 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 HmDm4YmQ)2t literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_is_Valid_tile_runner.o b/build/test/out/c/test_is_Valid_tile_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..f1c95db4940b1d59320901b129fb4d17a04c8d10 GIT binary patch literal 11880 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 CkeJ*6 literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_moving_snake.o b/build/test/out/c/test_moving_snake.o new file mode 100644 index 0000000000000000000000000000000000000000..829d7f100b29cbef82a871d32e7c629da7685ef8 GIT binary patch literal 13544 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 literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_number_of_bombs.o b/build/test/out/c/test_number_of_bombs.o new file mode 100644 index 0000000000000000000000000000000000000000..1d66c5f844070b517acb523d1ecfd9bf9ad1fbec GIT binary patch literal 13392 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 ZxS0i)k?=d!;^RkYWAJNAOySJO{|^~J|E&N3 literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_number_of_bombs_runner.o b/build/test/out/c/test_number_of_bombs_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..d3a3c43195d9faacc1ab1f766bafde05911f7082 GIT binary patch literal 11720 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 M8kbZ>&h_~JH!mk`ga7~l literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_part_of_snake.o b/build/test/out/c/test_part_of_snake.o new file mode 100644 index 0000000000000000000000000000000000000000..934775c5b1b8b495bc3667d95cf83cb28f302bfe GIT binary patch literal 11152 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 literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_tictactoe_runner.o b/build/test/out/c/test_tictactoe_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..104bf356c3171e4eed3f87c46771844535fbfb70 GIT binary patch literal 11336 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 Hdj0iqjn literal 0 HcmV?d00001 diff --git a/build/test/out/test_bomb_in_array.out b/build/test/out/test_bomb_in_array.out new file mode 100755 index 0000000000000000000000000000000000000000..a8ba57a86c3d2593620868fc6f6bdfe20ffccc3a GIT binary patch literal 76336 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

+l^DxyMM-P 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 literal 0 HcmV?d00001 diff --git a/build/test/out/test_is_Valid_tile.out b/build/test/out/test_is_Valid_tile.out new file mode 100755 index 0000000000000000000000000000000000000000..38aa2788d7360501d5442b9e0a9a2f80490ef4d1 GIT binary patch literal 77528 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 XV}RWB$=rp--*LUhoOU8OkKX?PAmW|+ literal 0 HcmV?d00001 diff --git a/build/test/out/test_moving_snake.out b/build/test/out/test_moving_snake.out new file mode 100755 index 0000000000000000000000000000000000000000..e3f2dcfe6181dacbc5329119630837112ca9c3a3 GIT binary patch literal 77304 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 WGIvII429b?|%UA6y>4- literal 0 HcmV?d00001 diff --git a/build/test/out/test_number_of_bombs.out b/build/test/out/test_number_of_bombs.out new file mode 100755 index 0000000000000000000000000000000000000000..44d20d7079f4cf8048a25cf338b92f6903375d61 GIT binary patch literal 77552 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 LX4;A1JbM2FS8BRz literal 0 HcmV?d00001 diff --git a/build/test/out/test_part_of_snake.out b/build/test/out/test_part_of_snake.out new file mode 100755 index 0000000000000000000000000000000000000000..87a85748e90f5005e0a99dc13bc94e3c95b260c4 GIT binary patch literal 77160 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 Date: Wed, 7 Feb 2024 08:42:31 +0100 Subject: [PATCH 289/375] Test detect valid tile all --- test/Minesweeper/test_is_Valid_tile.c | 52 ++++++++++++++++++++------- 1 file changed, 40 insertions(+), 12 deletions(-) diff --git a/test/Minesweeper/test_is_Valid_tile.c b/test/Minesweeper/test_is_Valid_tile.c index 058be3b..13e8980 100644 --- a/test/Minesweeper/test_is_Valid_tile.c +++ b/test/Minesweeper/test_is_Valid_tile.c @@ -11,7 +11,7 @@ void test_detect_not_valid_tile_left(void){ /* arrange */ Minesweeper_Board board = initialize_minesweeper(); int tile = 0; - int direction = 1; + int direction = 2; int result; /* act */ @@ -35,10 +35,10 @@ void test_detect_not_valid_tile_up(void){ TEST_ASSERT_EQUAL_INT(-1, result);//not valid tile } -void test_detect_valid_tile_right(void){ +void test_detect_not_valid_tile_right(void){ /* arrange */ Minesweeper_Board board = initialize_minesweeper(); - int tile = 0; + int tile = board.width * board.height - 1; int direction = 5; int result; @@ -46,13 +46,13 @@ void test_detect_valid_tile_right(void){ result = is_Valid_tile(&board, tile, direction); /* assert */ - TEST_ASSERT_EQUAL_INT(1, result);//not valid tile + TEST_ASSERT_EQUAL_INT(-1, result);//not valid tile } -void test_detect_valid_tile_down(void){ +void test_detect_not_valid_tile_down(void){ /* arrange */ Minesweeper_Board board = initialize_minesweeper(); - int tile = 0; + int tile = board.width * board.height - 1; int direction = 4; int result; @@ -60,27 +60,55 @@ void test_detect_valid_tile_down(void){ result = is_Valid_tile(&board, tile, direction); /* assert */ - TEST_ASSERT_EQUAL_INT(0 + board.width, result);//not valid tile + TEST_ASSERT_EQUAL_INT(-1, result);//not valid tile } -void test_detect_not_valid_tile_right(void){ +void test_detect_valid_tile_left(void){ /* arrange */ Minesweeper_Board board = initialize_minesweeper(); int tile = board.width * board.height - 1; - int direction = 5; + int direction = 2; int result; /* act */ result = is_Valid_tile(&board, tile, direction); /* assert */ - TEST_ASSERT_EQUAL_INT(-1, result);//not valid tile + TEST_ASSERT_EQUAL_INT(board.width * board.height - 2, result);//not valid tile } -void test_detect_not_valid_tile_down(void){ +void test_detect_valid_tile_up(void){ /* arrange */ Minesweeper_Board board = initialize_minesweeper(); int tile = board.width * board.height - 1; + int direction = 3; + int result; + + /* act */ + result = is_Valid_tile(&board, tile, direction); + + /* assert */ + TEST_ASSERT_EQUAL_INT(board.width * (board.height - 1) - 1, result);//not valid tile +} + +void test_detect_valid_tile_right(void){ + /* arrange */ + Minesweeper_Board board = initialize_minesweeper(); + int tile = 0; + int direction = 5; + int result; + + /* act */ + result = is_Valid_tile(&board, tile, direction); + + /* assert */ + TEST_ASSERT_EQUAL_INT(1, result);//not valid tile +} + +void test_detect_valid_tile_down(void){ + /* arrange */ + Minesweeper_Board board = initialize_minesweeper(); + int tile = 0; int direction = 4; int result; @@ -88,7 +116,7 @@ void test_detect_not_valid_tile_down(void){ result = is_Valid_tile(&board, tile, direction); /* assert */ - TEST_ASSERT_EQUAL_INT(-1, result);//not valid tile + TEST_ASSERT_EQUAL_INT(0 + board.width, result);//not valid tile } #endif // TEST \ No newline at end of file From 442cded1c672c5ef45061b137b4b32a9a92ba399 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Wed, 7 Feb 2024 09:19:24 +0100 Subject: [PATCH 290/375] preperations merge --- .vscode/settings.json | 9 ++ build/release/dependencies/main.d | 2 +- build/release/dependencies/pong.d | 1 + build/release/out/c/main.o | Bin 3248 -> 3312 bytes build/release/out/c/pong.o | Bin 0 -> 6320 bytes build/release/out/c/tictactoe.o | Bin 5920 -> 5920 bytes build/release/project.out | Bin 27216 -> 0 bytes build/test/cache/defines_dependency.yml | 2 + build/test/cache/test_checkCollision.c | 143 ++++++++++++++++++ build/test/cache/test_checkGameEnd.c | 69 +++++++++ build/test/cache/test_clearScreen.c | 73 +++++++++ build/test/cache/test_is_Valid_tile.c | 90 +++++++++-- build/test/cache/test_playerInputMovement.c | 83 ++++++++++ build/test/cache/test_pong.c | 51 +++++++ build/test/cache/test_tictactoe.c | 105 ------------- build/test/dependencies/pong.d | 1 + build/test/dependencies/test_checkCollision.d | 4 + .../dependencies/test_checkCollision_runner.d | 4 + build/test/dependencies/test_checkGameEnd.d | 4 + .../dependencies/test_checkGameEnd_runner.d | 4 + build/test/dependencies/test_clearScreen.d | 4 + .../dependencies/test_clearScreen_runner.d | 4 + .../dependencies/test_playerInputMovement.d | 5 + .../test_playerInputMovement_runner.d | 4 + build/test/dependencies/test_pong.d | 4 + build/test/dependencies/test_pong_runner.d | 4 + build/test/dependencies/test_tictactoe.d | 5 +- build/test/out/c/pong.o | Bin 0 -> 15192 bytes build/test/out/c/test_checkCollision.o | Bin 0 -> 11104 bytes build/test/out/c/test_checkCollision_runner.o | Bin 0 -> 11040 bytes build/test/out/c/test_checkGameEnd.o | Bin 0 -> 9912 bytes build/test/out/c/test_checkGameEnd_runner.o | Bin 0 -> 11024 bytes build/test/out/c/test_clearScreen.o | Bin 0 -> 10104 bytes build/test/out/c/test_clearScreen_runner.o | Bin 0 -> 11016 bytes build/test/out/c/test_is_Valid_tile.o | Bin 13608 -> 14936 bytes build/test/out/c/test_is_Valid_tile_runner.o | Bin 11880 -> 12192 bytes build/test/out/c/test_playerInputMovement.o | Bin 0 -> 10048 bytes .../out/c/test_playerInputMovement_runner.o | Bin 0 -> 11064 bytes build/test/out/c/test_pong.o | Bin 0 -> 9672 bytes build/test/out/c/test_pong_runner.o | Bin 0 -> 10992 bytes build/test/out/c/test_tictactoe.o | Bin 0 -> 1488 bytes build/test/out/c/test_tictactoe_runner.o | Bin 11336 -> 10144 bytes build/test/out/test_checkCollision.out | Bin 0 -> 70360 bytes build/test/out/test_checkGameEnd.out | Bin 0 -> 69960 bytes build/test/out/test_clearScreen.out | Bin 0 -> 70104 bytes build/test/out/test_is_Valid_tile.out | Bin 77528 -> 77952 bytes build/test/out/test_playerInputMovement.out | Bin 0 -> 70048 bytes build/test/out/test_pong.out | Bin 0 -> 69848 bytes build/test/out/test_tictactoe.out | Bin 0 -> 62360 bytes .../preprocess/files/test_checkCollision.c | 143 ++++++++++++++++++ .../test/preprocess/files/test_checkGameEnd.c | 69 +++++++++ .../test/preprocess/files/test_clearScreen.c | 73 +++++++++ .../preprocess/files/test_is_Valid_tile.c | 90 +++++++++-- .../files/test_playerInputMovement.c | 83 ++++++++++ build/test/preprocess/files/test_pong.c | 51 +++++++ build/test/preprocess/files/test_tictactoe.c | 105 ------------- .../preprocess/includes/test_checkCollision.c | 3 + .../preprocess/includes/test_checkGameEnd.c | 3 + .../preprocess/includes/test_clearScreen.c | 3 + .../includes/test_playerInputMovement.c | 3 + build/test/preprocess/includes/test_pong.c | 3 + .../test/preprocess/includes/test_tictactoe.c | 4 +- build/test/results/test_bomb_in_array.pass | 2 +- build/test/results/test_checkCollision.pass | 18 +++ build/test/results/test_checkGameEnd.pass | 18 +++ build/test/results/test_clearScreen.pass | 19 +++ build/test/results/test_collision.pass | 2 +- build/test/results/test_is_Valid_tile.pass | 22 ++- build/test/results/test_moving_snake.pass | 2 +- build/test/results/test_number_of_bombs.pass | 2 +- build/test/results/test_part_of_snake.pass | 2 +- .../results/test_playerInputMovement.pass | 18 +++ build/test/results/test_pong.pass | 18 +++ build/test/results/test_template.pass | 2 +- build/test/results/test_tictactoe.pass | 14 ++ .../test/runners/test_checkCollision_runner.c | 81 ++++++++++ build/test/runners/test_checkGameEnd_runner.c | 81 ++++++++++ build/test/runners/test_clearScreen_runner.c | 81 ++++++++++ .../test/runners/test_is_Valid_tile_runner.c | 16 +- .../runners/test_playerInputMovement_runner.c | 81 ++++++++++ build/test/runners/test_pong_runner.c | 81 ++++++++++ build/test/runners/test_tictactoe_runner.c | 40 +---- 82 files changed, 1611 insertions(+), 297 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 build/release/dependencies/pong.d create mode 100644 build/release/out/c/pong.o delete mode 100755 build/release/project.out create mode 100644 build/test/cache/test_checkCollision.c create mode 100644 build/test/cache/test_checkGameEnd.c create mode 100644 build/test/cache/test_clearScreen.c create mode 100644 build/test/cache/test_playerInputMovement.c create mode 100644 build/test/cache/test_pong.c create mode 100644 build/test/dependencies/pong.d create mode 100644 build/test/dependencies/test_checkCollision.d create mode 100644 build/test/dependencies/test_checkCollision_runner.d create mode 100644 build/test/dependencies/test_checkGameEnd.d create mode 100644 build/test/dependencies/test_checkGameEnd_runner.d create mode 100644 build/test/dependencies/test_clearScreen.d create mode 100644 build/test/dependencies/test_clearScreen_runner.d create mode 100644 build/test/dependencies/test_playerInputMovement.d create mode 100644 build/test/dependencies/test_playerInputMovement_runner.d create mode 100644 build/test/dependencies/test_pong.d create mode 100644 build/test/dependencies/test_pong_runner.d create mode 100644 build/test/out/c/pong.o create mode 100644 build/test/out/c/test_checkCollision.o create mode 100644 build/test/out/c/test_checkCollision_runner.o create mode 100644 build/test/out/c/test_checkGameEnd.o create mode 100644 build/test/out/c/test_checkGameEnd_runner.o create mode 100644 build/test/out/c/test_clearScreen.o create mode 100644 build/test/out/c/test_clearScreen_runner.o create mode 100644 build/test/out/c/test_playerInputMovement.o create mode 100644 build/test/out/c/test_playerInputMovement_runner.o create mode 100644 build/test/out/c/test_pong.o create mode 100644 build/test/out/c/test_pong_runner.o create mode 100644 build/test/out/c/test_tictactoe.o create mode 100755 build/test/out/test_checkCollision.out create mode 100755 build/test/out/test_checkGameEnd.out create mode 100755 build/test/out/test_clearScreen.out create mode 100755 build/test/out/test_playerInputMovement.out create mode 100755 build/test/out/test_pong.out create mode 100755 build/test/out/test_tictactoe.out create mode 100644 build/test/preprocess/files/test_checkCollision.c create mode 100644 build/test/preprocess/files/test_checkGameEnd.c create mode 100644 build/test/preprocess/files/test_clearScreen.c create mode 100644 build/test/preprocess/files/test_playerInputMovement.c create mode 100644 build/test/preprocess/files/test_pong.c create mode 100644 build/test/preprocess/includes/test_checkCollision.c create mode 100644 build/test/preprocess/includes/test_checkGameEnd.c create mode 100644 build/test/preprocess/includes/test_clearScreen.c create mode 100644 build/test/preprocess/includes/test_playerInputMovement.c create mode 100644 build/test/preprocess/includes/test_pong.c create mode 100644 build/test/results/test_checkCollision.pass create mode 100644 build/test/results/test_checkGameEnd.pass create mode 100644 build/test/results/test_clearScreen.pass create mode 100644 build/test/results/test_playerInputMovement.pass create mode 100644 build/test/results/test_pong.pass create mode 100644 build/test/results/test_tictactoe.pass create mode 100644 build/test/runners/test_checkCollision_runner.c create mode 100644 build/test/runners/test_checkGameEnd_runner.c create mode 100644 build/test/runners/test_clearScreen_runner.c create mode 100644 build/test/runners/test_playerInputMovement_runner.c create mode 100644 build/test/runners/test_pong_runner.c diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ef6068e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,9 @@ +{ + "files.associations": { + "*.embeddedhtml": "html", + "unistd.h": "c", + "fcntl.h": "c", + "stdio.h": "c", + "types.h": "c" + } +} \ No newline at end of file diff --git a/build/release/dependencies/main.d b/build/release/dependencies/main.d index d6a73f0..cab5c66 100644 --- a/build/release/dependencies/main.d +++ b/build/release/dependencies/main.d @@ -1,3 +1,3 @@ build/release/out/c/main.o: src/main/c/main.c \ src/main/c/Snake/snake_start.h \ - src/main/c/Minesweeper/minesweeper_start.h + src/main/c/Minesweeper/minesweeper_start.h src/main/c/Pong/pong.h diff --git a/build/release/dependencies/pong.d b/build/release/dependencies/pong.d new file mode 100644 index 0000000..4a40a82 --- /dev/null +++ b/build/release/dependencies/pong.d @@ -0,0 +1 @@ +build/release/out/c/pong.o: src/main/c/Pong/pong.c diff --git a/build/release/out/c/main.o b/build/release/out/c/main.o index 517a416d0b3b6b5658484e0eb84728afe3feaf1d..17adbcd0132e8cf0674f4e218b4d66bb3f62607c 100644 GIT binary patch delta 555 zcmZ8dF-QYZ482^xz5A_7YsKRRu?3N;Xe)v@Nf8kdL3%hj2s(+2t&=DS4nSv{nsN^O*e z5u-7RV1^b&Hn*{cGulP3o{ObO)3lk+$i6<^5ey7ayJ4bEHr}Pcz5YoloCl6+9uENv z>9D|Kpqtj=ie-^kZLY;Q-oy({;@S?y-Vn7u#>6i649jiyBB6*4Ut0lc6**HeXXzBtvynCOzE&ZVhX$tV#^O`r1sj zBQN^=x0j!^@V3|O6j9T{lM%5K9&^#6G*CAz+u!o4r8-r6W!CeMS)# z>F7D)oA>a|lm0UvO3J)9>ke+np)yLL4E3WL%II1BUmp)ADT}#qhVm$}KS4E|k(cUM YjCVxa9a&TtW9-1??8aUYL3z56^yl$m6-~K zl^Gcr7+m=T+L)Yq*_fpmdDuB7Gcrj|KEU*XQF-!8=IM+Z03^hfX0IW6A-fk z@t^+?@OiQ#t9ZRE$aWxL0b(H_hRODT1c3mg3xxlII6yD~Lczruq57wwiL*k*XP}AS zhw|q@XeGEoyig4b&@>26Hslbu6otyJK$HCq<*z{#hk0wmWJL~f!7XUA!jmU*{09c^ zL{4+g2OysVLBZsUoaRi)jKHuLo2g`MZQn6@B9}QZ&`)yN1LKmD+n&jT z39LSWTZ7SKawoSvW5(o@Kr&)7Cyzbn0#LvK!HLO%Jm#DkP>V_@PXzJ`I3RMBlLfit E0VHH+9smFU diff --git a/build/release/out/c/pong.o b/build/release/out/c/pong.o new file mode 100644 index 0000000000000000000000000000000000000000..6cbb7e4c0e4f3d95c44470b792c003530fef5985 GIT binary patch literal 6320 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 E2me8d!vFvP literal 0 HcmV?d00001 diff --git a/build/release/out/c/tictactoe.o b/build/release/out/c/tictactoe.o index a10f2f1f99b111007985a518e4a8fa071c39aaa0..39f5d2119a6c48354933229f58b392d3551d59d4 100644 GIT binary patch delta 149 zcmZ3Ww?J=05F7Un1|Wz%3?es&viUO!N`jcKd;)Du&b({^JnS5k7Ya*nzQFN-iBWR% zMs5~H_T0qGJdpAuJT~l%l9L%l${7|o&uq8f}ElXr^RGkQ$^DO%5XU~;9HJ?8;#kbMjcOp_0a#RCA}@+Un2 delta 153 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 XN9C&&X}FG-9uEjSOwCA;5oP}y?UXae diff --git a/build/test/cache/defines_dependency.yml b/build/test/cache/defines_dependency.yml index 717335e..6dae52a 100644 --- a/build/test/cache/defines_dependency.yml +++ b/build/test/cache/defines_dependency.yml @@ -9,3 +9,5 @@ src/main/c/Minesweeper/minesweeper_start.c: - TEST src/main/c/GameTic_Tac_Toe/tictactoe.c: - TEST +src/main/c/Pong/pong.c: +- TEST diff --git a/build/test/cache/test_checkCollision.c b/build/test/cache/test_checkCollision.c new file mode 100644 index 0000000..79e7083 --- /dev/null +++ b/build/test/cache/test_checkCollision.c @@ -0,0 +1,143 @@ +#include "src/main/c/Pong/pong.h" +#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + + + +typedef struct { + + int x; + + int y; + + int speedX; + + int speedY; + +} Ball; + + + +typedef struct { + + int x; + + int y; + + int width; + + int height; + +} Paddle; + + + +void setUp(void){ + + + +} + + + +void tearDown(void){ + +} + + + +void test_checkCollision(void){ + + Ball ball = {10, 10, 1, 1}; + + Paddle paddle = {50, 10, 5, 10}; + + + + + + ball.x = 0; + + int result1 = checkCollision(ball, paddle.y, paddle.y); + + UnityAssertEqualNumber((UNITY_INT)((1)), (UNITY_INT)((result1)), ( + + ((void *)0) + + ), (UNITY_UINT)(35), UNITY_DISPLAY_STYLE_INT); + + + + ball.x = 40 - 1; + + int result2 = checkCollision(ball, paddle.y, paddle.y); + + UnityAssertEqualNumber((UNITY_INT)((2)), (UNITY_INT)((result2)), ( + + ((void *)0) + + ), (UNITY_UINT)(39), UNITY_DISPLAY_STYLE_INT); + + + + + + ball.x = 5; + + ball.y = 0; + + int result3 = checkCollision(ball, paddle.y, paddle.y); + + UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((result3)), ( + + ((void *)0) + + ), (UNITY_UINT)(45), UNITY_DISPLAY_STYLE_INT); + + + + ball.y = 20 - 1; + + int result4 = checkCollision(ball, paddle.y, paddle.y); + + UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((result4)), ( + + ((void *)0) + + ), (UNITY_UINT)(49), UNITY_DISPLAY_STYLE_INT); + + + + + + ball.x = paddle.x - 1; + + ball.y = paddle.y + 1; + + int result5 = checkCollision(ball, paddle.y, paddle.y); + + UnityAssertEqualNumber((UNITY_INT)((2)), (UNITY_INT)((result5)), ( + + ((void *)0) + + ), (UNITY_UINT)(55), UNITY_DISPLAY_STYLE_INT); + + + + ball.x = paddle.x + 1; + + ball.y = paddle.y + 1; + + int result6 = checkCollision(ball, paddle.y, paddle.y); + + UnityAssertEqualNumber((UNITY_INT)((2)), (UNITY_INT)((result6)), ( + + ((void *)0) + + ), (UNITY_UINT)(60), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/cache/test_checkGameEnd.c b/build/test/cache/test_checkGameEnd.c new file mode 100644 index 0000000..3c0d662 --- /dev/null +++ b/build/test/cache/test_checkGameEnd.c @@ -0,0 +1,69 @@ +#include "src/main/c/Pong/pong.h" +#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + + + +void setUp(void){ + + + +} + + + +void tearDown(void){ + +} + + + +void test_checkGameEnd(void){ + + + + int maxScore = 5; + + int score1 = 4, score2 = 2; + + + + + + int result = checkGameEnd(score1, score2, maxScore); + + + + + + UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(23), UNITY_DISPLAY_STYLE_INT); + + + + + + score1 = 5; + + result = checkGameEnd(score1, score2, maxScore); + + UnityAssertEqualNumber((UNITY_INT)((1)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(28), UNITY_DISPLAY_STYLE_INT); + + + + + + + +} diff --git a/build/test/cache/test_clearScreen.c b/build/test/cache/test_clearScreen.c new file mode 100644 index 0000000..74ec6bf --- /dev/null +++ b/build/test/cache/test_clearScreen.c @@ -0,0 +1,73 @@ +#include "src/main/c/Pong/pong.h" +#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + + + + + +char screen[20][40 +1]; + + + +void setUp(void){ + + + +} + + + +void tearDown(void){ + +} + + + +void test_clearScreen(void){ + + + + int i, j; + + for (i = 0; i < 20; i++) { + + for (j = 0; j < 40; j++) { + + screen[i][j] = ' '; + + } + + screen[i][j] = '\0'; + + } + + + + + + clearScreen(); + + + + + + for (i = 0; i < 20; i++) { + + for (j = 0; j < 40; j++) { + + UnityAssertEqualNumber((UNITY_INT)((' ')), (UNITY_INT)((screen[i][j])), ( + + ((void *)0) + + ), (UNITY_UINT)(33), UNITY_DISPLAY_STYLE_INT); + + } + + } + +} diff --git a/build/test/cache/test_is_Valid_tile.c b/build/test/cache/test_is_Valid_tile.c index 6ad87c9..5911aa4 100644 --- a/build/test/cache/test_is_Valid_tile.c +++ b/build/test/cache/test_is_Valid_tile.c @@ -22,7 +22,7 @@ void test_detect_not_valid_tile_left(void){ int tile = 0; - int direction = 1; + int direction = 2; int result; @@ -78,13 +78,13 @@ void test_detect_not_valid_tile_up(void){ -void test_detect_valid_tile_right(void){ +void test_detect_not_valid_tile_right(void){ Minesweeper_Board board = initialize_minesweeper(); - int tile = 0; + int tile = board.width * board.height - 1; int direction = 5; @@ -100,7 +100,7 @@ void test_detect_valid_tile_right(void){ - UnityAssertEqualNumber((UNITY_INT)((1)), (UNITY_INT)((result)), ( + UnityAssertEqualNumber((UNITY_INT)((-1)), (UNITY_INT)((result)), ( ((void *)0) @@ -110,13 +110,13 @@ void test_detect_valid_tile_right(void){ -void test_detect_valid_tile_down(void){ +void test_detect_not_valid_tile_down(void){ Minesweeper_Board board = initialize_minesweeper(); - int tile = 0; + int tile = board.width * board.height - 1; int direction = 4; @@ -132,7 +132,7 @@ void test_detect_valid_tile_down(void){ - UnityAssertEqualNumber((UNITY_INT)((0 + board.width)), (UNITY_INT)((result)), ( + UnityAssertEqualNumber((UNITY_INT)((-1)), (UNITY_INT)((result)), ( ((void *)0) @@ -142,7 +142,7 @@ void test_detect_valid_tile_down(void){ -void test_detect_not_valid_tile_right(void){ +void test_detect_valid_tile_left(void){ @@ -150,7 +150,7 @@ void test_detect_not_valid_tile_right(void){ int tile = board.width * board.height - 1; - int direction = 5; + int direction = 2; int result; @@ -164,7 +164,7 @@ void test_detect_not_valid_tile_right(void){ - UnityAssertEqualNumber((UNITY_INT)((-1)), (UNITY_INT)((result)), ( + UnityAssertEqualNumber((UNITY_INT)((board.width * board.height - 2)), (UNITY_INT)((result)), ( ((void *)0) @@ -174,7 +174,7 @@ void test_detect_not_valid_tile_right(void){ -void test_detect_not_valid_tile_down(void){ +void test_detect_valid_tile_up(void){ @@ -182,7 +182,7 @@ void test_detect_not_valid_tile_down(void){ int tile = board.width * board.height - 1; - int direction = 4; + int direction = 3; int result; @@ -196,10 +196,74 @@ void test_detect_not_valid_tile_down(void){ - UnityAssertEqualNumber((UNITY_INT)((-1)), (UNITY_INT)((result)), ( + UnityAssertEqualNumber((UNITY_INT)((board.width * (board.height - 1) - 1)), (UNITY_INT)((result)), ( ((void *)0) ), (UNITY_UINT)(91), UNITY_DISPLAY_STYLE_INT); } + + + +void test_detect_valid_tile_right(void){ + + + + Minesweeper_Board board = initialize_minesweeper(); + + int tile = 0; + + int direction = 5; + + int result; + + + + + + result = is_Valid_tile(&board, tile, direction); + + + + + + UnityAssertEqualNumber((UNITY_INT)((1)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(105), UNITY_DISPLAY_STYLE_INT); + +} + + + +void test_detect_valid_tile_down(void){ + + + + Minesweeper_Board board = initialize_minesweeper(); + + int tile = 0; + + int direction = 4; + + int result; + + + + + + result = is_Valid_tile(&board, tile, direction); + + + + + + UnityAssertEqualNumber((UNITY_INT)((0 + board.width)), (UNITY_INT)((result)), ( + + ((void *)0) + + ), (UNITY_UINT)(119), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/cache/test_playerInputMovement.c b/build/test/cache/test_playerInputMovement.c new file mode 100644 index 0000000..d38ca76 --- /dev/null +++ b/build/test/cache/test_playerInputMovement.c @@ -0,0 +1,83 @@ +#include "src/main/c/Pong/pong.h" +#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + +typedef struct { + + int x; + + int y; + + int speedX; + + int speedY; + +} Paddle; + + + + + +void setUp(void){ + + + +} + + + +void tearDown(void){ + +} + + + +void test_playerInputMovement(void){ + + + + int paddlePositionY = 10; + + int userInput = -1; + + int expectedY = paddlePositionY - 1; + + + + processPlayerInput(&paddlePositionY, userInput); + + UnityAssertEqualNumber((UNITY_INT)((expectedY)), (UNITY_INT)((paddlePositionY)), ( + + ((void *)0) + + ), (UNITY_UINT)(27), UNITY_DISPLAY_STYLE_INT); + + + + + + userInput = 1; + + expectedY = paddlePositionY + 1; + + + + + + processPlayerInput(&paddlePositionY, userInput); + + UnityAssertEqualNumber((UNITY_INT)((expectedY)), (UNITY_INT)((paddlePositionY)), ( + + ((void *)0) + + ), (UNITY_UINT)(35), UNITY_DISPLAY_STYLE_INT); + + + + + + + +} diff --git a/build/test/cache/test_pong.c b/build/test/cache/test_pong.c new file mode 100644 index 0000000..7e1dfbf --- /dev/null +++ b/build/test/cache/test_pong.c @@ -0,0 +1,51 @@ +#include "src/main/c/Pong/pong.h" +#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" + + + + + + +void setUp(void){ + + + +} + +void tearDown(void){ + +} + + + + + +void test_input_all_5(void){ + + + + int a = 4, b = 5; + + + + + + resetScore( &a, &b ); + + + + + + UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((a)), ( + + ((void *)0) + + ), (UNITY_UINT)(21), UNITY_DISPLAY_STYLE_INT); + + UnityAssertEqualNumber((UNITY_INT)((0)), (UNITY_INT)((b)), ( + + ((void *)0) + + ), (UNITY_UINT)(22), UNITY_DISPLAY_STYLE_INT); + +} diff --git a/build/test/cache/test_tictactoe.c b/build/test/cache/test_tictactoe.c index 7971f22..e69de29 100644 --- a/build/test/cache/test_tictactoe.c +++ b/build/test/cache/test_tictactoe.c @@ -1,105 +0,0 @@ -#include "src/main/c/GameTic_Tac_Toe/tictactoe.h" -#include "/var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h" - - - - - - - - -void setUp(void){ - - - -} - -void tearDown(void){ - -} - - - - - -void test_if_not_identical(void){ - - - - char result; - - char a = 'a', b = 'b', c = 'c'; - - - - result = checkLine(a, b, c); - - - - - - UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((' ')), (UNITY_INT)(UNITY_INT8 )((result)), ( - - ((void *)0) - - ), (UNITY_UINT)(22), UNITY_DISPLAY_STYLE_CHAR); - -} - - - - - -void test_if_identical(void){ - - - - char result; - - char a = 'a', b = 'a', c = 'a'; - - - - result = checkLine(a, b, c); - - - - - - UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )((a)), (UNITY_INT)(UNITY_INT8 )((result)), ( - - ((void *)0) - - ), (UNITY_UINT)(34), UNITY_DISPLAY_STYLE_CHAR); - -} - - - -void test_checkLine_horizontalerGewinner(void) { - - - - char result; - - char a = 'X', b = 'X', c = 'X'; - - - - - - result = checkLine(a, b, c); - - - - - - UnityAssertEqualNumber((UNITY_INT)(UNITY_INT8 )(('X')), (UNITY_INT)(UNITY_INT8 )((result)), ( - - ((void *)0) - - ), (UNITY_UINT)(46), UNITY_DISPLAY_STYLE_CHAR); - -} - -} diff --git a/build/test/dependencies/pong.d b/build/test/dependencies/pong.d new file mode 100644 index 0000000..9bafeb3 --- /dev/null +++ b/build/test/dependencies/pong.d @@ -0,0 +1 @@ +build/test/out/c/pong.o: src/main/c/Pong/pong.c diff --git a/build/test/dependencies/test_checkCollision.d b/build/test/dependencies/test_checkCollision.d new file mode 100644 index 0000000..598f40e --- /dev/null +++ b/build/test/dependencies/test_checkCollision.d @@ -0,0 +1,4 @@ +build/test/out/c/test_checkCollision.o: test/Pong/test_checkCollision.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + src/main/c/Pong/pong.h diff --git a/build/test/dependencies/test_checkCollision_runner.d b/build/test/dependencies/test_checkCollision_runner.d new file mode 100644 index 0000000..8caa0f9 --- /dev/null +++ b/build/test/dependencies/test_checkCollision_runner.d @@ -0,0 +1,4 @@ +build/test/out/c/test_checkCollision_runner.o: \ + build/test/runners/test_checkCollision_runner.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/dependencies/test_checkGameEnd.d b/build/test/dependencies/test_checkGameEnd.d new file mode 100644 index 0000000..0d4bf78 --- /dev/null +++ b/build/test/dependencies/test_checkGameEnd.d @@ -0,0 +1,4 @@ +build/test/out/c/test_checkGameEnd.o: test/Pong/test_checkGameEnd.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + src/main/c/Pong/pong.h diff --git a/build/test/dependencies/test_checkGameEnd_runner.d b/build/test/dependencies/test_checkGameEnd_runner.d new file mode 100644 index 0000000..74bebf4 --- /dev/null +++ b/build/test/dependencies/test_checkGameEnd_runner.d @@ -0,0 +1,4 @@ +build/test/out/c/test_checkGameEnd_runner.o: \ + build/test/runners/test_checkGameEnd_runner.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/dependencies/test_clearScreen.d b/build/test/dependencies/test_clearScreen.d new file mode 100644 index 0000000..7f5431c --- /dev/null +++ b/build/test/dependencies/test_clearScreen.d @@ -0,0 +1,4 @@ +build/test/out/c/test_clearScreen.o: test/Pong/test_clearScreen.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + src/main/c/Pong/pong.h diff --git a/build/test/dependencies/test_clearScreen_runner.d b/build/test/dependencies/test_clearScreen_runner.d new file mode 100644 index 0000000..0f74b3c --- /dev/null +++ b/build/test/dependencies/test_clearScreen_runner.d @@ -0,0 +1,4 @@ +build/test/out/c/test_clearScreen_runner.o: \ + build/test/runners/test_clearScreen_runner.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/dependencies/test_playerInputMovement.d b/build/test/dependencies/test_playerInputMovement.d new file mode 100644 index 0000000..a22d018 --- /dev/null +++ b/build/test/dependencies/test_playerInputMovement.d @@ -0,0 +1,5 @@ +build/test/out/c/test_playerInputMovement.o: \ + test/Pong/test_playerInputMovement.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + src/main/c/Pong/pong.h diff --git a/build/test/dependencies/test_playerInputMovement_runner.d b/build/test/dependencies/test_playerInputMovement_runner.d new file mode 100644 index 0000000..c2f9cb9 --- /dev/null +++ b/build/test/dependencies/test_playerInputMovement_runner.d @@ -0,0 +1,4 @@ +build/test/out/c/test_playerInputMovement_runner.o: \ + build/test/runners/test_playerInputMovement_runner.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/dependencies/test_pong.d b/build/test/dependencies/test_pong.d new file mode 100644 index 0000000..de38849 --- /dev/null +++ b/build/test/dependencies/test_pong.d @@ -0,0 +1,4 @@ +build/test/out/c/test_pong.o: test/Pong/test_pong.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ + src/main/c/Pong/pong.h diff --git a/build/test/dependencies/test_pong_runner.d b/build/test/dependencies/test_pong_runner.d new file mode 100644 index 0000000..ae30bd9 --- /dev/null +++ b/build/test/dependencies/test_pong_runner.d @@ -0,0 +1,4 @@ +build/test/out/c/test_pong_runner.o: \ + build/test/runners/test_pong_runner.c \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ + /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h diff --git a/build/test/dependencies/test_tictactoe.d b/build/test/dependencies/test_tictactoe.d index 9b5c05c..f4ff40e 100644 --- a/build/test/dependencies/test_tictactoe.d +++ b/build/test/dependencies/test_tictactoe.d @@ -1,4 +1 @@ -build/test/out/c/test_tictactoe.o: test/test_tictactoe.c \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity.h \ - /var/lib/gems/2.7.0/gems/ceedling-0.31.1/vendor/unity/src/unity_internals.h \ - src/main/c/GameTic_Tac_Toe/tictactoe.h +build/test/out/c/test_tictactoe.o: test/test_tictactoe.c diff --git a/build/test/out/c/pong.o b/build/test/out/c/pong.o new file mode 100644 index 0000000000000000000000000000000000000000..7ed86630a048f1c84e507c672c30c67d0387f924 GIT binary patch literal 15192 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 literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_checkCollision.o b/build/test/out/c/test_checkCollision.o new file mode 100644 index 0000000000000000000000000000000000000000..dd26e7b704226fe3cdef5e944336f530f58280ba GIT binary patch literal 11104 zcmb_i4RBo5b-r&`>s@JO{jFq6Hn!I;HgYGg^pQo#lC{IvVD+IY3A zzI{)&=?o?{p*5Q6*v$|iKQlCGCNR?uB?B|0A%Vm+(7;TcCX+D@ZCyiJlR^u%8!|wK zo^$WHtEZ#&z;t?N_PzUk_uO;NJ@?$Z@7>*#sgc2eVF+Ceu}>@_%?c6UvRLnx)n3se zn#Gm+_3uv(o&Lp{yUtap4xM_d_r=u38tCw1>J4?fjOt%Zy`^sNbV+nowf#CI(T56M z1Rxd;UR{{HI<(+j99l?S9yXou4>`>Me@M%&Wz5&d~Dm=fCI$u`U?pKJt$+b6PpFq=37g9eh zYwE11X(9E_smsRc)WwC=)l<(y<&BRU?}dfbg|gC{{YuN@MWv|glPi5~A@y2W>7I&8 z&-~rFODlw^f<_@CGTCZn-FN9h7pTZ;U_;YRz`=3248x}iFJTdigy9Z1oEEX--e9P@ z02N6F!!1~cPAGd1d}OD3Ar%HA!P|g}z(>4PwK4J>+-0|_8|rbc2yCs!hF;aOtpT+R ziR!9QuHY&?RqgBl0m$G3aJd8@X#+emq~=gS`B$ZG28CEa;UfzMR0gFb()fLSvF;28yuNZ+1UU@B4o1uv*6sSdY&5#;JH`jJo7 z)#E)H=>&mj1RH{w73de`TQsr_0EykcSWQD!%HE@8W1>MSJ6-nxP*FMAig`dXs=lyT zuU#YaEchc3e-1v4qV_4-^G0x?_64ZQF12gdU~5yj>K)J@e#kIB4Oxi0n`oBTMtN=W zF|D$Gy}WLe*G)cVtE~6QYrnh>$m@{2o|V@>gRdYctw#7~M&y6MUJJtT1)~xDBJ`?4 z5!Lo{g&GukO`%qW{@G}`2L=^a=wFOhL|YZQs8EMO|Ekaqg)S-7tI+ET4Jq`dvGRxD z%D9lLHvG1+0pk+H;H`vx0HTT8fogm<5JOIZ@A|>_{NOo1_`VRC!48503ic2jQgAoH5wTXPZ!5bRMGVFGifU=8 z&?1aRV{=_B8mwDe*Jw0_8(_SFRU%loE4n+nGdc_j95jsKm;sfljbb>K1g)X#MKrn( z`aqClMl`BqQ6#+5*L4SoMq);=&M#3-ePJK3sRuQ%y77jFYPW!XNUUz9BZTH}Y1;!) zt6TI4_Kz5}BilfN(oZGWxDm$NRAuaoqDt@!l%QX+tFxD*n2`#p?kjK&*db|pV zh#ox>s}sg8Z8{(~v|*HbTff-fhI(85E(Bmg+Wf-9u{~014bIfsgjlZTp?=JX8{wnU zN`AWmQpNv(p*g&-1L2^!9~P%!d{DO%uJYj+v1^yyR1uHYSS&lbGoRL(7Z0+FP9V$NPFsCwmdQ^{;Py|A07!)2PKTowq^1q>T$xeazM>9!IpxtWYT4Ru(P(u4_*MYdD0@+BZ)Nt9g2 zOS|Ua@JLE2TCB}l?hJ6C5VYiqR6S8LZN~w(&@j$hs8Lj_`2!GaHbTaIq2_%d<5XzF zzEI6~LbZ{Yy*5?Z|{RJ$kCyq7Amy|OV7_Si!UE}7(YfK#iOwEn z2TfEO*(At-g}jw5mBWDQ%(Ul#?|E+)A`Ia#4?{)=I`wpmj2cHJwIBciGmH5QP9Y>Z z)YZM;%F|rH#Ee^|Qbo66#DSXAj%~vX z$gD8Uc`GkUbFhYQSGU8s@+Rk0V3u|SlgFH#Ys*YqT(6=8OQ-;ANF2*$+!-M=EWWI3 z$(py-^!r@JX%;dBM_BY+(KiJ-Ip|okwn)wtXYFLhn$KmD z1I4sA3+tnl96vaDTXNhfe%3x(c|svoVQLPHPR93l-W=bV=uULR+h<*`VDHV^Foawh zpyi}z_QDq1-qRg#&&J!QtEon50>&bksa%l}wCKMl9VZ)jTXorb82BxAq-KnG=;Z zR+*1#mSm>FoMAv|pTNCPOvxmxu#hp`VM$EO^@Ed2`y$MO%ru>ia#@t;S1!s*X}*7` z?^d0b1GWn@4Z8$wI9mAMJLm)RkcMVMZ}E7_SYTo}0S^d9fpmNQU1R*?H; z)|!>WQM*B9|0!@PieOKGEsT7n>4atoqTW34`%+IX#%B~)rEd!LL@VoJ#?EDD)TXSG z^P1l#=+X|E+48|B>4Ng*4-ewN{{6e+TPLTyg6pY;+}`O))Ok-=N1~%U(X~zS^3(@k z7vYHkmp*>SKM&6U_>duse4T@uardplINo5atqn)cz|+Zfz~KiAJU9xGs%yAEuz%%> zeh>hNZFt;-MZ(z$Bg6gEE0*~jW%S%u!J71GRL3O;atV2+pBUIq!i+%-OzOXLg@!hV;7aut% zz^x-*V}0L3{3^I(iPJ;hE~rGXJ+oLgDhi zRP-|WRg`jEez%YJ>p$Y-{r-I3$NS}<_VIrCfAsNw`5Kxh?oZOk`{ng}GG?l-<4|>m zB3})kaaux+*a$`QSE!RbTk-KRl9%TIz@xk50@Q@qCa+45|4lIA1CDOWn$G zeuC^?VSFF)?=wC?{_CHT^nATa`d3i9=Jh&nV*DU}F+kbM_^rfuGrmarb^dGpI*)sq zd>6&xAmdZYthj^mSBalu{BJ1!S;ns=KTC{%obXA;KS2I3Fy10RA7cC<$^Ql8@t_jR zlZ;=lXz@M9-$eLj#*dT#7a0E|oj;8KW6FpBW_&yO`4Qvs2NW!|)KAZs-jCWC{{zBX z82^2xMr>#NXUP9v#($3dImq~K()0U_zmELQGX4r-m+?O%`Oh)_Eb)KJ_+OJhUuL}C zcOGN>+k~HH{3X(_v#8W`V5 z`qwjl73ukH#_y*1bTPh}^dDyYS1Aq|#=lN_PBMN2={d`IgYZ`wzlQvOobiv6p7V_N z$nJkI{zLNfUB)}4|2@X{lf2$jzl;2Nnepc-5B2x0j`L>X|DDN4 zD4xG!e3~4Mk$tV_66uLE{=X=%^gL_%-y=P{nEX@Z{{hBdPkJU8e~I*1jMw8YFg{1} zUt+vP{(qD4GsHj5_+OGg7a9LJ$-m9`b2P3G82>KCH%#q1K5fL;5s&6jwSF$z%;d*N zzMJt!3GZk8qvXdS#{VbHyUq9?Q`|hppCdi@G5%%ZzrgsP5dSsC|D5=5F@782Z_{1J zAxi$d!sLq-|DP~<5--0~V4TUMY|`(LTECWmkmi~5aS}jtWKuG{jMsi1VZ5G4ktm&* zg_AS5yNEbM&$BIM&4n-4iWvap@eq#-1QO_6(dW;Q`YB zONoOPj4e%9S!XZR`0sEu9c4NEc@0h&Xk?cU7$FcRTq5F5oT1Q`!Sk zW!^ujnuI&IeGdLAp}^0Xpc!{PGvw zPv1{Nqpthq=JY|SpR6GJ2yo~k3zN|O*s?`4o N`TreXU##-}{|ol^|F-}D literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_checkCollision_runner.o b/build/test/out/c/test_checkCollision_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..747c52eec47f696ed8bc57d970a5b8429d1d2e87 GIT binary patch literal 11040 zcmb_i4Qw38b)MyM#iK}3{Lv37#?q;wW63e^NSTuLW66{#Qe;AjiY3ODY-hc^+xv;` z_L%*l#lU|x>%g*-T0)G(F4S0Ye&NP#Vi%2_s)=eDacm$!oEDDS8m^N%FoPyWe%e%U zQ>gFFymz-89fP9C0Jk&WH*em&dGls=cF6mN$4BZ6LvS+0E>T6y3UT)8YI#r=2gNF} zQv7E5+IJ^MPyF;Hlk2Oc(Q5J39T!-#c5xn?&tJTJ`SSc5`1m3|kc)`VKM!OCkIwx( zF?!;jOQR>kUyh!boF6?o47oG}iu0ACV&={p%v9})m^j}L+DAXNQyPK~H2A^uVUsii z6kfXggBsOKmE~*E-kyrlFIR>eZSt-6fZEYdZAR^*CzV+zUYfs-o856CaQwhZ=biMi zp>nZU@C#)(nHDuz(Z589dQ>Fha=w~nIr5l@Ok*ALb?e%~!3~t2`rfra1Tyw8JbnT{*#}r;NX=%Qvaeoc28ZG;O4D+!r z9Fi(O-i_s@@uv9IFn&`>H_LLpbe9>I*)r6!)QmNwZL;Z-S6Aa8$q#0$6q7X#PbRQN zmA|qk3yP&>7vueLGe*OVU*CYL)R^O28rPweG&z2Q1g#2em7r6BZ4x9D*e<~a1$Ic# zr@)O8Y*k>V1j?Q9K?z1x&29+}DzHa_TNT*5YAx7#rvf7@dI01V7?oB}D=;QOpuh*3 zOc=s(1@^c9490f90tc4=7k~#8n228s+U6Aa(DLm79#Y`QvNlj~N`c!}4@1pk3f$gx z5Wral?vUnuRe_H*UIlHwu7I_49Kdr5+$n84ufSCN!=T_rH6@J=UH5`q3wl5P{+8vK zH^sX^pec?OF`Rw0i{h#&-Ufig2CKynLQ%?QS++y8N@XWnJfNE7WGm)j$*A(lYPorh zjHlQ$ApRBjwTb34vgLJPLi5+4D4R5Quff`ORNnB2(fR`^^BO!mRv_1DG`wcS{}>{0 zr4+env|(F9|D;e{)%}Y?tqQ%aP^Us~7%M&KIHAzL8l8wXDD^2 z{!O7#g??r%`!1MrP{7)Jc3kg3XZbsfkl@OM%0?I`$86#RV@ zybuK!qTodZR-u24B_=MtMs$%(ifyRL#v5>DR%KUX3*&=QR<#yl3l)qrow7D1M}WmI zRcfAr4X8`iZnywF*PYH2+>Ucqclu6(2hr(ur*9Q&r1VC)e_>IE0_4USRgQg$l6{jX*1dzT4C^Yt3<42d()1lZB1hx zFp-8a)?q-Qe!Up$NI`#Qk7#Pz1#N^_(qS|;DOnV0SQcrz6-475Myw?&(MWA!yIi^) z)W9Ob3_EImALxhJ7*IM)?Ea>%8^LKURf}Mmc0fI{tt2SzRDx~mVPx$jEfv55S}Cpp z=@rrv6Kn+@ZCy#WN-?x`)k1xBFw?7(;-)Tk#x-4I9q6OM&d=-tg`G(lni~2wT@@ZR zcbO3{pqe!c)l`Iq=uTEdS;=QnxwsB~^7W!#EHq(4MBm{R5(gZdnFT zd4xke6&8w_6rLDTUg)}x=ZjS6d#Qq(E`}K=b$sgnkoeU7m-vj zJMAnKREmp*sZ=hVzEbfv?o*^@Y%e9{oRXi~l)NF?m&#!=?Kl~*B-h)QyuLr#pPF&p zOxa6?ZXuXW`CeMoI{H{@TyQRe@%m2i(b9A>kM6T9zmNmM3IM|ztkl6CB&}CsevrvH zSt!E_mOWW;5^+4&F8V;iBJ=|* zqh{j~GyZF{ar{W0a??C|RLaKY{?=R?KMUo$I+*&Q(DNKOI1E!hUT~cQVQI?oz!~Li z)(V6*Heq>=ow23^PoT_5q38%WW7-85gur>$RG1Zh;o}ZS?<C!vvMf#M(jdScn)|M)m7+W&pU*odE3p%UZIUOW&7A!Ipd^f7KrXGhf`oj zvFzp&@`0y8m_FCZB)~SbpG>m?J149xSnZahosAUBb|9_{cNzQI8M+!WmAu}i(v^o18!rpGs;%0T+E#u_Q^rp_my$7Wy$uA!5m!3% zInWah4t*NBG-e#WmGvA494jZpvS#d}^3OscFzha`5IAx|t06C3yW|KTLJ`(Hbd6Jy zSkO}1DkC6t(*b;0NK<`##!=H0u@k2l%;eEc91~WtoQ9`#+9qL@U`BCxvM?--$Jisl=o@& zCl8DrK4Kj@JaO~xeZ$sa={q$KGIU^8&_lG~aKjK;8K5{Lv^jv=WL)@S2F912Rm(@} zog6!GSinx`SZ-LNRrp~kG~s0+lGM7CWmsoruNpXVvC!1*bpn{UevUW=H&vz)T5cJj z$dK`dp;X8?R>lr&nwT+I=@DWgxois0{!* zl5vJYG6KQO5F%Zu&1xcxBrHa2+Rki-OuAprhOk06^qtHmj5Z8x-mu^$U>C=|p4c!s z1zTmPqPVv|l&JsSO?}C}f#jx*idQcKcyq{uAAY_<@Z;O!JaX{5l1ZNbp=5mgW?>v} zHM*M{;-}y}hc^fK!z2%M!!50!s2f_g#0CN2uA-H}|wf=VGAuU#ax2hIB zm~;Evs_oBEy*#*b{l04bIjWb3WUj9}BL&_Ab+1#sJYI8sNwue{D>4{5ylsDV`HBi4 zVl{87kY{f$Y!$=zwwBfchL>oC<-_tu;u%Yy0f)Au{AOyw{9fV%;-wF$9K(}FjTFPf zMvWBHPJt{E6OCM4kjK=FF5nQv)R$KcUVi-6;Q5neVO0#i>T0E!`sQ9xwI5KM`1NJ> zH0RbL{Ktrw7b;NZ`~fJpgP#W>$JC=T@kz*QS^4B5{9i1>e*<{bpMe|`>%yo&ToB z^ZIx}<2h#WA{7(s8COvJh;p;BRuc87%#kcLs2y20}}FhlXwmd zgTy-@^Z%o0brlC?=1-D5`VbR#Pn5*?KEZ_Ym75tTCy|82dUhx%c;1+QoyK#B>Y48) z-q!fnh`&$ce@FaDjem{sV;cV~$#dLtzhm@@eMXai6$1d$ODe03>mA~Ms`39xdT{^4 z#QIl~^M0e~3V)95c~|3KA?X{(O}9^O}6gRC>Oz@$V4+XN{jBJKxs$N0l1!9~!@tut9Oe_G~BIqVXMMPq)TD zN%n8h_@~I8%^E*I_UzI4w}_w6_+x}`*Z4fyU(k5o*Jd>SX0mfm<3B?Ep3-=S@SkgZ zK>a?Y@t-F>-_-csxK6|(=|HQpzDN#oxj`6VDkV&O0@p$9uoV4-!7B@$CQe8qe|Yrp9wz ziKIVUf?G_;15f37E_qJTP6p2LKqTeOXL1TI?~`6x0a=@IrotTjT_{@y8CkZcraWf` z#IP|@p6%w~5;Mx-9WFP4{zNieF5xY>NV;$>orEhtxR!>SNy6|4xFlRyPdgrb5i31T z9{vu1*OGsblmIO_hy2~cN(ZT+|AmpJoy98Ov@FjR-=hOGzkhI#!M6N;ir;{k-UmPA zX?Y`HwL0A2nK~1_j<*=p45H1YITeA&4Yh_ExB? zW&iwpRU>YX_M=MO{*M8t>%^9SL;Ww)CPtSnf^4n+J9|)zx@*83`^WEjz5jcFL!E3V z6lJK&g4+Yezw?9SgFR>uydi%cyzLx*{$p2rZcIbap$?bXl*XkRaJVX~beYCLg l%z--e_82Dm+6PKJM~99^&0!jpHq~l>k?g;K$|6Z`|G!O`v1R}O literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_checkGameEnd.o b/build/test/out/c/test_checkGameEnd.o new file mode 100644 index 0000000000000000000000000000000000000000..1a23238d25487be748aedb7d06debc4349798264 GIT binary patch literal 9912 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 VlB7WH({S~lBmWPV)IK@>{{hhhsviIV literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_clearScreen.o b/build/test/out/c/test_clearScreen.o new file mode 100644 index 0000000000000000000000000000000000000000..53e83a8803085c541dd97be11e26a7c226ac7efd GIT binary patch literal 10104 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 literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_is_Valid_tile.o b/build/test/out/c/test_is_Valid_tile.o index aeddeac346154c937d2cd76ff9bf05cd06cf7578..ac4d5d3ad495fc54bf3ee1dcc05c98c852680e99 100644 GIT binary patch delta 3808 zcmZ8k3rtg281A`%r3C~5y}ekWr9g`!wZMGLO#xRKIGy;4Q)8@;ISo{#Kh=K7sbu#V2O|E7I9{SMUyeNFwre`o0=_5cW&>0==DFz?Y-yw{{QW%qGqz5?8DlU=O~u-D zz3DthqnbYTYx8QHx8uA9=V$$f5n=zO5p`hZlm*M4*7Fg))i?!v`2Mz(e^03|K7eEIhDel-|UA!ijo^Chd@>B@B_8k7=b?~;;67H0G0b8uR4tQkk zVedfKC|NnemDHgMrSfCoi8jtcD`)$4Y_g6`1y8!HOvY@f?`-gKcB_un`?iIBzt^$) zxOc<83f8MC>wTv|h%49XSiNsO*fV71w2syL_Nc!8$2wN;n}VHGPs4SUmgsQ3+6o<> zqO;$n!}a-=$~j(gf^FxEWiwaM&n_{ZjE zry$qvR_39y3$qs4j)xk%th|IelL`AgwAy9KVua7^)4}G5h1kp_B@U(DAjTf>WXj5F zlxiSs8Tc~gv~*+-5q5|K&6)Y^3+Uhy;xXAxjE+KxOXOjH|0HZo3}ia;l>}_Cf@e|a zYFOiNE8_WHOxUGx(ov>dMd@0?u7qJ(vLY1s5cXRr$#Sy`P?IIIYN*e0E4y&HZW7D2 z(8YBaMtMls+rYAARMny@K|7ZCg+#(0I`+0eveeTiOv!d{0C z9_vR$1B5kTbw>&A#rZXY&jEXmtZc_jLWHe^O3r?bi}@d6Uw}H!UdB7lgqu_J=olIANX8nZpvEclhjcx^egJ2jZe$<3ju;R{}g}8_%{*YG@doOs#L}I;1*Z}y(L}DE# zYzXT)Mq-JVg0G0Z7dmvYekN=HLb_N{SfA)gqj;ntF6t65CU#=)h0450UB!eAKwVy> zE+1i^;9tgTB$jwN@)LV6^y*?AAZ!4Jjg7=QPuO&fb%Dgn$9iuOdoR?Cjnp+j*Z{P0 zR@@t-`1_(dL=P>{HCFZ?)Ih^z!g_HRRS;aavz}>f&;3E1Kf*;ZB{f2ju5K9>T z0N_dOBMu^=HiC>x59g zTp{j1{*D|TYLV(8_JEDxVjmV0T!{{5x^u!G7Zu~in=Q7m8vlfX-Q&hfx5J+t&^^v2 zE-fCH`8KXtf(a@-+{dB$#3sRR&v@y60(5$&Nacwj6-;G?P+Bm>v^h~T`2*?;CUUHk zW2@D-L_T`JR5(E@PJ`0IDNAgspg8UT delta 2893 zcmZ9OZERCj7{_<+x|eQ6=zyJGI=7W|eHmNtDy-|Gnca+F1=I~`*arzqFcA#lC48{^z>9!*y89g4JU6**&;R$F z=l?wCoaWw(>poerBV=5+`kR&tfi5G^pT362LaBeL z{|Ez1Tnk+J@oQ!H+O^m?T?X%j#iAy?VZsfeEZ}Ra7W>m1CpH*}Rz~q zJmpzOdX4A4z}wTl$8oR67%svQZ>_k57H^$+pgz55X!9JasW+0^<}YPmRV0drgk6W$ zACcZ|*t)K}Ud83&FK8XRYe!L2?Z!WKH8@l2#r~>N_1lH5o{5fSZ>@h5vVK%-K(=0* z`^dzha!yhAgGcst3>iiLETB~d)Ig6->aPH3Wxu*(fq3`+ex&Ic> z!nq;1r%Ut2VtWC&?=o~vm+&-%goUmK%Xy39O!Rk1>}W_Nb>0Pbf}#rb?Ns+q)Mp>l z$Ec1?Os|FMx6E@y4>CH8KEF&JrxW)hqa&nWW%|n{ws4E-ab)~bT*Ro~5_{lmw9Hz{ z5TdGe7e(l4lx8dCd6H2dQjOBMQi?r|v&C`Z<)OTmssR191ThHDyg>_{T!DS z9ikd^XS)6j++mqKPfONBQJUV#9b|Pq!Sv6_V-eGxSRIz;AZ6Rc=vNp}UZ+Xj$LKG# zhMzJ$Oyl!Rk3lp^b2(L#Wz>tPqDN?LA2J$3pQ0c~Cv~a29znmN@6l>cWwa8RCYjto zbA627COydX64G0kz68D*mY9g18B#36a`k%@yJuKtH@UB8@floJk?-Q3iqTJwFIdbo z=xUbcO>#WT=pw9EbePud8lz`0&}^yvBh6AQ#*Jpne3dGhL%XV1X$PV$me__q^|=!L zEz;DdWEYEEg-pvFGeGLkjCR8pk;#>`LpK=BJz8?t-=ya@G*`NQq?A#Yx~ecz5ovCr zYyn17II6t%>W&z#%^9id1=6*beyqLD;=^!Td9TfkrqE^Oy$&*}PxE2sr5~-|vG_0s z3cRi`n!-qdS26Xc*W?3z`bpP)Md;t*WAR}`Tl0M-7)_zCHQ!esqgQC3-e6uI+e=%t ziN%MJDe(G;(G;=;Uf(dfmCo=F%&VHb{$TN8^hEQ0JzzA2l%o1eC2V60K!DwF0UvY@`v8NmxW3h^OojvpVV>lU$8TTtO7VC5_oM5Z1$a*JZUVEd6 zU`>0cb2I6KIME(g+L+QplkC_7=!myF&q{mLJU(+<+;7~Gx%bChF~6$OU5T-Hr_?!38g)+>uM_f#Cw zpXy%$>nCUhw)^k?>2~WEL>Rir!*#|n-C&F&SO!L|*iLF8)BRD`eu#e8;e)^81 zD5Ir#vcBPCz8B&t7ai9_EhZu;&~zYms-QMJjN$#+xKrHs#7EvY)YMCW$dCV`I zK-h5%YL1fWDe0b)6cLQlr$8Kb*c`J4q}Kp4z0{(#qIs=$a0wtrkK~Hgk?THddC&`k z_DLtUh8OT~$d4QHmH@TYgtex;LFmv@fk`dYUmS8J|KpPM4B<;3hrhT%#7}X9PpTx8Ctj7eHj9Q99m24VkRhrKlQpFV#)XWy~ zp-PxD;3^%=nb4-&ITKR~-+YAD6fb?urEx?d%o}(>p+np)^C5Xd+Plq}{+^ooq7=4& TF2=r)w7V#kHAibWZ`S0$9x}Ea delta 572 zcmX|7F=!M)6y5*V%Vp239-FYYo9wX(m}I%V-B?7<9Jt3J3WCULl_DWQ35tzkWm1SJ zSXn5qO%bqBxgs(_FnEZZMGC=GLBUoy3n8UgIkS7ohk5V6dH>J+nXQ%n(u;um!MoZo zD)u!Q%ROAkg*#keBQ&q zFrjHI)LYywVWXb#*;(w?6XQ=Q@3BEqgI8zKj1tnZ9<}HZK13~kYvotP0dHGq#tH9R i*pT#49uOzS-e`WnYtUT7xL?Ut2W_b)gIx7Mq5mH_5PgXN diff --git a/build/test/out/c/test_playerInputMovement.o b/build/test/out/c/test_playerInputMovement.o new file mode 100644 index 0000000000000000000000000000000000000000..0c89b5eaf74fc479ad2bdca61211a1b8f1503638 GIT binary patch literal 10048 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 D+bt}K literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_playerInputMovement_runner.o b/build/test/out/c/test_playerInputMovement_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..870cc108415fbb7b4be46ed220ddb284278fc349 GIT binary patch literal 11064 zcmbta4R9PsmG04MtksWY{rE?+h`k0Su|u>gIr4wv$d)BbAX`doC2c;Jk#M=g!70K)Q9$l0ggYu{AY7axaFD>AE8Jn; zd;NNM)Lu~(bk$Dx_r2GzU%&pDo|f(z8XK-L455-Cc8Us8tPoFJSt$=taX_pTE5z%| z*1Rz}a^k1Yno3?NjZ})K4xdw+)r%Lf`h^!RUAlDPMST1XK9Gy3Uw9J82p*Y#H8FDH zu8Sil!e5S@n7lA@atLyA1d12RMaj&cH560vE8^mXKCnLWksHVne4xYkoedkw4KR4| z(s!$f8>HuJ(BJN|)BjTLZnVl*mV?=mk8DEgBPXR>C!W1EZC)CPEDkY%$*`d2G61NsfJ8uFIhFdyi| zF3IwPU0802H^#4o{+m*}iORJUE;CNqQnb=w#+uMKs=DNRtFV(C2eXCLNK*G#36#k4 zBdfDum^^zS-WNAx+|BrPb!bZVIlj4mEoza=@ht>eB-l!zLxODt5)y1DuwH^41bQX7 zp1@WKZXh7T86O}pA|<;BOh~Ysz-7=R}vI6}Uim0&7<3mAAt4oQ7o=iQ*!jM0z3wRsuljqy%U zXpEyEhNF*u@w{q`w*p|bflBf1P$b=~(rp(lWb8z<2UH^swq!m;j4Yq5l$%!5e2P5| z>W{#$RWzNUn%9C0O`nG%RcY#4jnXzWUU$FI@?Fw-9-i&ESBMUy?s+5rUYLO^NaY2i z73(tkfkbgB`wxj)B>JI59TL50tni@Wghc;obRb$U(Rqn_CHj#>TP6CjL<182M4}Oi zUNM$_9bB0Zw1Vn>Zmj)2xE8|>J_rs&k3R~T6h2kcj+_Ml6b1hr1z(MVr=#F&QE)B_ zo{?ZB#>ZG<;?k?f5K)qBT~#(-hbyz9y9#R&PYk3Ea^ruB;!mMWvk2W zHxgfwtXfpkT9#Z>t|N?Af-O@#Vj0G7o0r0q4s(d7!h9i< z!ec|q3tiXoe31%$FO_%Gg)rl!j&I#;ZSLBvnX&mpkWAyyjZlPa!0d{L=DNqshQBvE0@Hjfe!E$J$c(>c z){h;U=G-)Iznyer^Z#fz#2pVmt`rK9+Z#{b6y+@gNwbY}N{dH9Bs2 zj-9b)0#BgMaK7LOD?M%JT~LDHSyN$F`1yA^puM+Hnz9Q+$7h^$FjxxVm}dFYB`-jg zNgSF3fj4aD3&L|Cx@fLU4|(1JRGqfn47Cb%tSQ^a#!49{J-a}4Pbr)NKMEx`m!Jn8 z31RqLCzAl*(0_K#3hbP)vf#B_iZ(V}DA|$j!Ss>V(2$ia*g3!K12g!xOge%a*BT(e{o)fN=u2A`<-3oLll7XbC;XfQ2r1NV?=X z4n&QjZCSH+LAtw82^>4-tXC{KWACH&yS(j|!_$O2d*z56Eyf(vI7IUiLrOChx)Z{R z5OT*F&mswn)|#<1n;@fMqEQo8=!U+N*@&|e7l7Ke;7wo!xC!Ax%h^S;E7u{fewZ{N z>~ORVWqAeSMyhr<=T5%BnjAF;4N@O5z(Ie1@DqOSlb8SlDT7{^;|FU5`RYaK;fr$#+-ecOnmIG5LF>Saf5q>fceRe}?6B zd{y$j75P&vr=zlx*PJ1RH-YSjET==Zk{4xt7G0J>*CA%Vx^$TUh*;H|E96x)7uJeV z^cQk(0SIr=GO3QtN#+%%m;twg`Au9y@$#C$5CQWP11`sCv>8OQ7@jt&q?mRVR4Or1 zuZj!um>kgs9DzSIx^u7U93J2>%bjqkZ%Xld}1Aq)Y;SJi7@0okjQ` z0gv`Od1|Q-%l}$L|5uCf4NzbC1}c?=``#bkiRIgvHho#-J#67yy1a*8e)f~hAAD6+ z&Vkn6vGLuz#;oz-;R8blt%JLEj}2LHh_}5xrDHB0#wTYMyc_X23CBx1z{}UzU`c+d z;HE5hTH1IP>G;tB`S~0186?rTxel3(SA&=J_ipTYg zsTO{C74U!3%%#IfLP8$D-xU8bBq5<4{B%b-roWU~na6z)liDAYez&9r&R0x2|7A&+ zd9_Zyrtxa7;I%3yWoJx6@qNzGKlDZU|5AjH_6z4FCf&~eNSgW?wG-p{j`pK*Ym4w# zfK0X9%{qJC-*%5?zf!uJ~!z#~5P5=9wbAfu2&od`|-$zHcxoJNTZ#q{dD0PjY__ zNO4&o_X$k4%*y;1nZHNlf57}njenl;0~(KK5KL;`Du1rxSMB3cTyFPyjt}men3VqO z%>PuYO4Z0E}wKg@A^M&s8r|2>UY^X5g3{|@{AGmW2Md{N_n z!um^i9Mm}OWWG(~ZN{rLzQFz6rSTh?AJh1iY(J;*$5?+(<8NWV@6-5K+0JQ=e}(Nl zq4Do#{EWt%Z2tv~A7uQp#=n)v@i!X3na3-}eyMn#XT4U9|8M5kYCM}4JsSTs;~g6R zCB~x~-^Bjhs_|EHe;tj#i{s{N{9)FApT=id{~?Xv!up@r_(QD!q{dHkhrh1zH?jZ! zs`2VQcV6QkWjjCD_}_7y-_UsVUa#YJ)Oe|L!*b@)Z9EUFbcLq>cWnQfh`u^AW1Z_X z{ij)fAfm6%La0Bg=@%IvjOb&CJ2{>?P5-ytPgm0q&^V;~H2q1||G37##PJmb_g;-3 zVEnMgtN5SQcr_o+YrL9QBI(Z+;l>m4z?1p3DtS)9P6p2LKqTpwG&uzq{YkGR0ZB8? zRG5Q55M@iCLuGqv%5!Ex4J$L{*=`OlGNT;c_o^z;o=B!kMZ7T=Nf)lLlW_G1SJ-en z$r%0|mxRmh8OMWjwz72b&OQ6{vIJDeF;w3@%Gv-I^uIUquq(ClH?7iFg7bWU zUeA*N_ZY0JzEANR5YtugL!OrxQk3r38)9CkuLT}${;Bo*pf1{s&Q*XywXe==$YIjk z-&uu2y>qO%NeirAe;erH(j0(aG{yNt@ggrqj31iPy$xj5{8txqsy_OUCUyV+0yy0!P~t4N-=+}>^@435s zPC~1M@>3BaXhJIz)FSl{K^0I-3o1Va0zm|d)B+L^TGRpsN?MSh1W0Ks`rgc&^Ll)i zs;VR1?tI_8_vX!;H?zBQ2V>oxMViKB(bxtyfh5b=O`(Z;8?Uyp*=!d3xN_m=gYiS} z9NBfMKsA2-`&G&K;o^%LK_z}DcE0K4>DY(G08Yow`H{P2@Lc?s*oW~$ufz|Xeh&>F z26Vjrp;=IUcs5)fK{9^mnJ4g066f*~bAX&GaU^~?c0L(jDLQujTZIb#7n z#xh>_T<-JKi?Cj_sAe_Xe0^}~f?qLSN|--T0(ZFK7}$(!eg0AlDxCC{%*Hw>q3i+p zaivPe4f+DUD}V~Xk3CzwIDn(#YQ;+{!$=CySc(m80xYXSD{)p@>`z;+uu~jf_!5x5 zo8j^n{CFSWk;X0ii@2u0SlqN3Ai?}a+*|I3|9ArqN!0I{hxM6(VBjJMi(g2W@p>^2 zmp{O75$6v7r!|8XeaS;^gVhoKX}-!s>SI`{ZY zpeeAxN5c=SEa9`wy$`gMEea&}Vi7cu0WV+_#eg3>R1;9;vInGWEvw?j4prO?RFF@$U~cA&s2`rFm(AsQ=KBqZKLNjLR`vkb zyaZe*dm5@-rEK0@Y^^CN{t)b!9MiPRAPZ};uUY(B&95~crk>X?OKdf7E6l zfI)=>`jb|Vs8OId1X?c8n*y~8^p-$v0{vN_xIkyM@@K%6KE_vV$p_jZjEfJ0R}T9C zL=(3I(fI44TI2+H%nKg(f+xJ-NiTTH3r=~#(*oc&&9rj94`KBfUZ7~-|0Q%>XE3dj z?|4N=ch?O8sN!49(Il(qQl)vtAXh_0(K4ez3)8B#iz;e^zKVGj)mlwSRUK?NbC|DU zO>k{+b+8Mj(5Go#wHj247qhO~C|LDh$b!KQpac7PtriRlSrjQL_o%jlXrNZ}Rd^*z zNf&mqnU!D$@*8j1QP~o(520-qHvHKA#)fqbu*N1lf)!K??Z{SA2Cptd(NX zoMT7RRw9#2n$dl&EqY6HIFq(=`@$(J7adBw&VL~ib@z{%lLduVCOs5QB@$B&ua?vFZlf-xM0J_e(R zB=EJ#G2N?2$08#bBwcsXDIjzgFzgEXHduz-Ss~`Q$)q_9byx@7uny07)3%I^10-a( z0Q($h2Wd+2LW`WqMby zZkt9@A9HPnGM(v+$@IjCk+whxLZA=jhMAMT#zbjnBx}1!3}WE=UAxmrX9UPoG28A( zu@S>ca{C~!4;hZh279^&cIcbC`un=ucj)~CJGx_fJhpx1ih?bJJ(uPYO za0RXCiEPqLjJw_rH)nH0;CDU~qu$ws$+OI42*!ltrXlIBkz)EVjMmC}Ep=wHh9@kL zCIy}A>KSNiVHrr55WdJ28rdMoKo1!s<>bSF=JZ6)hB0Jvqn0qBSOK+`W|kBqDr6W0 zAY^(rlf+4cWQ4l7%US6&9H*d9+$EUuQN!K?S%A4_F;9kcrL3%Nf{z#`oadZH(Zf;d z!?tPKro&T0*T;r*B;pH2WY?8L}=*yF-2 z&7p8A6dpF5{Z?Yc&RW@=6V6$C(^fL<8jzL_G&(M1aCpqlx@N-7+F{rVFn44_B4aos zvN@f#pdm5r!D4qxTVpv_H!>N070l46;q1}(8jg-3ONu#|lr{YWz1!Ni#B|8Q{A}<9 z1cc$E<&T?C!DPV%h9n>6D+1?@_96&3Pam0LJkj$L$(LE7wA~bM-zIZyv+2T=!n&tz z1ojMwxJU_}Y3Oh|Y3fPCHJCom<0!M75<}Q%Vjlm|6Rqzu569Sx#ZC<5r-G@G4pT-V2pB+f0LQa-~>&sjOg zOs>H6#&sjNWY;w8&Dp&c?9C}FWsGt+#riGm7X?Q+2K^Ou5qOA@T<7@YkyC~P?!iUn znHV{JqFYazO}pKr6RnJG*|cd*sBv&8XSq4Cz`{*Aj+zdvSRPs499gkU@bF#-k2?H5 zfTt?1Nqi2TL=IoivGDhIxNFyJW7@tdZC+VP;0Qdy=L3g7Eb!vQSgfMzTSc47XLNu7 zKx|uwJe29$cZz25k}LI#ZWRWoO}#m$d+Fwh!Tj7&rtY6`GVn|0>1j7YdJ`$5>8_Ti%}+h<``nQ#f%@WL#w&j#IxMi{`wY z4a9%0@I~amJQ|jEPLTZ>)Gm3so@x|+0r}ae@E?<%W`%Djeyzg)ig264ze)DDDtwH_ zbEU%HNq9)%-=p}a6#iZE$5HqbgbynGPLe;Y@Kv-pjw$>ClK+Xq;|UO!`xSnnpxNUJ zzl!kl3cr-%b4KC!kU#Gz{5a*q-xXdQ1T*%9!sE#_mNL?l`EVo2H7NWE!b=qXNnwVq zRQOfof1AShQ{1*Hd^6eks>07Fe^LtnI$>AgWxT$r@JGqctqOmN{P~{3%YEk_g@1+c zg9`sP*?&smU!-yUPT?=7d6eUj@n1>&Sw;Rb!k;Sqy%c93tpjQ2ZIY`}_>&~RP~qRC zIDARrYlvT=@YQ60hsu-vq{2T)b`C21e6n*?;r~kfoeKXP+5f4+f1BiAQ1~s>@81;u zA2eSdDg0cD|7Qx{LGu4rc)6Z^)Q^n+ZRBUE!kc8LQsJ+merGHE62kKoelOWytni-@ zzf|GR6Amlz6-%jz_tMD%o zzERC{71xps_+SNw3hmj zdG$QWhZO#O%B!%#e}(Lxjqh za7gk! zHiegd?pAm?UKVlokHUcm++ADTM`X=5Ge*QU_qi;>Pevj`aL^awY|NWwP0|9gO~4fze;XZ?oX13m zg5Qv6N*#X(aE1DRnI>e1(x^Z-IE{XUI$93x-lFRFL1Q8RTNeo}sgM4nN!5ScXH=W0 zc@+shtTZZ+B|)}O|0C4D%oFS%L#g(k0}gFUKcUJ?9mV~-N@C0Y<^5WaE~I~=O4z~t z@)oHl?}wmK*1dAClD?P2x+;4IaCnO3-NR7s4C#juc#0gqr0$0b+En$=lm0#_NOx8L zUf>JG|5}QFob)jMXj1CSc`4L4s*KTr#d#VqZU^ue@f7`1;MBDX6dR%aV;q5}sPV&Y Q3h6&f{y*x`#j2|RANoDb+W-In literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_pong_runner.o b/build/test/out/c/test_pong_runner.o new file mode 100644 index 0000000000000000000000000000000000000000..77ffebfcff6b8cf3a37413281d2202974b940a5a GIT binary patch literal 10992 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 literal 0 HcmV?d00001 diff --git a/build/test/out/c/test_tictactoe.o b/build/test/out/c/test_tictactoe.o new file mode 100644 index 0000000000000000000000000000000000000000..a704cef39b432ce02f8192860fae3f3a5397f402 GIT binary patch literal 1488 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 Hdj0iqjn diff --git a/build/test/out/test_checkCollision.out b/build/test/out/test_checkCollision.out new file mode 100755 index 0000000000000000000000000000000000000000..4a9b6f9e79345bbdeec7b1a17e35d7845fb29e84 GIT binary patch literal 70360 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 literal 0 HcmV?d00001 diff --git a/build/test/out/test_checkGameEnd.out b/build/test/out/test_checkGameEnd.out new file mode 100755 index 0000000000000000000000000000000000000000..476ee5ff04506f137ec409fbc01a8d06ed61e3a9 GIT binary patch literal 69960 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 literal 0 HcmV?d00001 diff --git a/build/test/out/test_clearScreen.out b/build/test/out/test_clearScreen.out new file mode 100755 index 0000000000000000000000000000000000000000..2429c48be2a5cafc57ed0c6ae9ffc02f4094b2a3 GIT binary patch literal 70104 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 Qm4Ezg7V}}RfOl*D3udO~lK=n! literal 0 HcmV?d00001 diff --git a/build/test/out/test_is_Valid_tile.out b/build/test/out/test_is_Valid_tile.out index 38aa2788d7360501d5442b9e0a9a2f80490ef4d1..736e2248cbb9fc6879e98af83d11035bb0217791 100755 GIT binary patch delta 22483 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 diff --git a/build/test/out/test_playerInputMovement.out b/build/test/out/test_playerInputMovement.out new file mode 100755 index 0000000000000000000000000000000000000000..3b9604e9bdaad66b7b350a4093c3312effe95fb9 GIT binary patch literal 70048 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�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 Date: Wed, 7 Feb 2024 09:27:34 +0100 Subject: [PATCH 291/375] refactoring: changed magic number 48 to define --- src/main/c/Minesweeper/minesweeper_start.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index fedb818..924e5e7 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -14,6 +14,7 @@ #define EASY 7 #define NORMAL 5 #define HARD 3 +#define OFFSET_NUM_CHARS 48 #pragma endregion #pragma region Funktion_heads @@ -94,7 +95,7 @@ void game_minesweeper(){ int bombs = open_tile(&board, x); if(bombs == -1){printf("You Lose!"); getchar(); break;} else if(bombs == 0){open_empty_space(&board, x, 0);} - else{board.tiles[x] = bombs + 48;} + else{board.tiles[x] = bombs + OFFSET_NUM_CHARS;} } if(t == 1){board.tiles[x] = board.tiles[x] == FLAG ? BLOCK : board.tiles[x] == BLOCK ? FLAG : board.tiles[x];} } @@ -242,7 +243,7 @@ void open_empty_space(Minesweeper_Board *board, int tile, int index){ int check_tile = is_Valid_tile(board, tile, i); if(check_tile == -1){continue;} int sum = open_tile(board, check_tile); - if(sum != 0){board->tiles[check_tile] = sum + 48;} + if(sum != 0){board->tiles[check_tile] = sum + OFFSET_NUM_CHARS;} else if(!array_contains_value(board->marked, check_tile, board->height * board->width)){open_empty_space(board, check_tile, index + 1);} } } From 8a3292f2d9bcacc1007ab459b4ad045d560ed023 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Wed, 7 Feb 2024 09:39:02 +0100 Subject: [PATCH 292/375] refactoring: replacing more magic numbers --- src/main/c/Minesweeper/minesweeper_start.c | 35 +++++++++++++--------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/src/main/c/Minesweeper/minesweeper_start.c b/src/main/c/Minesweeper/minesweeper_start.c index 924e5e7..a0f0d58 100644 --- a/src/main/c/Minesweeper/minesweeper_start.c +++ b/src/main/c/Minesweeper/minesweeper_start.c @@ -15,6 +15,10 @@ #define NORMAL 5 #define HARD 3 #define OFFSET_NUM_CHARS 48 +#define OPEN_TILE 0 +#define FLAG_TILE 1 +#define QUIT_GAME 2 +#define ERROR -1 #pragma endregion #pragma region Funktion_heads @@ -91,15 +95,18 @@ void game_minesweeper(){ getchar(); if(x < board.width && x > -1 && y < board.height && y > -1){ x = x + y * board.width; - if(t == 0){ + if(t == OPEN_TILE){ int bombs = open_tile(&board, x); - if(bombs == -1){printf("You Lose!"); getchar(); break;} - else if(bombs == 0){open_empty_space(&board, x, 0);} + if(bombs == ERROR){printf("You Lose!"); getchar(); break;} + else if(bombs == 0){ + open_empty_space(&board, x, 0); + for(int i = 0; i < board.width * board.height; i++){board.marked[i] = ERROR;} + } else{board.tiles[x] = bombs + OFFSET_NUM_CHARS;} } - if(t == 1){board.tiles[x] = board.tiles[x] == FLAG ? BLOCK : board.tiles[x] == BLOCK ? FLAG : board.tiles[x];} + if(t == FLAG_TILE){board.tiles[x] = board.tiles[x] == FLAG ? BLOCK : board.tiles[x] == BLOCK ? FLAG : board.tiles[x];} } - if (t == 2){break;} + if (t == QUIT_GAME){break;} int test = 1; for (int i = 0; i < board.height * board.width; i++){if(board.tiles[i] == BLOCK){test = 0; break;}} @@ -168,10 +175,10 @@ Minesweeper_Board initialize_minesweeper(){ board.tiles = (int*) malloc(width * height * sizeof(int)); for(int i = 0; i < width * height; i++){board.tiles[i] = BLOCK;} board.marked = (int*) malloc(width * height * sizeof(int)); - for(int i = 0; i < width * height; i++){board.marked[i] = -1;} + for(int i = 0; i < width * height; i++){board.marked[i] = ERROR;} board.num_bombs = num_bombs; board.bombs = (int*) malloc(board.num_bombs * sizeof(int)); - for(int i = 0; i < num_bombs; i++){board.bombs[i] = -1;} + for(int i = 0; i < num_bombs; i++){board.bombs[i] = ERROR;} return board; } @@ -222,7 +229,7 @@ void draw_minesweeper(Minesweeper_Board *board){ } int open_tile(Minesweeper_Board *board, int tile){ - if(array_contains_value(board->bombs, tile, board->num_bombs)){return -1;} + if(array_contains_value(board->bombs, tile, board->num_bombs)){return ERROR;} return number_of_bombs(board, tile); } @@ -230,7 +237,7 @@ int number_of_bombs(Minesweeper_Board *board, int tile){ int sum = 0; for(int i = 0; i < 8; i++){ int check_tile = is_Valid_tile(board, tile, i); - if(check_tile == -1){continue;} + if(check_tile == ERROR){continue;} if(array_contains_value(board->bombs, check_tile, board->num_bombs)){sum++;} } return sum; @@ -241,7 +248,7 @@ void open_empty_space(Minesweeper_Board *board, int tile, int index){ board->marked[index] = tile; for(int i = 0; i < 8; i++){ int check_tile = is_Valid_tile(board, tile, i); - if(check_tile == -1){continue;} + if(check_tile == ERROR){continue;} int sum = open_tile(board, check_tile); if(sum != 0){board->tiles[check_tile] = sum + OFFSET_NUM_CHARS;} else if(!array_contains_value(board->marked, check_tile, board->height * board->width)){open_empty_space(board, check_tile, index + 1);} @@ -252,13 +259,13 @@ void open_empty_space(Minesweeper_Board *board, int tile, int index){ int is_Valid_tile(Minesweeper_Board *board, int tile, int direction){ int check_tile = tile; - if(direction < 3){if(tile % board->width == 0){return -1;} + if(direction < 3){if(tile % board->width == 0){return ERROR;} else{check_tile -= 1;}} - if(direction > 4){if(tile % board->width + 1 == board->width){return -1;} + if(direction > 4){if(tile % board->width + 1 == board->width){return ERROR;} else{check_tile += 1;}} - if(direction % 3 == 0){if(tile / board->width == 0){return -1;} + if(direction % 3 == 0){if(tile / board->width == 0){return ERROR;} else{check_tile -= board->width;}} - if(direction % 3 == 1){if(tile / board->width + 1 == height){return -1;} + if(direction % 3 == 1){if(tile / board->width + 1 == height){return ERROR;} else{check_tile += board->width;}} return check_tile; From c1cebfaeaf6d70c68f4f6a5b00cc7286d08bed17 Mon Sep 17 00:00:00 2001 From: David Moeller Date: Wed, 7 Feb 2024 10:15:54 +0100 Subject: [PATCH 293/375] last commit --- build/test/out/c/minesweeper_start.o | Bin 23696 -> 23936 bytes build/test/out/test_bomb_in_array.out | Bin 76336 -> 76496 bytes build/test/out/test_is_Valid_tile.out | Bin 77952 -> 78112 bytes build/test/out/test_number_of_bombs.out | Bin 77552 -> 77712 bytes build/test/results/test_bomb_in_array.pass | 2 +- build/test/results/test_checkCollision.pass | 2 +- build/test/results/test_checkGameEnd.pass | 2 +- build/test/results/test_clearScreen.pass | 2 +- build/test/results/test_collision.pass | 2 +- build/test/results/test_is_Valid_tile.pass | 2 +- build/test/results/test_moving_snake.pass | 2 +- build/test/results/test_number_of_bombs.pass | 2 +- build/test/results/test_part_of_snake.pass | 2 +- .../results/test_playerInputMovement.pass | 2 +- build/test/results/test_pong.pass | 2 +- build/test/results/test_template.pass | 2 +- build/test/results/test_tictactoe.pass | 2 +- 17 files changed, 13 insertions(+), 13 deletions(-) diff --git a/build/test/out/c/minesweeper_start.o b/build/test/out/c/minesweeper_start.o index 90e6d3f08937520f8ecb4c6072521866ef6fb22a..10c6f273f0d0dc3608171f36e03cd4c32fa4f589 100644 GIT binary patch delta 6514 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 KkHC1t^#22Tww@FK delta 6164 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 Iy}?oc2Qe25Jpcdz diff --git a/build/test/out/test_bomb_in_array.out b/build/test/out/test_bomb_in_array.out index a8ba57a86c3d2593620868fc6f6bdfe20ffccc3a..a2618c0d3682dd75c39b5d8ac4fba7d4b3cdb25f 100755 GIT binary patch delta 5450 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 Fe*rND)#d;I delta 5249 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 F{tFAZm23b2 diff --git a/build/test/out/test_is_Valid_tile.out b/build/test/out/test_is_Valid_tile.out index 736e2248cbb9fc6879e98af83d11035bb0217791..4105934d90609f9e01c32f9164495e5d40ede914 100755 GIT binary patch delta 5578 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 Y7JKk%Hq3%Sw`BsZx*^rQXac1E50r}GzyJUM delta 5394 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 Date: Wed, 7 Feb 2024 10:07:38 +0000 Subject: [PATCH 294/375] refactoring: aktualisieren_spezifier --- src/main/c/Pong/pong.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/c/Pong/pong.c b/src/main/c/Pong/pong.c index d962a4c..190f4c8 100644 --- a/src/main/c/Pong/pong.c +++ b/src/main/c/Pong/pong.c @@ -34,11 +34,11 @@ void drawField(int paddle1PositionY, int paddle2PositionY, Ball ball, int score1 } else if ((j == 0 || j == WIDTH) && (i < paddle1PositionY || i >= paddle1PositionY + PADDLE_LENGTH) && (i < paddle2PositionY || i >= paddle2PositionY + PADDLE_LENGTH)) { printf("|"); } else if (i >= paddle1PositionY && i < paddle1PositionY + PADDLE_LENGTH && j == WIDTH) { - printf("%c", PADDLE); + printf("%s", PADDLE); } else if (i >= paddle2PositionY && i < paddle2PositionY + PADDLE_LENGTH && j == 0) { - printf("%c", PADDLE); + printf("%s", PADDLE); } else if (i == ball.y && j == ball.x) { - printf("%c", BALL); + printf("%s", BALL); } else { printf(" "); } From 0cfb1c8704a7a721f30aa43b226388a11c6c2439 Mon Sep 17 00:00:00 2001 From: fdai7775 Date: Wed, 7 Feb 2024 10:14:31 +0000 Subject: [PATCH 295/375] =?UTF-8?q?fdai=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- team.md | 1 + 1 file changed, 1 insertion(+) diff --git a/team.md b/team.md index 9054457..1c481f3 100644 --- a/team.md +++ b/team.md @@ -1,5 +1,6 @@ - David Moeller, fdai8032 - Julia Selig, fdai8040 - Ariana Ginju, fdai7775 +- fdai7775, fdai7775 - Saba Fazlali, fdai7875 - Nina Gärtner, fdai7729 From 712763aff04d5a31d25a0374311fc81a4775bbd2 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Wed, 7 Feb 2024 10:24:30 +0000 Subject: [PATCH 296/375] Add new file --- test/test_battleship.c | 1 + 1 file changed, 1 insertion(+) create mode 100644 test/test_battleship.c diff --git a/test/test_battleship.c b/test/test_battleship.c new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/test/test_battleship.c @@ -0,0 +1 @@ + From f1a9b0c4e8e2b814588acf8197fba7af58ce3035 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:25:21 +0000 Subject: [PATCH 297/375] Delete .gitignore --- .idea/.gitignore | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 .idea/.gitignore diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b8..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml From 801e993bb021416a869c943d9a6f9d1a60c2b5fd Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:25:26 +0000 Subject: [PATCH 298/375] Delete misc.xml --- .idea/misc.xml | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 .idea/misc.xml diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 79b3c94..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file From 911e86f63fb26dd47151b5810abd588d28f11ae9 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:25:46 +0000 Subject: [PATCH 299/375] Delete Project_Default.xml --- .idea/inspectionProfiles/Project_Default.xml | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 .idea/inspectionProfiles/Project_Default.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index e0035c9..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - \ No newline at end of file From bb4daaaa55641469c575df20348f62bd85836682 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:26:19 +0000 Subject: [PATCH 300/375] Delete modules.xml --- .idea/modules.xml | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 .idea/modules.xml diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 8160237..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file From 7c20e1bf9d3c814e8e178574aa91dd07c2544c89 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:26:23 +0000 Subject: [PATCH 301/375] Delete pmuw_projekt_notebinder.iml --- .idea/pmuw_projekt_notebinder.iml | 2 -- 1 file changed, 2 deletions(-) delete mode 100644 .idea/pmuw_projekt_notebinder.iml diff --git a/.idea/pmuw_projekt_notebinder.iml b/.idea/pmuw_projekt_notebinder.iml deleted file mode 100644 index f08604b..0000000 --- a/.idea/pmuw_projekt_notebinder.iml +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file From a5f4a8b2f73a2077692fb903a2cb2fe190122a91 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:26:30 +0000 Subject: [PATCH 302/375] Delete vcs.xml --- .idea/vcs.xml | 6 ------ 1 file changed, 6 deletions(-) delete mode 100644 .idea/vcs.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 799704a1ffe1412cd4c786e7ac372b609f87ac69 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:26:45 +0000 Subject: [PATCH 303/375] Delete cmake_install.cmake --- cmake-build-debug/cmake_install.cmake | 49 --------------------------- 1 file changed, 49 deletions(-) delete mode 100644 cmake-build-debug/cmake_install.cmake diff --git a/cmake-build-debug/cmake_install.cmake b/cmake-build-debug/cmake_install.cmake deleted file mode 100644 index 5798851..0000000 --- a/cmake-build-debug/cmake_install.cmake +++ /dev/null @@ -1,49 +0,0 @@ -# Install script for directory: /Users/saba/CLionProjects/pmuw_projekt_notebinder - -# Set the install prefix -if(NOT DEFINED CMAKE_INSTALL_PREFIX) - set(CMAKE_INSTALL_PREFIX "/usr/local") -endif() -string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") - -# Set the install configuration name. -if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME) - if(BUILD_TYPE) - string(REGEX REPLACE "^[^A-Za-z0-9_]+" "" - CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}") - else() - set(CMAKE_INSTALL_CONFIG_NAME "Debug") - endif() - message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"") -endif() - -# Set the component getting installed. -if(NOT CMAKE_INSTALL_COMPONENT) - if(COMPONENT) - message(STATUS "Install component: \"${COMPONENT}\"") - set(CMAKE_INSTALL_COMPONENT "${COMPONENT}") - else() - set(CMAKE_INSTALL_COMPONENT) - endif() -endif() - -# Is this installation the result of a crosscompile? -if(NOT DEFINED CMAKE_CROSSCOMPILING) - set(CMAKE_CROSSCOMPILING "FALSE") -endif() - -# Set default install directory permissions. -if(NOT DEFINED CMAKE_OBJDUMP) - set(CMAKE_OBJDUMP "/Library/Developer/CommandLineTools/usr/bin/objdump") -endif() - -if(CMAKE_INSTALL_COMPONENT) - set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt") -else() - set(CMAKE_INSTALL_MANIFEST "install_manifest.txt") -endif() - -string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT - "${CMAKE_INSTALL_MANIFEST_FILES}") -file(WRITE "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/${CMAKE_INSTALL_MANIFEST}" - "${CMAKE_INSTALL_MANIFEST_CONTENT}") From a82c38f668eb4e505b461a94c295b8762aa66231 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:26:52 +0000 Subject: [PATCH 304/375] Delete build.ninja --- cmake-build-debug/build.ninja | 171 ---------------------------------- 1 file changed, 171 deletions(-) delete mode 100644 cmake-build-debug/build.ninja diff --git a/cmake-build-debug/build.ninja b/cmake-build-debug/build.ninja deleted file mode 100644 index be724d5..0000000 --- a/cmake-build-debug/build.ninja +++ /dev/null @@ -1,171 +0,0 @@ -# CMAKE generated file: DO NOT EDIT! -# Generated by "Ninja" Generator, CMake Version 3.26 - -# This file contains all the build statements describing the -# compilation DAG. - -# ============================================================================= -# Write statements declared in CMakeLists.txt: -# -# Which is the root file. -# ============================================================================= - -# ============================================================================= -# Project: pmuw_projekt_notebinder -# Configurations: Debug -# ============================================================================= - -############################################# -# Minimal version of Ninja required by this file - -ninja_required_version = 1.5 - - -############################################# -# Set configuration variable for custom commands. - -CONFIGURATION = Debug -# ============================================================================= -# Include auxiliary files. - - -############################################# -# Include rules file. - -include CMakeFiles/rules.ninja - -# ============================================================================= - -############################################# -# Logical path to working directory; prefix for absolute paths. - -cmake_ninja_workdir = /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/ -# ============================================================================= -# Object build statements for EXECUTABLE target pmuw_projekt_notebinder - - -############################################# -# Order-only phony target for pmuw_projekt_notebinder - -build cmake_object_order_depends_target_pmuw_projekt_notebinder: phony || CMakeFiles/pmuw_projekt_notebinder.dir - -build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/word_selector.c || cmake_object_order_depends_target_pmuw_projekt_notebinder - DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o.d - FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics - INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template - OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir - OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman - -build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/main.c || cmake_object_order_depends_target_pmuw_projekt_notebinder - DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o.d - FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics - INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template - OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir - OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c - -build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/drawHangman.c || cmake_object_order_depends_target_pmuw_projekt_notebinder - DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o.d - FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics - INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template - OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir - OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman - -build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/initializeHangman.c || cmake_object_order_depends_target_pmuw_projekt_notebinder - DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o.d - FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics - INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template - OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir - OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman - -build CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o: C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug /Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman/playHangman.c || cmake_object_order_depends_target_pmuw_projekt_notebinder - DEP_FILE = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o.d - FLAGS = -g -std=gnu11 -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics - INCLUDES = -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Hangman -I/Users/saba/CLionProjects/pmuw_projekt_notebinder/src/main/c/Template - OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir - OBJECT_FILE_DIR = CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman - - -# ============================================================================= -# Link build statements for EXECUTABLE target pmuw_projekt_notebinder - - -############################################# -# Link the executable pmuw_projekt_notebinder - -build pmuw_projekt_notebinder: C_EXECUTABLE_LINKER__pmuw_projekt_notebinder_Debug CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o - FLAGS = -g -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk - OBJECT_DIR = CMakeFiles/pmuw_projekt_notebinder.dir - POST_BUILD = : - PRE_LINK = : - TARGET_FILE = pmuw_projekt_notebinder - TARGET_PDB = pmuw_projekt_notebinder.dbg - - -############################################# -# Utility command for edit_cache - -build CMakeFiles/edit_cache.util: CUSTOM_COMMAND - COMMAND = cd /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug && /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -E echo No\ interactive\ CMake\ dialog\ available. - DESC = No interactive CMake dialog available... - restat = 1 - -build edit_cache: phony CMakeFiles/edit_cache.util - - -############################################# -# Utility command for rebuild_cache - -build CMakeFiles/rebuild_cache.util: CUSTOM_COMMAND - COMMAND = cd /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug && /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake --regenerate-during-build -S/Users/saba/CLionProjects/pmuw_projekt_notebinder -B/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug - DESC = Running CMake to regenerate build system... - pool = console - restat = 1 - -build rebuild_cache: phony CMakeFiles/rebuild_cache.util - -# ============================================================================= -# Target aliases. - -# ============================================================================= -# Folder targets. - -# ============================================================================= - -############################################# -# Folder: /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug - -build all: phony pmuw_projekt_notebinder - -# ============================================================================= -# Built-in targets - - -############################################# -# Re-run CMake if any of its inputs changed. - -build build.ninja: RERUN_CMAKE | /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCInformation.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCommonLanguageInclude.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeGenericSystem.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeInitializeConfigs.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeLanguageInformation.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeSystemSpecificInformation.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeSystemSpecificInitialize.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/AppleClang-C.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/Clang.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/GNU.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Apple-AppleClang-C.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Apple-Clang-C.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Apple-Clang.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Darwin-Initialize.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Darwin.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/UnixPaths.cmake /Users/saba/CLionProjects/pmuw_projekt_notebinder/CMakeLists.txt CMakeCache.txt CMakeFiles/3.26.4/CMakeCCompiler.cmake CMakeFiles/3.26.4/CMakeSystem.cmake - pool = console - - -############################################# -# A missing CMake input file is not an error. - -build /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCInformation.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCommonLanguageInclude.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeGenericSystem.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeInitializeConfigs.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeLanguageInformation.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeSystemSpecificInformation.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeSystemSpecificInitialize.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/AppleClang-C.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/CMakeCommonCompilerMacros.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/Clang.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/GNU.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Apple-AppleClang-C.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Apple-Clang-C.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Apple-Clang.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Darwin-Initialize.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Darwin.cmake /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/UnixPaths.cmake /Users/saba/CLionProjects/pmuw_projekt_notebinder/CMakeLists.txt CMakeCache.txt CMakeFiles/3.26.4/CMakeCCompiler.cmake CMakeFiles/3.26.4/CMakeSystem.cmake: phony - - -############################################# -# Clean all the built files. - -build clean: CLEAN - - -############################################# -# Print all primary targets available. - -build help: HELP - - -############################################# -# Make the all target the default. - -default all From f74e198d4f740dce364e3bd727dce48081cfa8c2 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:26:57 +0000 Subject: [PATCH 305/375] Delete CMakeCache.txt --- cmake-build-debug/CMakeCache.txt | 328 ------------------------------- 1 file changed, 328 deletions(-) delete mode 100644 cmake-build-debug/CMakeCache.txt diff --git a/cmake-build-debug/CMakeCache.txt b/cmake-build-debug/CMakeCache.txt deleted file mode 100644 index 7718973..0000000 --- a/cmake-build-debug/CMakeCache.txt +++ /dev/null @@ -1,328 +0,0 @@ -# This is the CMakeCache file. -# For build in directory: /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug -# It was generated by CMake: /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -# You can edit this file to change values found and used by cmake. -# If you do not want to change any of the values, simply exit the editor. -# If you do want to change a value, simply edit, save, and exit the editor. -# The syntax for the file is as follows: -# KEY:TYPE=VALUE -# KEY is the name of a variable in the cache. -# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!. -# VALUE is the current value for the KEY. - -######################## -# EXTERNAL cache entries -######################## - -//Path to a program. -CMAKE_ADDR2LINE:FILEPATH=CMAKE_ADDR2LINE-NOTFOUND - -//Path to a program. -CMAKE_AR:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ar - -//Choose the type of build, options are: None Debug Release RelWithDebInfo -// MinSizeRel ... -CMAKE_BUILD_TYPE:STRING=Debug - -//Enable colored diagnostics throughout. -CMAKE_COLOR_DIAGNOSTICS:BOOL=ON - -//C compiler -CMAKE_C_COMPILER:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/cc - -//Flags used by the C compiler during all build types. -CMAKE_C_FLAGS:STRING= - -//Flags used by the C compiler during DEBUG builds. -CMAKE_C_FLAGS_DEBUG:STRING=-g - -//Flags used by the C compiler during MINSIZEREL builds. -CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG - -//Flags used by the C compiler during RELEASE builds. -CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG - -//Flags used by the C compiler during RELWITHDEBINFO builds. -CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG - -//Path to a program. -CMAKE_DLLTOOL:FILEPATH=CMAKE_DLLTOOL-NOTFOUND - -//Flags used by the linker during all build types. -CMAKE_EXE_LINKER_FLAGS:STRING= - -//Flags used by the linker during DEBUG builds. -CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during MINSIZEREL builds. -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during RELEASE builds. -CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during RELWITHDEBINFO builds. -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Enable/Disable output of compile commands during generation. -CMAKE_EXPORT_COMPILE_COMMANDS:BOOL= - -//Value Computed by CMake. -CMAKE_FIND_PACKAGE_REDIRECTS_DIR:STATIC=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/pkgRedirects - -//Path to a program. -CMAKE_INSTALL_NAME_TOOL:FILEPATH=/usr/bin/install_name_tool - -//Install path prefix, prepended onto install directories. -CMAKE_INSTALL_PREFIX:PATH=/usr/local - -//Path to a program. -CMAKE_LINKER:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ld - -//No help, variable specified on the command line. -CMAKE_MAKE_PROGRAM:UNINITIALIZED=/Applications/CLion.app/Contents/bin/ninja/mac/ninja - -//Flags used by the linker during the creation of modules during -// all build types. -CMAKE_MODULE_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of modules during -// DEBUG builds. -CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of modules during -// MINSIZEREL builds. -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of modules during -// RELEASE builds. -CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of modules during -// RELWITHDEBINFO builds. -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Path to a program. -CMAKE_NM:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/nm - -//Path to a program. -CMAKE_OBJCOPY:FILEPATH=CMAKE_OBJCOPY-NOTFOUND - -//Path to a program. -CMAKE_OBJDUMP:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/objdump - -//Build architectures for OSX -CMAKE_OSX_ARCHITECTURES:STRING= - -//Minimum OS X version to target for deployment (at runtime); newer -// APIs weak linked. Set to empty string for default value. -CMAKE_OSX_DEPLOYMENT_TARGET:STRING= - -//The product will be built against the headers and libraries located -// inside the indicated SDK. -CMAKE_OSX_SYSROOT:PATH=/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk - -//Value Computed by CMake -CMAKE_PROJECT_DESCRIPTION:STATIC= - -//Value Computed by CMake -CMAKE_PROJECT_HOMEPAGE_URL:STATIC= - -//Value Computed by CMake -CMAKE_PROJECT_NAME:STATIC=pmuw_projekt_notebinder - -//Path to a program. -CMAKE_RANLIB:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/ranlib - -//Path to a program. -CMAKE_READELF:FILEPATH=CMAKE_READELF-NOTFOUND - -//Flags used by the linker during the creation of shared libraries -// during all build types. -CMAKE_SHARED_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of shared libraries -// during DEBUG builds. -CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of shared libraries -// during MINSIZEREL builds. -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of shared libraries -// during RELEASE builds. -CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of shared libraries -// during RELWITHDEBINFO builds. -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//If set, runtime paths are not added when installing shared libraries, -// but are added when building. -CMAKE_SKIP_INSTALL_RPATH:BOOL=NO - -//If set, runtime paths are not added when using shared libraries. -CMAKE_SKIP_RPATH:BOOL=NO - -//Flags used by the linker during the creation of static libraries -// during all build types. -CMAKE_STATIC_LINKER_FLAGS:STRING= - -//Flags used by the linker during the creation of static libraries -// during DEBUG builds. -CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING= - -//Flags used by the linker during the creation of static libraries -// during MINSIZEREL builds. -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING= - -//Flags used by the linker during the creation of static libraries -// during RELEASE builds. -CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING= - -//Flags used by the linker during the creation of static libraries -// during RELWITHDEBINFO builds. -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING= - -//Path to a program. -CMAKE_STRIP:FILEPATH=/Library/Developer/CommandLineTools/usr/bin/strip - -//If this value is on, makefiles will be generated without the -// .SILENT directive, and all commands will be echoed to the console -// during the make. This is useful for debugging only. With Visual -// Studio IDE projects all commands are done without /nologo. -CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE - -//Value Computed by CMake -pmuw_projekt_notebinder_BINARY_DIR:STATIC=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug - -//Value Computed by CMake -pmuw_projekt_notebinder_IS_TOP_LEVEL:STATIC=ON - -//Value Computed by CMake -pmuw_projekt_notebinder_SOURCE_DIR:STATIC=/Users/saba/CLionProjects/pmuw_projekt_notebinder - - -######################## -# INTERNAL cache entries -######################## - -//ADVANCED property for variable: CMAKE_ADDR2LINE -CMAKE_ADDR2LINE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_AR -CMAKE_AR-ADVANCED:INTERNAL=1 -//This is the directory where this CMakeCache.txt was created -CMAKE_CACHEFILE_DIR:INTERNAL=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug -//Major version of cmake used to create the current loaded cache -CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3 -//Minor version of cmake used to create the current loaded cache -CMAKE_CACHE_MINOR_VERSION:INTERNAL=26 -//Patch version of cmake used to create the current loaded cache -CMAKE_CACHE_PATCH_VERSION:INTERNAL=4 -//Path to CMake executable. -CMAKE_COMMAND:INTERNAL=/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -//Path to cpack program executable. -CMAKE_CPACK_COMMAND:INTERNAL=/Applications/CLion.app/Contents/bin/cmake/mac/bin/cpack -//Path to ctest program executable. -CMAKE_CTEST_COMMAND:INTERNAL=/Applications/CLion.app/Contents/bin/cmake/mac/bin/ctest -//ADVANCED property for variable: CMAKE_C_COMPILER -CMAKE_C_COMPILER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS -CMAKE_C_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG -CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL -CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE -CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO -CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_DLLTOOL -CMAKE_DLLTOOL-ADVANCED:INTERNAL=1 -//Executable file format -CMAKE_EXECUTABLE_FORMAT:INTERNAL=MACHO -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS -CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG -CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL -CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE -CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_EXPORT_COMPILE_COMMANDS -CMAKE_EXPORT_COMPILE_COMMANDS-ADVANCED:INTERNAL=1 -//Name of external makefile project generator. -CMAKE_EXTRA_GENERATOR:INTERNAL= -//Name of generator. -CMAKE_GENERATOR:INTERNAL=Ninja -//Generator instance identifier. -CMAKE_GENERATOR_INSTANCE:INTERNAL= -//Name of generator platform. -CMAKE_GENERATOR_PLATFORM:INTERNAL= -//Name of generator toolset. -CMAKE_GENERATOR_TOOLSET:INTERNAL= -//Source directory with the top level CMakeLists.txt file for this -// project -CMAKE_HOME_DIRECTORY:INTERNAL=/Users/saba/CLionProjects/pmuw_projekt_notebinder -//ADVANCED property for variable: CMAKE_INSTALL_NAME_TOOL -CMAKE_INSTALL_NAME_TOOL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_LINKER -CMAKE_LINKER-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS -CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG -CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL -CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE -CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_NM -CMAKE_NM-ADVANCED:INTERNAL=1 -//number of local generators -CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1 -//ADVANCED property for variable: CMAKE_OBJCOPY -CMAKE_OBJCOPY-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_OBJDUMP -CMAKE_OBJDUMP-ADVANCED:INTERNAL=1 -//Platform information initialized -CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_RANLIB -CMAKE_RANLIB-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_READELF -CMAKE_READELF-ADVANCED:INTERNAL=1 -//Path to CMake installation. -CMAKE_ROOT:INTERNAL=/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS -CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG -CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL -CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE -CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH -CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_SKIP_RPATH -CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS -CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG -CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL -CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE -CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO -CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1 -//ADVANCED property for variable: CMAKE_STRIP -CMAKE_STRIP-ADVANCED:INTERNAL=1 -//uname command -CMAKE_UNAME:INTERNAL=/usr/bin/uname -//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE -CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1 - From 212f8c5f165c24be1111404d686a44da662e2944 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:27:04 +0000 Subject: [PATCH 306/375] Delete rules.ninja --- cmake-build-debug/CMakeFiles/rules.ninja | 64 ------------------------ 1 file changed, 64 deletions(-) delete mode 100644 cmake-build-debug/CMakeFiles/rules.ninja diff --git a/cmake-build-debug/CMakeFiles/rules.ninja b/cmake-build-debug/CMakeFiles/rules.ninja deleted file mode 100644 index 8064d52..0000000 --- a/cmake-build-debug/CMakeFiles/rules.ninja +++ /dev/null @@ -1,64 +0,0 @@ -# CMAKE generated file: DO NOT EDIT! -# Generated by "Ninja" Generator, CMake Version 3.26 - -# This file contains all the rules used to get the outputs files -# built from the input files. -# It is included in the main 'build.ninja'. - -# ============================================================================= -# Project: pmuw_projekt_notebinder -# Configurations: Debug -# ============================================================================= -# ============================================================================= - -############################################# -# Rule for compiling C files. - -rule C_COMPILER__pmuw_projekt_notebinder_unscanned_Debug - depfile = $DEP_FILE - deps = gcc - command = /Library/Developer/CommandLineTools/usr/bin/cc $DEFINES $INCLUDES $FLAGS -MD -MT $out -MF $DEP_FILE -o $out -c $in - description = Building C object $out - - -############################################# -# Rule for linking C executable. - -rule C_EXECUTABLE_LINKER__pmuw_projekt_notebinder_Debug - command = $PRE_LINK && /Library/Developer/CommandLineTools/usr/bin/cc $FLAGS -Wl,-search_paths_first -Wl,-headerpad_max_install_names $LINK_FLAGS $in -o $TARGET_FILE $LINK_PATH $LINK_LIBRARIES && $POST_BUILD - description = Linking C executable $TARGET_FILE - restat = $RESTAT - - -############################################# -# Rule for running custom commands. - -rule CUSTOM_COMMAND - command = $COMMAND - description = $DESC - - -############################################# -# Rule for re-running cmake. - -rule RERUN_CMAKE - command = /Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake --regenerate-during-build -S/Users/saba/CLionProjects/pmuw_projekt_notebinder -B/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug - description = Re-running CMake... - generator = 1 - - -############################################# -# Rule for cleaning all built files. - -rule CLEAN - command = /Applications/CLion.app/Contents/bin/ninja/mac/ninja $FILE_ARG -t clean $TARGETS - description = Cleaning all built files... - - -############################################# -# Rule for printing all primary targets available. - -rule HELP - command = /Applications/CLion.app/Contents/bin/ninja/mac/ninja -t targets - description = All primary targets available: - From 551f1c6e71707ec6c7b3332f59656089cc1a03ea Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:27:09 +0000 Subject: [PATCH 307/375] Delete cmake.check_cache --- cmake-build-debug/CMakeFiles/cmake.check_cache | 1 - 1 file changed, 1 deletion(-) delete mode 100644 cmake-build-debug/CMakeFiles/cmake.check_cache diff --git a/cmake-build-debug/CMakeFiles/cmake.check_cache b/cmake-build-debug/CMakeFiles/cmake.check_cache deleted file mode 100644 index 3dccd73..0000000 --- a/cmake-build-debug/CMakeFiles/cmake.check_cache +++ /dev/null @@ -1 +0,0 @@ -# This file is generated by cmake for dependency checking of the CMakeCache.txt file From a1da1f220963e0f611d26bd1d48bb5dcad19d542 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:27:49 +0000 Subject: [PATCH 308/375] Delete .ninja_log --- cmake-build-debug/.ninja_log | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 cmake-build-debug/.ninja_log diff --git a/cmake-build-debug/.ninja_log b/cmake-build-debug/.ninja_log deleted file mode 100644 index 8480529..0000000 --- a/cmake-build-debug/.ninja_log +++ /dev/null @@ -1,32 +0,0 @@ -# ninja log v5 -0 34 1707224957969670299 build.ninja f2183aada2fc9ffc -2 47 1707224297291255019 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/rules.c.o cdaff7b94c55641c -0 213 1706706276607336012 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 -1 32 1707253996019693702 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/initializeHangman.c.o 7d64de4520ec9e97 -1 38 1707224901221200228 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 -1 44 1706122039878920765 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o 69a5bcd8c57a43b3 -1 38 1706122217155672196 CMakeFiles/pmuw_projekt_notebinder.dir/test/Hangman/word_selector_test.c.o e932f546d59a9d76 -200 287 1707259374410346914 pmuw_projekt_notebinder a5668107eb06d295 -1 33 1707224901218890256 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/currentState.c.o c4eef1ff589ab182 -0 200 1707259374323394998 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 -0 32 1707253441401953897 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o f1dbf76e6b4bc97d -2 48 1707224297294010118 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_drawHangman.c.o b4d90a6b54ad1664 -0 32 1707224707015552741 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/Test/test_playHangman.c.o c78eb198389ea64b -0 39 1707259391450177836 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 -39 64 1707259391474674538 pmuw_projekt_notebinder a5668107eb06d295 -1 202 1707259792405928951 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 -202 292 1707259792495398099 pmuw_projekt_notebinder a5668107eb06d295 -0 41 1707259974595310062 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 -41 68 1707259974621052571 pmuw_projekt_notebinder a5668107eb06d295 -0 41 1707260143202490285 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 -41 66 1707260143227530868 pmuw_projekt_notebinder a5668107eb06d295 -2 209 1707265395136143124 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 -209 296 1707265395223868349 pmuw_projekt_notebinder a5668107eb06d295 -0 192 1707267006006028181 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o fab41de4b8cc0421 -192 278 1707267006091837249 pmuw_projekt_notebinder a5668107eb06d295 -1 203 1707267786560704417 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 -204 289 1707267786646774332 pmuw_projekt_notebinder a5668107eb06d295 -1 37 1707267864900519056 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/playHangman.c.o f2e2af7048638ee6 -38 63 1707267864925012751 pmuw_projekt_notebinder a5668107eb06d295 -1 29 1707267958118485967 CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/drawHangman.c.o de5f7edc6c2379d7 -29 55 1707267958144023054 pmuw_projekt_notebinder a5668107eb06d295 From 402080ec25f52615aac3111e8073b699c09ab7d2 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:27:54 +0000 Subject: [PATCH 309/375] Delete .ninja_deps --- cmake-build-debug/.ninja_deps | Bin 40056 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 cmake-build-debug/.ninja_deps diff --git a/cmake-build-debug/.ninja_deps b/cmake-build-debug/.ninja_deps deleted file mode 100644 index ef1dc81ee98d1ae0e73e1fa750426d1b0c3f2617..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40056 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 Uo4=Zxx*!93(BE;)+wVU4AIjR=_5c6? From ce38a5073a3b6bc0c113b16663b4ed2b86b81927 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:28:00 +0000 Subject: [PATCH 310/375] Delete LastTest.log --- cmake-build-debug/Testing/Temporary/LastTest.log | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 cmake-build-debug/Testing/Temporary/LastTest.log diff --git a/cmake-build-debug/Testing/Temporary/LastTest.log b/cmake-build-debug/Testing/Temporary/LastTest.log deleted file mode 100644 index 4fa8644..0000000 --- a/cmake-build-debug/Testing/Temporary/LastTest.log +++ /dev/null @@ -1,3 +0,0 @@ -Start testing: Feb 07 02:05 CET ----------------------------------------------------------- -End testing: Feb 07 02:05 CET From 01890b8938aef481a48c355c6bd889b7828ddd13 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:28:15 +0000 Subject: [PATCH 311/375] Delete clion-environment.txt --- cmake-build-debug/CMakeFiles/clion-environment.txt | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 cmake-build-debug/CMakeFiles/clion-environment.txt diff --git a/cmake-build-debug/CMakeFiles/clion-environment.txt b/cmake-build-debug/CMakeFiles/clion-environment.txt deleted file mode 100644 index b7d7a44..0000000 --- a/cmake-build-debug/CMakeFiles/clion-environment.txt +++ /dev/null @@ -1,3 +0,0 @@ -ToolSet: 1.0 (local)Options: - -Options:-DCMAKE_MAKE_PROGRAM=/Applications/CLion.app/Contents/bin/ninja/mac/ninja \ No newline at end of file From 90ef88fb657ab659e5d9239cb562552e524cf22e Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:28:19 +0000 Subject: [PATCH 312/375] Delete clion-Debug-log.txt --- cmake-build-debug/CMakeFiles/clion-Debug-log.txt | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 cmake-build-debug/CMakeFiles/clion-Debug-log.txt diff --git a/cmake-build-debug/CMakeFiles/clion-Debug-log.txt b/cmake-build-debug/CMakeFiles/clion-Debug-log.txt deleted file mode 100644 index 7126f32..0000000 --- a/cmake-build-debug/CMakeFiles/clion-Debug-log.txt +++ /dev/null @@ -1,4 +0,0 @@ -/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=/Applications/CLion.app/Contents/bin/ninja/mac/ninja -G Ninja -S /Users/saba/CLionProjects/pmuw_projekt_notebinder -B /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug --- Configuring done (0.0s) --- Generating done (0.0s) --- Build files have been written to: /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug From 9b86a92a100ea8c39dd3beab34aaf677479d0ee4 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:28:23 +0000 Subject: [PATCH 313/375] Delete TargetDirectories.txt --- cmake-build-debug/CMakeFiles/TargetDirectories.txt | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 cmake-build-debug/CMakeFiles/TargetDirectories.txt diff --git a/cmake-build-debug/CMakeFiles/TargetDirectories.txt b/cmake-build-debug/CMakeFiles/TargetDirectories.txt deleted file mode 100644 index 43a6cf4..0000000 --- a/cmake-build-debug/CMakeFiles/TargetDirectories.txt +++ /dev/null @@ -1,3 +0,0 @@ -/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir -/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/edit_cache.dir -/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/rebuild_cache.dir From f3091a6c4d83b7a23a72c736a2e6eb5df07800f0 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:28:27 +0000 Subject: [PATCH 314/375] Delete CMakeConfigureLog.yaml --- .../CMakeFiles/CMakeConfigureLog.yaml | 192 ------------------ 1 file changed, 192 deletions(-) delete mode 100644 cmake-build-debug/CMakeFiles/CMakeConfigureLog.yaml diff --git a/cmake-build-debug/CMakeFiles/CMakeConfigureLog.yaml b/cmake-build-debug/CMakeFiles/CMakeConfigureLog.yaml deleted file mode 100644 index 23e7ec2..0000000 --- a/cmake-build-debug/CMakeFiles/CMakeConfigureLog.yaml +++ /dev/null @@ -1,192 +0,0 @@ - ---- -events: - - - kind: "message-v1" - backtrace: - - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineSystem.cmake:204 (message)" - - "CMakeLists.txt:2 (project)" - message: | - The system is: Darwin - 23.2.0 - arm64 - - - kind: "message-v1" - backtrace: - - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerId.cmake:17 (message)" - - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" - - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)" - - "CMakeLists.txt:2 (project)" - message: | - Compiling the C compiler identification source file "CMakeCCompilerId.c" failed. - Compiler: /Library/Developer/CommandLineTools/usr/bin/cc - Build flags: - Id flags: - - The output was: - 1 - ld: library 'System' not found - clang: error: linker command failed with exit code 1 (use -v to see invocation) - - - - - kind: "message-v1" - backtrace: - - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerId.cmake:17 (message)" - - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerId.cmake:64 (__determine_compiler_id_test)" - - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCCompiler.cmake:123 (CMAKE_DETERMINE_COMPILER_ID)" - - "CMakeLists.txt:2 (project)" - message: | - Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded. - Compiler: /Library/Developer/CommandLineTools/usr/bin/cc - Build flags: - Id flags: -c - - The output was: - 0 - - - Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CMakeCCompilerId.o" - - The C compiler identification is AppleClang, found in: - /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.o - - - - kind: "try_compile-v1" - backtrace: - - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerABI.cmake:57 (try_compile)" - - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" - - "CMakeLists.txt:2 (project)" - checks: - - "Detecting C compiler ABI info" - directories: - source: "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy" - binary: "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy" - cmakeVariables: - CMAKE_C_FLAGS: "" - CMAKE_C_FLAGS_DEBUG: "-g" - CMAKE_EXE_LINKER_FLAGS: "" - CMAKE_OSX_ARCHITECTURES: "" - CMAKE_OSX_DEPLOYMENT_TARGET: "" - CMAKE_OSX_SYSROOT: "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk" - buildResult: - variable: "CMAKE_C_ABI_COMPILED" - cached: true - stdout: | - Change Dir: /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy - - Run Build Command(s):/Applications/CLion.app/Contents/bin/ninja/mac/ninja -v cmTC_66165 && [1/2] /Library/Developer/CommandLineTools/usr/bin/cc -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics -v -Wl,-v -MD -MT CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -c /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCCompilerABI.c - Apple clang version 15.0.0 (clang-1500.1.0.2.5) - Target: arm64-apple-darwin23.2.0 - Thread model: posix - InstalledDir: /Library/Developer/CommandLineTools/usr/bin - clang: warning: -Wl,-v: 'linker' input unused [-Wunused-command-line-argument] - "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx14.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=14.2 -fvisibility-inlines-hidden-static-local-var -target-cpu apple-m1 -target-feature +v8.5a -target-feature +crc -target-feature +lse -target-feature +rdm -target-feature +crypto -target-feature +dotprod -target-feature +fp-armv8 -target-feature +neon -target-feature +fp16fml -target-feature +ras -target-feature +rcpc -target-feature +zcm -target-feature +zcz -target-feature +fullfp16 -target-feature +sm4 -target-feature +sha3 -target-feature +sha2 -target-feature +aes -target-abi darwinpcs -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=lldb -target-linker-version 1022.1 -v -fcoverage-compilation-dir=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0 -dependency-file CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -Wno-reserved-identifier -Wno-gnu-folding-constant -fdebug-compilation-dir=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fmax-type-align=16 -fcommon -fcolor-diagnostics -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -mllvm -disable-aligned-alloc-awareness=1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -x c /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCCompilerABI.c - clang -cc1 version 15.0.0 (clang-1500.1.0.2.5) default target arm64-apple-darwin23.2.0 - ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/local/include" - ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/Library/Frameworks" - #include "..." search starts here: - #include <...> search starts here: - /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include - /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include - /Library/Developer/CommandLineTools/usr/include - /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/System/Library/Frameworks (framework directory) - End of search list. - [2/2] : && /Library/Developer/CommandLineTools/usr/bin/cc -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -Wl,-search_paths_first -Wl,-headerpad_max_install_names -v -Wl,-v CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -o cmTC_66165 && : - Apple clang version 15.0.0 (clang-1500.1.0.2.5) - Target: arm64-apple-darwin23.2.0 - Thread model: posix - InstalledDir: /Library/Developer/CommandLineTools/usr/bin - "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 14.0.0 14.2 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -o cmTC_66165 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/lib/darwin/libclang_rt.osx.a - @(#)PROGRAM:ld PROJECT:dyld-1022.1 - BUILD 13:21:42 Nov 10 2023 - configured to support archs: armv6 armv7 armv7s arm64 arm64e arm64_32 i386 x86_64 x86_64h - will use ld-classic for: armv6 armv7 armv7s arm64_32 i386 armv6m armv7k armv7m armv7em - LTO support using: LLVM version 15.0.0 (static support for 29, runtime is 29) - TAPI support using: Apple TAPI version 15.0.0 (tapi-1500.0.12.8) - Library search paths: - Framework search paths: - - exitCode: 0 - - - kind: "message-v1" - backtrace: - - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerABI.cmake:127 (message)" - - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" - - "CMakeLists.txt:2 (project)" - message: | - Parsed C implicit include dir info: rv=done - found start of include info - found start of implicit include info - add: [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include] - add: [/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include] - add: [/Library/Developer/CommandLineTools/usr/include] - end of search list found - collapse include dir [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include] ==> [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include] - collapse include dir [/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include] ==> [/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include] - collapse include dir [/Library/Developer/CommandLineTools/usr/include] ==> [/Library/Developer/CommandLineTools/usr/include] - implicit include dirs: [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include;/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include] - - - - - kind: "message-v1" - backtrace: - - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeDetermineCompilerABI.cmake:152 (message)" - - "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeTestCCompiler.cmake:26 (CMAKE_DETERMINE_COMPILER_ABI)" - - "CMakeLists.txt:2 (project)" - message: | - Parsed C implicit link information: - link line regex: [^( *|.*[/\\])(ld|CMAKE_LINK_STARTFILE-NOTFOUND|([^/\\]+-)?ld|collect2)[^/\\]*( |$)] - ignore line: [Change Dir: /Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy] - ignore line: [] - ignore line: [Run Build Command(s):/Applications/CLion.app/Contents/bin/ninja/mac/ninja -v cmTC_66165 && [1/2] /Library/Developer/CommandLineTools/usr/bin/cc -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -fcolor-diagnostics -v -Wl -v -MD -MT CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -MF CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o.d -o CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -c /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCCompilerABI.c] - ignore line: [Apple clang version 15.0.0 (clang-1500.1.0.2.5)] - ignore line: [Target: arm64-apple-darwin23.2.0] - ignore line: [Thread model: posix] - ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] - ignore line: [clang: warning: -Wl -v: 'linker' input unused [-Wunused-command-line-argument]] - ignore line: [ "/Library/Developer/CommandLineTools/usr/bin/clang" -cc1 -triple arm64-apple-macosx14.0.0 -Wundef-prefix=TARGET_OS_ -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -Werror=implicit-function-declaration -emit-obj -mrelax-all --mrelax-relocations -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name CMakeCCompilerABI.c -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -fno-strict-return -ffp-contract=on -fno-rounding-math -funwind-tables=1 -fobjc-msgsend-selector-stubs -target-sdk-version=14.2 -fvisibility-inlines-hidden-static-local-var -target-cpu apple-m1 -target-feature +v8.5a -target-feature +crc -target-feature +lse -target-feature +rdm -target-feature +crypto -target-feature +dotprod -target-feature +fp-armv8 -target-feature +neon -target-feature +fp16fml -target-feature +ras -target-feature +rcpc -target-feature +zcm -target-feature +zcz -target-feature +fullfp16 -target-feature +sm4 -target-feature +sha3 -target-feature +sha2 -target-feature +aes -target-abi darwinpcs -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=lldb -target-linker-version 1022.1 -v -fcoverage-compilation-dir=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy -resource-dir /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0 -dependency-file CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o.d -skip-unused-modulemap-deps -MT CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -sys-header-deps -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -internal-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/local/include -internal-isystem /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include -internal-externc-isystem /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include -internal-externc-isystem /Library/Developer/CommandLineTools/usr/include -Wno-reorder-init-list -Wno-implicit-int-float-conversion -Wno-c99-designator -Wno-final-dtor-non-final-class -Wno-extra-semi-stmt -Wno-misleading-indentation -Wno-quoted-include-in-framework-header -Wno-implicit-fallthrough -Wno-enum-enum-conversion -Wno-enum-float-conversion -Wno-elaborated-enum-base -Wno-reserved-identifier -Wno-gnu-folding-constant -fdebug-compilation-dir=/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-fNJdfy -ferror-limit 19 -stack-protector 1 -fstack-check -mdarwin-stkchk-strong-link -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fmax-type-align=16 -fcommon -fcolor-diagnostics -clang-vendor-feature=+disableNonDependentMemberExprInCurrentInstantiation -fno-odr-hash-protocols -clang-vendor-feature=+enableAggressiveVLAFolding -clang-vendor-feature=+revert09abecef7bbf -clang-vendor-feature=+thisNoAlignAttr -clang-vendor-feature=+thisNoNullAttr -mllvm -disable-aligned-alloc-awareness=1 -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -x c /Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCCompilerABI.c] - ignore line: [clang -cc1 version 15.0.0 (clang-1500.1.0.2.5) default target arm64-apple-darwin23.2.0] - ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/local/include"] - ignore line: [ignoring nonexistent directory "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/Library/Frameworks"] - ignore line: [#include "..." search starts here:] - ignore line: [#include <...> search starts here:] - ignore line: [ /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include] - ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include] - ignore line: [ /Library/Developer/CommandLineTools/usr/include] - ignore line: [ /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/System/Library/Frameworks (framework directory)] - ignore line: [End of search list.] - ignore line: [[2/2] : && /Library/Developer/CommandLineTools/usr/bin/cc -arch arm64 -isysroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -Wl -search_paths_first -Wl -headerpad_max_install_names -v -Wl -v CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -o cmTC_66165 && :] - ignore line: [Apple clang version 15.0.0 (clang-1500.1.0.2.5)] - ignore line: [Target: arm64-apple-darwin23.2.0] - ignore line: [Thread model: posix] - ignore line: [InstalledDir: /Library/Developer/CommandLineTools/usr/bin] - link line: [ "/Library/Developer/CommandLineTools/usr/bin/ld" -demangle -lto_library /Library/Developer/CommandLineTools/usr/lib/libLTO.dylib -dynamic -arch arm64 -platform_version macos 14.0.0 14.2 -syslibroot /Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk -o cmTC_66165 -search_paths_first -headerpad_max_install_names -v CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o -lSystem /Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/lib/darwin/libclang_rt.osx.a] - arg [/Library/Developer/CommandLineTools/usr/bin/ld] ==> ignore - arg [-demangle] ==> ignore - arg [-lto_library] ==> ignore, skip following value - arg [/Library/Developer/CommandLineTools/usr/lib/libLTO.dylib] ==> skip value of -lto_library - arg [-dynamic] ==> ignore - arg [-arch] ==> ignore - arg [arm64] ==> ignore - arg [-platform_version] ==> ignore - arg [macos] ==> ignore - arg [14.0.0] ==> ignore - arg [14.2] ==> ignore - arg [-syslibroot] ==> ignore - arg [/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk] ==> ignore - arg [-o] ==> ignore - arg [cmTC_66165] ==> ignore - arg [-search_paths_first] ==> ignore - arg [-headerpad_max_install_names] ==> ignore - arg [-v] ==> ignore - arg [CMakeFiles/cmTC_66165.dir/CMakeCCompilerABI.c.o] ==> ignore - arg [-lSystem] ==> lib [System] - arg [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/lib/darwin/libclang_rt.osx.a] ==> lib [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/lib/darwin/libclang_rt.osx.a] - remove lib [System] - remove lib [/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/lib/darwin/libclang_rt.osx.a] - implicit libs: [] - implicit objs: [] - implicit dirs: [] - implicit fwks: [] - - -... From a5773129106f3deb857d94150bab3a0f866dd343 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Wed, 7 Feb 2024 10:29:23 +0000 Subject: [PATCH 315/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 1ce9e01..a508ebb 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -581,7 +581,7 @@ int multiplayer() { } -int main() { +int battleship() { int player; From 567fa8dad5c83f44c50631db43cb519171cab603 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:30:33 +0000 Subject: [PATCH 316/375] Delete CMakeLists.txt --- CMakeLists.txt | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt deleted file mode 100644 index 455aa81..0000000 --- a/CMakeLists.txt +++ /dev/null @@ -1,22 +0,0 @@ -cmake_minimum_required(VERSION 3.26) -project(pmuw_projekt_notebinder C) - -set(CMAKE_C_STANDARD 11) - -include_directories(src/main/c) -include_directories(src/main/c/Hangman) -include_directories(src/main/c/Template) - -add_executable(pmuw_projekt_notebinder - - src/main/c/Hangman/word_selector.c - src/main/c/Hangman/word_selector.h - src/main/c/main.c - src/main/c/main.h - src/main/c/Hangman/drawHangman.c - src/main/c/Hangman/drawHangman.h - src/main/c/Hangman/initializeHangman.c - src/main/c/Hangman/initializeHangman.h - src/main/c/Hangman/playHangman.c - src/main/c/Hangman/playHangman.h -) From 7c1675c2e08ff0bd91aa3814a610362b700a3156 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:30:59 +0000 Subject: [PATCH 317/375] Delete cache-v2 --- cmake-build-debug/.cmake/api/v1/query/cache-v2 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 cmake-build-debug/.cmake/api/v1/query/cache-v2 diff --git a/cmake-build-debug/.cmake/api/v1/query/cache-v2 b/cmake-build-debug/.cmake/api/v1/query/cache-v2 deleted file mode 100644 index e69de29..0000000 From b32c0b4ad02be34fd77bc98f1242cf5de5a97758 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:31:04 +0000 Subject: [PATCH 318/375] Delete cmakeFiles-v1 --- cmake-build-debug/.cmake/api/v1/query/cmakeFiles-v1 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 cmake-build-debug/.cmake/api/v1/query/cmakeFiles-v1 diff --git a/cmake-build-debug/.cmake/api/v1/query/cmakeFiles-v1 b/cmake-build-debug/.cmake/api/v1/query/cmakeFiles-v1 deleted file mode 100644 index e69de29..0000000 From 41657774053c38defbbaa4703be466764c77d0a1 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:31:09 +0000 Subject: [PATCH 319/375] Delete codemodel-v2 --- cmake-build-debug/.cmake/api/v1/query/codemodel-v2 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 cmake-build-debug/.cmake/api/v1/query/codemodel-v2 diff --git a/cmake-build-debug/.cmake/api/v1/query/codemodel-v2 b/cmake-build-debug/.cmake/api/v1/query/codemodel-v2 deleted file mode 100644 index e69de29..0000000 From 676f9aa50871f23d211a0db7b3ad3fac39578d67 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:31:13 +0000 Subject: [PATCH 320/375] Delete toolchains-v1 --- cmake-build-debug/.cmake/api/v1/query/toolchains-v1 | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 cmake-build-debug/.cmake/api/v1/query/toolchains-v1 diff --git a/cmake-build-debug/.cmake/api/v1/query/toolchains-v1 b/cmake-build-debug/.cmake/api/v1/query/toolchains-v1 deleted file mode 100644 index e69de29..0000000 From 366032297e2ce46499b026f66cccc196f83e1149 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:31:24 +0000 Subject: [PATCH 321/375] Delete cache-v2-797367ee73be0946ea69.json --- .../reply/cache-v2-797367ee73be0946ea69.json | 1051 ----------------- 1 file changed, 1051 deletions(-) delete mode 100644 cmake-build-debug/.cmake/api/v1/reply/cache-v2-797367ee73be0946ea69.json diff --git a/cmake-build-debug/.cmake/api/v1/reply/cache-v2-797367ee73be0946ea69.json b/cmake-build-debug/.cmake/api/v1/reply/cache-v2-797367ee73be0946ea69.json deleted file mode 100644 index 6598f26..0000000 --- a/cmake-build-debug/.cmake/api/v1/reply/cache-v2-797367ee73be0946ea69.json +++ /dev/null @@ -1,1051 +0,0 @@ -{ - "entries" : - [ - { - "name" : "CMAKE_ADDR2LINE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "CMAKE_ADDR2LINE-NOTFOUND" - }, - { - "name" : "CMAKE_AR", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/Library/Developer/CommandLineTools/usr/bin/ar" - }, - { - "name" : "CMAKE_BUILD_TYPE", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ..." - } - ], - "type" : "STRING", - "value" : "Debug" - }, - { - "name" : "CMAKE_CACHEFILE_DIR", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "This is the directory where this CMakeCache.txt was created" - } - ], - "type" : "INTERNAL", - "value" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug" - }, - { - "name" : "CMAKE_CACHE_MAJOR_VERSION", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Major version of cmake used to create the current loaded cache" - } - ], - "type" : "INTERNAL", - "value" : "3" - }, - { - "name" : "CMAKE_CACHE_MINOR_VERSION", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Minor version of cmake used to create the current loaded cache" - } - ], - "type" : "INTERNAL", - "value" : "26" - }, - { - "name" : "CMAKE_CACHE_PATCH_VERSION", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Patch version of cmake used to create the current loaded cache" - } - ], - "type" : "INTERNAL", - "value" : "4" - }, - { - "name" : "CMAKE_COLOR_DIAGNOSTICS", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Enable colored diagnostics throughout." - } - ], - "type" : "BOOL", - "value" : "ON" - }, - { - "name" : "CMAKE_COMMAND", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Path to CMake executable." - } - ], - "type" : "INTERNAL", - "value" : "/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake" - }, - { - "name" : "CMAKE_CPACK_COMMAND", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Path to cpack program executable." - } - ], - "type" : "INTERNAL", - "value" : "/Applications/CLion.app/Contents/bin/cmake/mac/bin/cpack" - }, - { - "name" : "CMAKE_CTEST_COMMAND", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Path to ctest program executable." - } - ], - "type" : "INTERNAL", - "value" : "/Applications/CLion.app/Contents/bin/cmake/mac/bin/ctest" - }, - { - "name" : "CMAKE_C_COMPILER", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "C compiler" - } - ], - "type" : "FILEPATH", - "value" : "/Library/Developer/CommandLineTools/usr/bin/cc" - }, - { - "name" : "CMAKE_C_FLAGS", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the C compiler during all build types." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_C_FLAGS_DEBUG", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the C compiler during DEBUG builds." - } - ], - "type" : "STRING", - "value" : "-g" - }, - { - "name" : "CMAKE_C_FLAGS_MINSIZEREL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the C compiler during MINSIZEREL builds." - } - ], - "type" : "STRING", - "value" : "-Os -DNDEBUG" - }, - { - "name" : "CMAKE_C_FLAGS_RELEASE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the C compiler during RELEASE builds." - } - ], - "type" : "STRING", - "value" : "-O3 -DNDEBUG" - }, - { - "name" : "CMAKE_C_FLAGS_RELWITHDEBINFO", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the C compiler during RELWITHDEBINFO builds." - } - ], - "type" : "STRING", - "value" : "-O2 -g -DNDEBUG" - }, - { - "name" : "CMAKE_DLLTOOL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "CMAKE_DLLTOOL-NOTFOUND" - }, - { - "name" : "CMAKE_EXECUTABLE_FORMAT", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Executable file format" - } - ], - "type" : "INTERNAL", - "value" : "MACHO" - }, - { - "name" : "CMAKE_EXE_LINKER_FLAGS", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during all build types." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_EXE_LINKER_FLAGS_DEBUG", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during DEBUG builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_EXE_LINKER_FLAGS_MINSIZEREL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during MINSIZEREL builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_EXE_LINKER_FLAGS_RELEASE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during RELEASE builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during RELWITHDEBINFO builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_EXPORT_COMPILE_COMMANDS", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Enable/Disable output of compile commands during generation." - } - ], - "type" : "BOOL", - "value" : "" - }, - { - "name" : "CMAKE_EXTRA_GENERATOR", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Name of external makefile project generator." - } - ], - "type" : "INTERNAL", - "value" : "" - }, - { - "name" : "CMAKE_FIND_PACKAGE_REDIRECTS_DIR", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Value Computed by CMake." - } - ], - "type" : "STATIC", - "value" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug/CMakeFiles/pkgRedirects" - }, - { - "name" : "CMAKE_GENERATOR", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Name of generator." - } - ], - "type" : "INTERNAL", - "value" : "Ninja" - }, - { - "name" : "CMAKE_GENERATOR_INSTANCE", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Generator instance identifier." - } - ], - "type" : "INTERNAL", - "value" : "" - }, - { - "name" : "CMAKE_GENERATOR_PLATFORM", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Name of generator platform." - } - ], - "type" : "INTERNAL", - "value" : "" - }, - { - "name" : "CMAKE_GENERATOR_TOOLSET", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Name of generator toolset." - } - ], - "type" : "INTERNAL", - "value" : "" - }, - { - "name" : "CMAKE_HOME_DIRECTORY", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Source directory with the top level CMakeLists.txt file for this project" - } - ], - "type" : "INTERNAL", - "value" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder" - }, - { - "name" : "CMAKE_INSTALL_NAME_TOOL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/usr/bin/install_name_tool" - }, - { - "name" : "CMAKE_INSTALL_PREFIX", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Install path prefix, prepended onto install directories." - } - ], - "type" : "PATH", - "value" : "/usr/local" - }, - { - "name" : "CMAKE_LINKER", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/Library/Developer/CommandLineTools/usr/bin/ld" - }, - { - "name" : "CMAKE_MAKE_PROGRAM", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "No help, variable specified on the command line." - } - ], - "type" : "UNINITIALIZED", - "value" : "/Applications/CLion.app/Contents/bin/ninja/mac/ninja" - }, - { - "name" : "CMAKE_MODULE_LINKER_FLAGS", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of modules during all build types." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_MODULE_LINKER_FLAGS_DEBUG", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of modules during DEBUG builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of modules during MINSIZEREL builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_MODULE_LINKER_FLAGS_RELEASE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of modules during RELEASE builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of modules during RELWITHDEBINFO builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_NM", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/Library/Developer/CommandLineTools/usr/bin/nm" - }, - { - "name" : "CMAKE_NUMBER_OF_MAKEFILES", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "number of local generators" - } - ], - "type" : "INTERNAL", - "value" : "1" - }, - { - "name" : "CMAKE_OBJCOPY", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "CMAKE_OBJCOPY-NOTFOUND" - }, - { - "name" : "CMAKE_OBJDUMP", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/Library/Developer/CommandLineTools/usr/bin/objdump" - }, - { - "name" : "CMAKE_OSX_ARCHITECTURES", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Build architectures for OSX" - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_OSX_DEPLOYMENT_TARGET", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Minimum OS X version to target for deployment (at runtime); newer APIs weak linked. Set to empty string for default value." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_OSX_SYSROOT", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "The product will be built against the headers and libraries located inside the indicated SDK." - } - ], - "type" : "PATH", - "value" : "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk" - }, - { - "name" : "CMAKE_PLATFORM_INFO_INITIALIZED", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Platform information initialized" - } - ], - "type" : "INTERNAL", - "value" : "1" - }, - { - "name" : "CMAKE_PROJECT_DESCRIPTION", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Value Computed by CMake" - } - ], - "type" : "STATIC", - "value" : "" - }, - { - "name" : "CMAKE_PROJECT_HOMEPAGE_URL", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Value Computed by CMake" - } - ], - "type" : "STATIC", - "value" : "" - }, - { - "name" : "CMAKE_PROJECT_NAME", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Value Computed by CMake" - } - ], - "type" : "STATIC", - "value" : "pmuw_projekt_notebinder" - }, - { - "name" : "CMAKE_RANLIB", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/Library/Developer/CommandLineTools/usr/bin/ranlib" - }, - { - "name" : "CMAKE_READELF", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "CMAKE_READELF-NOTFOUND" - }, - { - "name" : "CMAKE_ROOT", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Path to CMake installation." - } - ], - "type" : "INTERNAL", - "value" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26" - }, - { - "name" : "CMAKE_SHARED_LINKER_FLAGS", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of shared libraries during all build types." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_SHARED_LINKER_FLAGS_DEBUG", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of shared libraries during DEBUG builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of shared libraries during MINSIZEREL builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_SHARED_LINKER_FLAGS_RELEASE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of shared libraries during RELEASE builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of shared libraries during RELWITHDEBINFO builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_SKIP_INSTALL_RPATH", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "If set, runtime paths are not added when installing shared libraries, but are added when building." - } - ], - "type" : "BOOL", - "value" : "NO" - }, - { - "name" : "CMAKE_SKIP_RPATH", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "If set, runtime paths are not added when using shared libraries." - } - ], - "type" : "BOOL", - "value" : "NO" - }, - { - "name" : "CMAKE_STATIC_LINKER_FLAGS", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of static libraries during all build types." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_STATIC_LINKER_FLAGS_DEBUG", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of static libraries during DEBUG builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of static libraries during MINSIZEREL builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_STATIC_LINKER_FLAGS_RELEASE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of static libraries during RELEASE builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Flags used by the linker during the creation of static libraries during RELWITHDEBINFO builds." - } - ], - "type" : "STRING", - "value" : "" - }, - { - "name" : "CMAKE_STRIP", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "Path to a program." - } - ], - "type" : "FILEPATH", - "value" : "/Library/Developer/CommandLineTools/usr/bin/strip" - }, - { - "name" : "CMAKE_UNAME", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "uname command" - } - ], - "type" : "INTERNAL", - "value" : "/usr/bin/uname" - }, - { - "name" : "CMAKE_VERBOSE_MAKEFILE", - "properties" : - [ - { - "name" : "ADVANCED", - "value" : "1" - }, - { - "name" : "HELPSTRING", - "value" : "If this value is on, makefiles will be generated without the .SILENT directive, and all commands will be echoed to the console during the make. This is useful for debugging only. With Visual Studio IDE projects all commands are done without /nologo." - } - ], - "type" : "BOOL", - "value" : "FALSE" - }, - { - "name" : "pmuw_projekt_notebinder_BINARY_DIR", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Value Computed by CMake" - } - ], - "type" : "STATIC", - "value" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug" - }, - { - "name" : "pmuw_projekt_notebinder_IS_TOP_LEVEL", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Value Computed by CMake" - } - ], - "type" : "STATIC", - "value" : "ON" - }, - { - "name" : "pmuw_projekt_notebinder_SOURCE_DIR", - "properties" : - [ - { - "name" : "HELPSTRING", - "value" : "Value Computed by CMake" - } - ], - "type" : "STATIC", - "value" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder" - } - ], - "kind" : "cache", - "version" : - { - "major" : 2, - "minor" : 0 - } -} From eb322c135bc7181bdd49f8e00d3a662f9f7366a8 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:31:28 +0000 Subject: [PATCH 322/375] Delete cmakeFiles-v1-9ac3996b5bf98606de02.json --- .../cmakeFiles-v1-9ac3996b5bf98606de02.json | 117 ------------------ 1 file changed, 117 deletions(-) delete mode 100644 cmake-build-debug/.cmake/api/v1/reply/cmakeFiles-v1-9ac3996b5bf98606de02.json diff --git a/cmake-build-debug/.cmake/api/v1/reply/cmakeFiles-v1-9ac3996b5bf98606de02.json b/cmake-build-debug/.cmake/api/v1/reply/cmakeFiles-v1-9ac3996b5bf98606de02.json deleted file mode 100644 index 511136f..0000000 --- a/cmake-build-debug/.cmake/api/v1/reply/cmakeFiles-v1-9ac3996b5bf98606de02.json +++ /dev/null @@ -1,117 +0,0 @@ -{ - "inputs" : - [ - { - "path" : "CMakeLists.txt" - }, - { - "isGenerated" : true, - "path" : "cmake-build-debug/CMakeFiles/3.26.4/CMakeSystem.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeSystemSpecificInitialize.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Darwin-Initialize.cmake" - }, - { - "isGenerated" : true, - "path" : "cmake-build-debug/CMakeFiles/3.26.4/CMakeCCompiler.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeSystemSpecificInformation.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeGenericSystem.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeInitializeConfigs.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Darwin.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/UnixPaths.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCInformation.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeLanguageInformation.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/AppleClang-C.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/Clang.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/CMakeCommonCompilerMacros.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/GNU.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Compiler/CMakeCommonCompilerMacros.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Apple-AppleClang-C.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Apple-Clang-C.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/Platform/Apple-Clang.cmake" - }, - { - "isCMake" : true, - "isExternal" : true, - "path" : "/Applications/CLion.app/Contents/bin/cmake/mac/share/cmake-3.26/Modules/CMakeCommonLanguageInclude.cmake" - } - ], - "kind" : "cmakeFiles", - "paths" : - { - "build" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder/cmake-build-debug", - "source" : "/Users/saba/CLionProjects/pmuw_projekt_notebinder" - }, - "version" : - { - "major" : 1, - "minor" : 0 - } -} From b4380a590aabf80002894e95f8dbfbfed2b64faf Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:31:31 +0000 Subject: [PATCH 323/375] Delete directory-.-Debug-f5ebdc15457944623624.json --- .../directory-.-Debug-f5ebdc15457944623624.json | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 cmake-build-debug/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json diff --git a/cmake-build-debug/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json b/cmake-build-debug/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json deleted file mode 100644 index 3a67af9..0000000 --- a/cmake-build-debug/.cmake/api/v1/reply/directory-.-Debug-f5ebdc15457944623624.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "backtraceGraph" : - { - "commands" : [], - "files" : [], - "nodes" : [] - }, - "installers" : [], - "paths" : - { - "build" : ".", - "source" : "." - } -} From 368dc3fa0eabe146b8732793cfcc4a57ea72645f Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:31:35 +0000 Subject: [PATCH 324/375] Delete toolchains-v1-e0f424cc4383644d699f.json --- .../toolchains-v1-e0f424cc4383644d699f.json | 37 ------------------- 1 file changed, 37 deletions(-) delete mode 100644 cmake-build-debug/.cmake/api/v1/reply/toolchains-v1-e0f424cc4383644d699f.json diff --git a/cmake-build-debug/.cmake/api/v1/reply/toolchains-v1-e0f424cc4383644d699f.json b/cmake-build-debug/.cmake/api/v1/reply/toolchains-v1-e0f424cc4383644d699f.json deleted file mode 100644 index 4cbd4c7..0000000 --- a/cmake-build-debug/.cmake/api/v1/reply/toolchains-v1-e0f424cc4383644d699f.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "kind" : "toolchains", - "toolchains" : - [ - { - "compiler" : - { - "id" : "AppleClang", - "implicit" : - { - "includeDirectories" : - [ - "/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include", - "/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include", - "/Library/Developer/CommandLineTools/usr/include" - ], - "linkDirectories" : [], - "linkFrameworkDirectories" : [], - "linkLibraries" : [] - }, - "path" : "/Library/Developer/CommandLineTools/usr/bin/cc", - "version" : "15.0.0.15000100" - }, - "language" : "C", - "sourceFileExtensions" : - [ - "c", - "m" - ] - } - ], - "version" : - { - "major" : 1, - "minor" : 0 - } -} From 9e348a1e614d88aad5a3326589f3e497820642c7 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:31:46 +0000 Subject: [PATCH 325/375] Delete CMakeCCompilerId.c --- .../3.26.4/CompilerIdC/CMakeCCompilerId.c | 866 ------------------ 1 file changed, 866 deletions(-) delete mode 100644 cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.c diff --git a/cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.c b/cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.c deleted file mode 100644 index 88155ff..0000000 --- a/cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.c +++ /dev/null @@ -1,866 +0,0 @@ -#ifdef __cplusplus -# error "A C++ compiler has been selected for C." -#endif - -#if defined(__18CXX) -# define ID_VOID_MAIN -#endif -#if defined(__CLASSIC_C__) -/* cv-qualifiers did not exist in K&R C */ -# define const -# define volatile -#endif - -#if !defined(__has_include) -/* If the compiler does not have __has_include, pretend the answer is - always no. */ -# define __has_include(x) 0 -#endif - - -/* Version number components: V=Version, R=Revision, P=Patch - Version date components: YYYY=Year, MM=Month, DD=Day */ - -#if defined(__INTEL_COMPILER) || defined(__ICC) -# define COMPILER_ID "Intel" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# if defined(__GNUC__) -# define SIMULATE_ID "GNU" -# endif - /* __INTEL_COMPILER = VRP prior to 2021, and then VVVV for 2021 and later, - except that a few beta releases use the old format with V=2021. */ -# if __INTEL_COMPILER < 2021 || __INTEL_COMPILER == 202110 || __INTEL_COMPILER == 202111 -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10) -# if defined(__INTEL_COMPILER_UPDATE) -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE) -# else -# define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER % 10) -# endif -# else -# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER) -# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER_UPDATE) - /* The third version component from --version is an update index, - but no macro is provided for it. */ -# define COMPILER_VERSION_PATCH DEC(0) -# endif -# if defined(__INTEL_COMPILER_BUILD_DATE) - /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */ -# define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE) -# endif -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# if defined(__GNUC__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -# elif defined(__GNUG__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) -# endif -# if defined(__GNUC_MINOR__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif (defined(__clang__) && defined(__INTEL_CLANG_COMPILER)) || defined(__INTEL_LLVM_COMPILER) -# define COMPILER_ID "IntelLLVM" -#if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -#endif -#if defined(__GNUC__) -# define SIMULATE_ID "GNU" -#endif -/* __INTEL_LLVM_COMPILER = VVVVRP prior to 2021.2.0, VVVVRRPP for 2021.2.0 and - * later. Look for 6 digit vs. 8 digit version number to decide encoding. - * VVVV is no smaller than the current year when a version is released. - */ -#if __INTEL_LLVM_COMPILER < 1000000L -# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/100) -# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 10) -#else -# define COMPILER_VERSION_MAJOR DEC(__INTEL_LLVM_COMPILER/10000) -# define COMPILER_VERSION_MINOR DEC(__INTEL_LLVM_COMPILER/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__INTEL_LLVM_COMPILER % 100) -#endif -#if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -#endif -#if defined(__GNUC__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -#elif defined(__GNUG__) -# define SIMULATE_VERSION_MAJOR DEC(__GNUG__) -#endif -#if defined(__GNUC_MINOR__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -#endif -#if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -#endif - -#elif defined(__PATHCC__) -# define COMPILER_ID "PathScale" -# define COMPILER_VERSION_MAJOR DEC(__PATHCC__) -# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__) -# if defined(__PATHCC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__) -# endif - -#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__) -# define COMPILER_ID "Embarcadero" -# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF) -# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF) -# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__ & 0xFFFF) - -#elif defined(__BORLANDC__) -# define COMPILER_ID "Borland" - /* __BORLANDC__ = 0xVRR */ -# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8) -# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF) - -#elif defined(__WATCOMC__) && __WATCOMC__ < 1200 -# define COMPILER_ID "Watcom" - /* __WATCOMC__ = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__WATCOMC__) -# define COMPILER_ID "OpenWatcom" - /* __WATCOMC__ = VVRP + 1100 */ -# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100) -# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10) -# if (__WATCOMC__ % 10) > 0 -# define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10) -# endif - -#elif defined(__SUNPRO_C) -# define COMPILER_ID "SunPro" -# if __SUNPRO_C >= 0x5100 - /* __SUNPRO_C = 0xVRRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) -# else - /* __SUNPRO_CC = 0xVRP */ -# define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8) -# define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF) -# define COMPILER_VERSION_PATCH HEX(__SUNPRO_C & 0xF) -# endif - -#elif defined(__HP_cc) -# define COMPILER_ID "HP" - /* __HP_cc = VVRRPP */ -# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000) -# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100) -# define COMPILER_VERSION_PATCH DEC(__HP_cc % 100) - -#elif defined(__DECC) -# define COMPILER_ID "Compaq" - /* __DECC_VER = VVRRTPPPP */ -# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000) -# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000 % 100) -# define COMPILER_VERSION_PATCH DEC(__DECC_VER % 10000) - -#elif defined(__IBMC__) && defined(__COMPILER_VER__) -# define COMPILER_ID "zOS" - /* __IBMC__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) - -#elif defined(__open_xl__) && defined(__clang__) -# define COMPILER_ID "IBMClang" -# define COMPILER_VERSION_MAJOR DEC(__open_xl_version__) -# define COMPILER_VERSION_MINOR DEC(__open_xl_release__) -# define COMPILER_VERSION_PATCH DEC(__open_xl_modification__) -# define COMPILER_VERSION_TWEAK DEC(__open_xl_ptf_fix_level__) - - -#elif defined(__ibmxl__) && defined(__clang__) -# define COMPILER_ID "XLClang" -# define COMPILER_VERSION_MAJOR DEC(__ibmxl_version__) -# define COMPILER_VERSION_MINOR DEC(__ibmxl_release__) -# define COMPILER_VERSION_PATCH DEC(__ibmxl_modification__) -# define COMPILER_VERSION_TWEAK DEC(__ibmxl_ptf_fix_level__) - - -#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800 -# define COMPILER_ID "XL" - /* __IBMC__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) - -#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800 -# define COMPILER_ID "VisualAge" - /* __IBMC__ = VRP */ -# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100) -# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10) -# define COMPILER_VERSION_PATCH DEC(__IBMC__ % 10) - -#elif defined(__NVCOMPILER) -# define COMPILER_ID "NVHPC" -# define COMPILER_VERSION_MAJOR DEC(__NVCOMPILER_MAJOR__) -# define COMPILER_VERSION_MINOR DEC(__NVCOMPILER_MINOR__) -# if defined(__NVCOMPILER_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__NVCOMPILER_PATCHLEVEL__) -# endif - -#elif defined(__PGI) -# define COMPILER_ID "PGI" -# define COMPILER_VERSION_MAJOR DEC(__PGIC__) -# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__) -# if defined(__PGIC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__) -# endif - -#elif defined(_CRAYC) -# define COMPILER_ID "Cray" -# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR) -# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR) - -#elif defined(__TI_COMPILER_VERSION__) -# define COMPILER_ID "TI" - /* __TI_COMPILER_VERSION__ = VVVRRRPPP */ -# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000) -# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000 % 1000) -# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__ % 1000) - -#elif defined(__CLANG_FUJITSU) -# define COMPILER_ID "FujitsuClang" -# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) -# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) -# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) -# define COMPILER_VERSION_INTERNAL_STR __clang_version__ - - -#elif defined(__FUJITSU) -# define COMPILER_ID "Fujitsu" -# if defined(__FCC_version__) -# define COMPILER_VERSION __FCC_version__ -# elif defined(__FCC_major__) -# define COMPILER_VERSION_MAJOR DEC(__FCC_major__) -# define COMPILER_VERSION_MINOR DEC(__FCC_minor__) -# define COMPILER_VERSION_PATCH DEC(__FCC_patchlevel__) -# endif -# if defined(__fcc_version) -# define COMPILER_VERSION_INTERNAL DEC(__fcc_version) -# elif defined(__FCC_VERSION) -# define COMPILER_VERSION_INTERNAL DEC(__FCC_VERSION) -# endif - - -#elif defined(__ghs__) -# define COMPILER_ID "GHS" -/* __GHS_VERSION_NUMBER = VVVVRP */ -# ifdef __GHS_VERSION_NUMBER -# define COMPILER_VERSION_MAJOR DEC(__GHS_VERSION_NUMBER / 100) -# define COMPILER_VERSION_MINOR DEC(__GHS_VERSION_NUMBER / 10 % 10) -# define COMPILER_VERSION_PATCH DEC(__GHS_VERSION_NUMBER % 10) -# endif - -#elif defined(__TASKING__) -# define COMPILER_ID "Tasking" - # define COMPILER_VERSION_MAJOR DEC(__VERSION__/1000) - # define COMPILER_VERSION_MINOR DEC(__VERSION__ % 100) -# define COMPILER_VERSION_INTERNAL DEC(__VERSION__) - -#elif defined(__TINYC__) -# define COMPILER_ID "TinyCC" - -#elif defined(__BCC__) -# define COMPILER_ID "Bruce" - -#elif defined(__SCO_VERSION__) -# define COMPILER_ID "SCO" - -#elif defined(__ARMCC_VERSION) && !defined(__clang__) -# define COMPILER_ID "ARMCC" -#if __ARMCC_VERSION >= 1000000 - /* __ARMCC_VERSION = VRRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#else - /* __ARMCC_VERSION = VRPPPP */ - # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000) - # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10) - # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION % 10000) -#endif - - -#elif defined(__clang__) && defined(__apple_build_version__) -# define COMPILER_ID "AppleClang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif -# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__) - -#elif defined(__clang__) && defined(__ARMCOMPILER_VERSION) -# define COMPILER_ID "ARMClang" - # define COMPILER_VERSION_MAJOR DEC(__ARMCOMPILER_VERSION/1000000) - # define COMPILER_VERSION_MINOR DEC(__ARMCOMPILER_VERSION/10000 % 100) - # define COMPILER_VERSION_PATCH DEC(__ARMCOMPILER_VERSION % 10000) -# define COMPILER_VERSION_INTERNAL DEC(__ARMCOMPILER_VERSION) - -#elif defined(__clang__) -# define COMPILER_ID "Clang" -# if defined(_MSC_VER) -# define SIMULATE_ID "MSVC" -# endif -# define COMPILER_VERSION_MAJOR DEC(__clang_major__) -# define COMPILER_VERSION_MINOR DEC(__clang_minor__) -# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__) -# if defined(_MSC_VER) - /* _MSC_VER = VVRR */ -# define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100) -# define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100) -# endif - -#elif defined(__LCC__) && (defined(__GNUC__) || defined(__GNUG__) || defined(__MCST__)) -# define COMPILER_ID "LCC" -# define COMPILER_VERSION_MAJOR DEC(__LCC__ / 100) -# define COMPILER_VERSION_MINOR DEC(__LCC__ % 100) -# if defined(__LCC_MINOR__) -# define COMPILER_VERSION_PATCH DEC(__LCC_MINOR__) -# endif -# if defined(__GNUC__) && defined(__GNUC_MINOR__) -# define SIMULATE_ID "GNU" -# define SIMULATE_VERSION_MAJOR DEC(__GNUC__) -# define SIMULATE_VERSION_MINOR DEC(__GNUC_MINOR__) -# if defined(__GNUC_PATCHLEVEL__) -# define SIMULATE_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif -# endif - -#elif defined(__GNUC__) -# define COMPILER_ID "GNU" -# define COMPILER_VERSION_MAJOR DEC(__GNUC__) -# if defined(__GNUC_MINOR__) -# define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__) -# endif -# if defined(__GNUC_PATCHLEVEL__) -# define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__) -# endif - -#elif defined(_MSC_VER) -# define COMPILER_ID "MSVC" - /* _MSC_VER = VVRR */ -# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100) -# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100) -# if defined(_MSC_FULL_VER) -# if _MSC_VER >= 1400 - /* _MSC_FULL_VER = VVRRPPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000) -# else - /* _MSC_FULL_VER = VVRRPPPP */ -# define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000) -# endif -# endif -# if defined(_MSC_BUILD) -# define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD) -# endif - -#elif defined(_ADI_COMPILER) -# define COMPILER_ID "ADSP" -#if defined(__VERSIONNUM__) - /* __VERSIONNUM__ = 0xVVRRPPTT */ -# define COMPILER_VERSION_MAJOR DEC(__VERSIONNUM__ >> 24 & 0xFF) -# define COMPILER_VERSION_MINOR DEC(__VERSIONNUM__ >> 16 & 0xFF) -# define COMPILER_VERSION_PATCH DEC(__VERSIONNUM__ >> 8 & 0xFF) -# define COMPILER_VERSION_TWEAK DEC(__VERSIONNUM__ & 0xFF) -#endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# define COMPILER_ID "IAR" -# if defined(__VER__) && defined(__ICCARM__) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 1000000) -# define COMPILER_VERSION_MINOR DEC(((__VER__) / 1000) % 1000) -# define COMPILER_VERSION_PATCH DEC((__VER__) % 1000) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# elif defined(__VER__) && (defined(__ICCAVR__) || defined(__ICCRX__) || defined(__ICCRH850__) || defined(__ICCRL78__) || defined(__ICC430__) || defined(__ICCRISCV__) || defined(__ICCV850__) || defined(__ICC8051__) || defined(__ICCSTM8__)) -# define COMPILER_VERSION_MAJOR DEC((__VER__) / 100) -# define COMPILER_VERSION_MINOR DEC((__VER__) - (((__VER__) / 100)*100)) -# define COMPILER_VERSION_PATCH DEC(__SUBVERSION__) -# define COMPILER_VERSION_INTERNAL DEC(__IAR_SYSTEMS_ICC__) -# endif - -#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC) -# define COMPILER_ID "SDCC" -# if defined(__SDCC_VERSION_MAJOR) -# define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR) -# define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR) -# define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH) -# else - /* SDCC = VRP */ -# define COMPILER_VERSION_MAJOR DEC(SDCC/100) -# define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10) -# define COMPILER_VERSION_PATCH DEC(SDCC % 10) -# endif - - -/* These compilers are either not known or too old to define an - identification macro. Try to identify the platform and guess that - it is the native compiler. */ -#elif defined(__hpux) || defined(__hpua) -# define COMPILER_ID "HP" - -#else /* unknown compiler */ -# define COMPILER_ID "" -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]"; -#ifdef SIMULATE_ID -char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]"; -#endif - -#ifdef __QNXNTO__ -char const* qnxnto = "INFO" ":" "qnxnto[]"; -#endif - -#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) -char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]"; -#endif - -#define STRINGIFY_HELPER(X) #X -#define STRINGIFY(X) STRINGIFY_HELPER(X) - -/* Identify known platforms by name. */ -#if defined(__linux) || defined(__linux__) || defined(linux) -# define PLATFORM_ID "Linux" - -#elif defined(__MSYS__) -# define PLATFORM_ID "MSYS" - -#elif defined(__CYGWIN__) -# define PLATFORM_ID "Cygwin" - -#elif defined(__MINGW32__) -# define PLATFORM_ID "MinGW" - -#elif defined(__APPLE__) -# define PLATFORM_ID "Darwin" - -#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32) -# define PLATFORM_ID "Windows" - -#elif defined(__FreeBSD__) || defined(__FreeBSD) -# define PLATFORM_ID "FreeBSD" - -#elif defined(__NetBSD__) || defined(__NetBSD) -# define PLATFORM_ID "NetBSD" - -#elif defined(__OpenBSD__) || defined(__OPENBSD) -# define PLATFORM_ID "OpenBSD" - -#elif defined(__sun) || defined(sun) -# define PLATFORM_ID "SunOS" - -#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__) -# define PLATFORM_ID "AIX" - -#elif defined(__hpux) || defined(__hpux__) -# define PLATFORM_ID "HP-UX" - -#elif defined(__HAIKU__) -# define PLATFORM_ID "Haiku" - -#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS) -# define PLATFORM_ID "BeOS" - -#elif defined(__QNX__) || defined(__QNXNTO__) -# define PLATFORM_ID "QNX" - -#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__) -# define PLATFORM_ID "Tru64" - -#elif defined(__riscos) || defined(__riscos__) -# define PLATFORM_ID "RISCos" - -#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__) -# define PLATFORM_ID "SINIX" - -#elif defined(__UNIX_SV__) -# define PLATFORM_ID "UNIX_SV" - -#elif defined(__bsdos__) -# define PLATFORM_ID "BSDOS" - -#elif defined(_MPRAS) || defined(MPRAS) -# define PLATFORM_ID "MP-RAS" - -#elif defined(__osf) || defined(__osf__) -# define PLATFORM_ID "OSF1" - -#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv) -# define PLATFORM_ID "SCO_SV" - -#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX) -# define PLATFORM_ID "ULTRIX" - -#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX) -# define PLATFORM_ID "Xenix" - -#elif defined(__WATCOMC__) -# if defined(__LINUX__) -# define PLATFORM_ID "Linux" - -# elif defined(__DOS__) -# define PLATFORM_ID "DOS" - -# elif defined(__OS2__) -# define PLATFORM_ID "OS2" - -# elif defined(__WINDOWS__) -# define PLATFORM_ID "Windows3x" - -# elif defined(__VXWORKS__) -# define PLATFORM_ID "VxWorks" - -# else /* unknown platform */ -# define PLATFORM_ID -# endif - -#elif defined(__INTEGRITY) -# if defined(INT_178B) -# define PLATFORM_ID "Integrity178" - -# else /* regular Integrity */ -# define PLATFORM_ID "Integrity" -# endif - -# elif defined(_ADI_COMPILER) -# define PLATFORM_ID "ADSP" - -#else /* unknown platform */ -# define PLATFORM_ID - -#endif - -/* For windows compilers MSVC and Intel we can determine - the architecture of the compiler being used. This is because - the compilers do not have flags that can change the architecture, - but rather depend on which compiler is being used -*/ -#if defined(_WIN32) && defined(_MSC_VER) -# if defined(_M_IA64) -# define ARCHITECTURE_ID "IA64" - -# elif defined(_M_ARM64EC) -# define ARCHITECTURE_ID "ARM64EC" - -# elif defined(_M_X64) || defined(_M_AMD64) -# define ARCHITECTURE_ID "x64" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# elif defined(_M_ARM64) -# define ARCHITECTURE_ID "ARM64" - -# elif defined(_M_ARM) -# if _M_ARM == 4 -# define ARCHITECTURE_ID "ARMV4I" -# elif _M_ARM == 5 -# define ARCHITECTURE_ID "ARMV5I" -# else -# define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM) -# endif - -# elif defined(_M_MIPS) -# define ARCHITECTURE_ID "MIPS" - -# elif defined(_M_SH) -# define ARCHITECTURE_ID "SHx" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__WATCOMC__) -# if defined(_M_I86) -# define ARCHITECTURE_ID "I86" - -# elif defined(_M_IX86) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__IAR_SYSTEMS_ICC__) || defined(__IAR_SYSTEMS_ICC) -# if defined(__ICCARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__ICCRX__) -# define ARCHITECTURE_ID "RX" - -# elif defined(__ICCRH850__) -# define ARCHITECTURE_ID "RH850" - -# elif defined(__ICCRL78__) -# define ARCHITECTURE_ID "RL78" - -# elif defined(__ICCRISCV__) -# define ARCHITECTURE_ID "RISCV" - -# elif defined(__ICCAVR__) -# define ARCHITECTURE_ID "AVR" - -# elif defined(__ICC430__) -# define ARCHITECTURE_ID "MSP430" - -# elif defined(__ICCV850__) -# define ARCHITECTURE_ID "V850" - -# elif defined(__ICC8051__) -# define ARCHITECTURE_ID "8051" - -# elif defined(__ICCSTM8__) -# define ARCHITECTURE_ID "STM8" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__ghs__) -# if defined(__PPC64__) -# define ARCHITECTURE_ID "PPC64" - -# elif defined(__ppc__) -# define ARCHITECTURE_ID "PPC" - -# elif defined(__ARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__x86_64__) -# define ARCHITECTURE_ID "x64" - -# elif defined(__i386__) -# define ARCHITECTURE_ID "X86" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -#elif defined(__TI_COMPILER_VERSION__) -# if defined(__TI_ARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__MSP430__) -# define ARCHITECTURE_ID "MSP430" - -# elif defined(__TMS320C28XX__) -# define ARCHITECTURE_ID "TMS320C28x" - -# elif defined(__TMS320C6X__) || defined(_TMS320C6X) -# define ARCHITECTURE_ID "TMS320C6x" - -# else /* unknown architecture */ -# define ARCHITECTURE_ID "" -# endif - -# elif defined(__ADSPSHARC__) -# define ARCHITECTURE_ID "SHARC" - -# elif defined(__ADSPBLACKFIN__) -# define ARCHITECTURE_ID "Blackfin" - -#elif defined(__TASKING__) - -# if defined(__CTC__) || defined(__CPTC__) -# define ARCHITECTURE_ID "TriCore" - -# elif defined(__CMCS__) -# define ARCHITECTURE_ID "MCS" - -# elif defined(__CARM__) -# define ARCHITECTURE_ID "ARM" - -# elif defined(__CARC__) -# define ARCHITECTURE_ID "ARC" - -# elif defined(__C51__) -# define ARCHITECTURE_ID "8051" - -# elif defined(__CPCP__) -# define ARCHITECTURE_ID "PCP" - -# else -# define ARCHITECTURE_ID "" -# endif - -#else -# define ARCHITECTURE_ID -#endif - -/* Convert integer to decimal digit literals. */ -#define DEC(n) \ - ('0' + (((n) / 10000000)%10)), \ - ('0' + (((n) / 1000000)%10)), \ - ('0' + (((n) / 100000)%10)), \ - ('0' + (((n) / 10000)%10)), \ - ('0' + (((n) / 1000)%10)), \ - ('0' + (((n) / 100)%10)), \ - ('0' + (((n) / 10)%10)), \ - ('0' + ((n) % 10)) - -/* Convert integer to hex digit literals. */ -#define HEX(n) \ - ('0' + ((n)>>28 & 0xF)), \ - ('0' + ((n)>>24 & 0xF)), \ - ('0' + ((n)>>20 & 0xF)), \ - ('0' + ((n)>>16 & 0xF)), \ - ('0' + ((n)>>12 & 0xF)), \ - ('0' + ((n)>>8 & 0xF)), \ - ('0' + ((n)>>4 & 0xF)), \ - ('0' + ((n) & 0xF)) - -/* Construct a string literal encoding the version number. */ -#ifdef COMPILER_VERSION -char const* info_version = "INFO" ":" "compiler_version[" COMPILER_VERSION "]"; - -/* Construct a string literal encoding the version number components. */ -#elif defined(COMPILER_VERSION_MAJOR) -char const info_version[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[', - COMPILER_VERSION_MAJOR, -# ifdef COMPILER_VERSION_MINOR - '.', COMPILER_VERSION_MINOR, -# ifdef COMPILER_VERSION_PATCH - '.', COMPILER_VERSION_PATCH, -# ifdef COMPILER_VERSION_TWEAK - '.', COMPILER_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct a string literal encoding the internal version number. */ -#ifdef COMPILER_VERSION_INTERNAL -char const info_version_internal[] = { - 'I', 'N', 'F', 'O', ':', - 'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','_', - 'i','n','t','e','r','n','a','l','[', - COMPILER_VERSION_INTERNAL,']','\0'}; -#elif defined(COMPILER_VERSION_INTERNAL_STR) -char const* info_version_internal = "INFO" ":" "compiler_version_internal[" COMPILER_VERSION_INTERNAL_STR "]"; -#endif - -/* Construct a string literal encoding the version number components. */ -#ifdef SIMULATE_VERSION_MAJOR -char const info_simulate_version[] = { - 'I', 'N', 'F', 'O', ':', - 's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[', - SIMULATE_VERSION_MAJOR, -# ifdef SIMULATE_VERSION_MINOR - '.', SIMULATE_VERSION_MINOR, -# ifdef SIMULATE_VERSION_PATCH - '.', SIMULATE_VERSION_PATCH, -# ifdef SIMULATE_VERSION_TWEAK - '.', SIMULATE_VERSION_TWEAK, -# endif -# endif -# endif - ']','\0'}; -#endif - -/* Construct the string literal in pieces to prevent the source from - getting matched. Store it in a pointer rather than an array - because some compilers will just produce instructions to fill the - array rather than assigning a pointer to a static array. */ -char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]"; -char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]"; - - - -#if !defined(__STDC__) && !defined(__clang__) -# if defined(_MSC_VER) || defined(__ibmxl__) || defined(__IBMC__) -# define C_VERSION "90" -# else -# define C_VERSION -# endif -#elif __STDC_VERSION__ > 201710L -# define C_VERSION "23" -#elif __STDC_VERSION__ >= 201710L -# define C_VERSION "17" -#elif __STDC_VERSION__ >= 201000L -# define C_VERSION "11" -#elif __STDC_VERSION__ >= 199901L -# define C_VERSION "99" -#else -# define C_VERSION "90" -#endif -const char* info_language_standard_default = - "INFO" ":" "standard_default[" C_VERSION "]"; - -const char* info_language_extensions_default = "INFO" ":" "extensions_default[" -#if (defined(__clang__) || defined(__GNUC__) || defined(__xlC__) || \ - defined(__TI_COMPILER_VERSION__)) && \ - !defined(__STRICT_ANSI__) - "ON" -#else - "OFF" -#endif -"]"; - -/*--------------------------------------------------------------------------*/ - -#ifdef ID_VOID_MAIN -void main() {} -#else -# if defined(__CLASSIC_C__) -int main(argc, argv) int argc; char *argv[]; -# else -int main(int argc, char* argv[]) -# endif -{ - int require = 0; - require += info_compiler[argc]; - require += info_platform[argc]; - require += info_arch[argc]; -#ifdef COMPILER_VERSION_MAJOR - require += info_version[argc]; -#endif -#ifdef COMPILER_VERSION_INTERNAL - require += info_version_internal[argc]; -#endif -#ifdef SIMULATE_ID - require += info_simulate[argc]; -#endif -#ifdef SIMULATE_VERSION_MAJOR - require += info_simulate_version[argc]; -#endif -#if defined(__CRAYXT_COMPUTE_LINUX_TARGET) - require += info_cray[argc]; -#endif - require += info_language_standard_default[argc]; - require += info_language_extensions_default[argc]; - (void)argv; - return require; -} -#endif From af75914eeed747cee590761133263463efeef492 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:31:52 +0000 Subject: [PATCH 326/375] Delete CMakeCCompilerId.o --- .../3.26.4/CompilerIdC/CMakeCCompilerId.o | Bin 1712 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.o diff --git a/cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.o b/cmake-build-debug/CMakeFiles/3.26.4/CompilerIdC/CMakeCCompilerId.o deleted file mode 100644 index 7b535879801fc78b203ff53280f4bb26a31c4358..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1712 zcmb_cJ%|%Q6rOnJnKPOwSSSY?u(1l8^A1H>NVq5};qHnQk#LMlvdJxMHes{TD=ZEa zv=O|<%Hj$I!Pdf92{!3G8?lU5cZI!YVf^0CoBUnn&x6_Teecb@eY5k;e*F3U*D)a? z0!EK%jN&0Yk{GZv7+=C{NDn-^oZFx^FwKv^r*W8qFew9jBT&BLg=@vakZZ5Y4%MTQ z88n3csIg4~ZBmw7f$w-V4oEp(PuKA|pPAAt6>__Spp+FWum%+U=CXzCkY{+G7dZ45 z^{C`F`qO(H&ZhmA8(wR;;mQ8ix!zS?)SKvUv=;ePuimuEfoyyC9Iql}J~uk&71v90 zFp0jXWEaS(u`SOdcN#vqC*Yav>BFr>hE2uX7dMRi5I5v)2etEsbek-uNise^i#jaXy zHz=hqaR&Fr_F4{PG{~(iul?c29_vruwS6jBGD1r)rj%nCLnpn6SlTcqUKHM^WOyaV zI(Pww`82sWW9k30b!sk7HW%OiAp*4eHGW Zu9SiUdQnq2p!1r-0ZnTP2bAOy+HW9I5BC57 From 8d8518863bcfd68e407ef8e0c6a59fe84ad6e744 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:31:58 +0000 Subject: [PATCH 327/375] Delete CMakeCCompiler.cmake --- .../CMakeFiles/3.26.4/CMakeCCompiler.cmake | 72 ------------------- 1 file changed, 72 deletions(-) delete mode 100644 cmake-build-debug/CMakeFiles/3.26.4/CMakeCCompiler.cmake diff --git a/cmake-build-debug/CMakeFiles/3.26.4/CMakeCCompiler.cmake b/cmake-build-debug/CMakeFiles/3.26.4/CMakeCCompiler.cmake deleted file mode 100644 index 57ab031..0000000 --- a/cmake-build-debug/CMakeFiles/3.26.4/CMakeCCompiler.cmake +++ /dev/null @@ -1,72 +0,0 @@ -set(CMAKE_C_COMPILER "/Library/Developer/CommandLineTools/usr/bin/cc") -set(CMAKE_C_COMPILER_ARG1 "") -set(CMAKE_C_COMPILER_ID "AppleClang") -set(CMAKE_C_COMPILER_VERSION "15.0.0.15000100") -set(CMAKE_C_COMPILER_VERSION_INTERNAL "") -set(CMAKE_C_COMPILER_WRAPPER "") -set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "17") -set(CMAKE_C_EXTENSIONS_COMPUTED_DEFAULT "ON") -set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert;c_std_17;c_std_23") -set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes") -set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros") -set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert") -set(CMAKE_C17_COMPILE_FEATURES "c_std_17") -set(CMAKE_C23_COMPILE_FEATURES "c_std_23") - -set(CMAKE_C_PLATFORM_ID "Darwin") -set(CMAKE_C_SIMULATE_ID "") -set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU") -set(CMAKE_C_SIMULATE_VERSION "") - - - - -set(CMAKE_AR "/Library/Developer/CommandLineTools/usr/bin/ar") -set(CMAKE_C_COMPILER_AR "") -set(CMAKE_RANLIB "/Library/Developer/CommandLineTools/usr/bin/ranlib") -set(CMAKE_C_COMPILER_RANLIB "") -set(CMAKE_LINKER "/Library/Developer/CommandLineTools/usr/bin/ld") -set(CMAKE_MT "") -set(CMAKE_COMPILER_IS_GNUCC ) -set(CMAKE_C_COMPILER_LOADED 1) -set(CMAKE_C_COMPILER_WORKS TRUE) -set(CMAKE_C_ABI_COMPILED TRUE) - -set(CMAKE_C_COMPILER_ENV_VAR "CC") - -set(CMAKE_C_COMPILER_ID_RUN 1) -set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m) -set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC) -set(CMAKE_C_LINKER_PREFERENCE 10) - -# Save compiler ABI information. -set(CMAKE_C_SIZEOF_DATA_PTR "8") -set(CMAKE_C_COMPILER_ABI "") -set(CMAKE_C_BYTE_ORDER "LITTLE_ENDIAN") -set(CMAKE_C_LIBRARY_ARCHITECTURE "") - -if(CMAKE_C_SIZEOF_DATA_PTR) - set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}") -endif() - -if(CMAKE_C_COMPILER_ABI) - set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}") -endif() - -if(CMAKE_C_LIBRARY_ARCHITECTURE) - set(CMAKE_LIBRARY_ARCHITECTURE "") -endif() - -set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "") -if(CMAKE_C_CL_SHOWINCLUDES_PREFIX) - set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}") -endif() - - - - - -set(CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES "/Library/Developer/CommandLineTools/usr/lib/clang/15.0.0/include;/Library/Developer/CommandLineTools/SDKs/MacOSX14.2.sdk/usr/include;/Library/Developer/CommandLineTools/usr/include") -set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "") -set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "") -set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "") From 22a1d7872aec0ad8e8bbcfa331dde1b7dea5cfc9 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:32:02 +0000 Subject: [PATCH 328/375] Delete CMakeDetermineCompilerABI_C.bin --- .../3.26.4/CMakeDetermineCompilerABI_C.bin | Bin 17000 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100755 cmake-build-debug/CMakeFiles/3.26.4/CMakeDetermineCompilerABI_C.bin diff --git a/cmake-build-debug/CMakeFiles/3.26.4/CMakeDetermineCompilerABI_C.bin b/cmake-build-debug/CMakeFiles/3.26.4/CMakeDetermineCompilerABI_C.bin deleted file mode 100755 index d0263cc2b452862d9a24f33016cfc32225bfe328..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17000 zcmeI4Uuau(6vuxzX`v-u8|S8uDrOAkpN_WvX$^(NWNW%cyQI}TgcbLrNp9@jnxv#D zHe+f*id`#WnLcfAgU!muhHRBEhV`W)B3s9BTLq2cLyPzz6^k7#e$UOl?TrxypU;7F zf4_6i?|1GwpPSc{>+8SXuM;6LPlB}CqG(Jz;~ zDlE$5#z85={z$kytl#&R`-EXv!%d2kbdfTvj%5u4%ir@AJf&vLBV_ z8B3=|%+rSO<+{#MJs-o)==AzAbTeV|mW7-LUEV(zQpRldy^R9jwDx9nfAV z37sLOZ$W4NkJRIm3yR;IXc-;JvCh2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjFaajO1egF5U;<2l2`~XBzyz286JP>NfC(@G zCcp%k025#WOn?b60Vco%m;e)C0!)AjSO^r~5sSsgMZVA|@;^GnpT!1|UuhiAV}|#G zn!dd=wc3h%xxt&SQEDB_*4Qj!Ic@A8V>>++u>x}7T{H7``E4NB73vt#j;ZN{j1Ols z{jKiTga`&gUD1wgPO6!-8t=~p_Q?Z5f1oqy6Nu_}qPeUp)0w!M>F)`I!##fK4|WE8 zLBwgK_)()T>q;}sG~?{WN=ozTBwqcw`Jg%JI%IL`nP9l|@n`*j3(rX;fEMJt2q0D2L%Gz%{+K*W~hfR++lah2|nG(+o= z>xeNQ|B_)(8aBPAK`BjmQ+*GS4W~Jek9lvzODrhv!eoDCCHho;StU}hq~zbkFQeM) zQccCRft09-4QbizkZOkUE~~76UpEhegoer>*#;jfRqVo6MZBn$7&Jmb2fG50$I+z+BHEeTH>#ZtpMUe9=l71oPkc0$ zmlxhX|7j$>u#%Xsy1lq~)E0_V7mr^)er#gt+I07cJ?H)_{^9$frkQEy*Pq=xFHike zJo!^%b@GojZT5vPe#k_B&Mn-Gf3>{pyLVToCO%1RJ27zjy)T!4X`0?1S@4{?SY1e5 G6@LL&JT!>_ From e5755d579015a5a83874701dd4c732a2a2e43d3f Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:32:06 +0000 Subject: [PATCH 329/375] Delete CMakeSystem.cmake --- .../CMakeFiles/3.26.4/CMakeSystem.cmake | 15 --------------- 1 file changed, 15 deletions(-) delete mode 100644 cmake-build-debug/CMakeFiles/3.26.4/CMakeSystem.cmake diff --git a/cmake-build-debug/CMakeFiles/3.26.4/CMakeSystem.cmake b/cmake-build-debug/CMakeFiles/3.26.4/CMakeSystem.cmake deleted file mode 100644 index d0903e1..0000000 --- a/cmake-build-debug/CMakeFiles/3.26.4/CMakeSystem.cmake +++ /dev/null @@ -1,15 +0,0 @@ -set(CMAKE_HOST_SYSTEM "Darwin-23.2.0") -set(CMAKE_HOST_SYSTEM_NAME "Darwin") -set(CMAKE_HOST_SYSTEM_VERSION "23.2.0") -set(CMAKE_HOST_SYSTEM_PROCESSOR "arm64") - - - -set(CMAKE_SYSTEM "Darwin-23.2.0") -set(CMAKE_SYSTEM_NAME "Darwin") -set(CMAKE_SYSTEM_VERSION "23.2.0") -set(CMAKE_SYSTEM_PROCESSOR "arm64") - -set(CMAKE_CROSSCOMPILING "FALSE") - -set(CMAKE_SYSTEM_LOADED 1) From a71dbc6739f659c2b53c8985e15791b74546a15d Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Wed, 7 Feb 2024 10:32:35 +0000 Subject: [PATCH 330/375] Erstellen Headerdatei --- src/main/c/Template/battleship_game.h | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 src/main/c/Template/battleship_game.h diff --git a/src/main/c/Template/battleship_game.h b/src/main/c/Template/battleship_game.h new file mode 100644 index 0000000..129d762 --- /dev/null +++ b/src/main/c/Template/battleship_game.h @@ -0,0 +1,6 @@ +#ifndef BATTLESHIP_GAME.H +#define BATTLESHIP_GAME.H + +int battleship(); + +#endif From 99688246c99971dac1e904decca4273517c2611a Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:32:46 +0000 Subject: [PATCH 331/375] Delete word_selector.c.o --- .../src/main/c/Hangman/word_selector.c.o | Bin 3072 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o diff --git a/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o b/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Hangman/word_selector.c.o deleted file mode 100644 index 32246661cc6bb4bf24faf5444d652756aa46bb6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3072 zcmb7G-D@0G6hE`Ov)RqYZQ4}Zw9u{?OGT31#FQ58M?zCgY{ZyEnkqWX&fcWc%*V1b zn=~Y~p;b^6w5U&guwcOyeDWy>g3=cYidey?{sDavK`4k)>+j6m$!?~Rngi#ak2&{u z&%JZbo%!jn-~MSMQV7ID3Veu%0vOZ@UQGt-hQo*H&^^U-K#|=7ojJ!&kf!n&CQL15ne}<3%{vf}Ih4Df5fw$EBuKM7chr z>E&`w%yGU$rv}HLUkm$F;#`uRF}d%xfH2)PGr}{SX_uXGyhYv|XeAW%i^OZkfyv{R z5n(`t=lQk35yyK%PSRzbi+uR&DTb$4tCr9l-4-6=;&^Y%^O}+vw=?U(U~P!!md_d- z8OOUV@wy~Te^x3Du_0cNUsX5acwtcxMR-&H6VG3$Zn)pBpvZ`>$$XX`if6bs^76I1 zGjBQ-O&c9*Y=!81iC2)$0_vDw(SE#N`HEuu4eQS`9l=xL`@JLazL0nWz+)=?2VNhZ z?F5Hw-JPM#?8=S3t1CA?TfLrGzLh)DV^^*L2@>okqOwd9Go`oJQUAU0Z~m7RB1G z`@lM+&(wslh10l*5U$rNW^8SuYR#P%SZp2Wg3#C5!CDoeTd}n<9VtG5>FZ@n6nx=0 zCiieiRoAlW>oz>(kl)-al ztMX*NLrvx{F6Do}kZ<3yJHJ)ghRZF{Ps#j9$Fa_5bI;`xD8ZznjC9~$f1E}-4x;?j zeNc$fU5GoH%fZvaYA$yaYNiLk+tLF&lX;%cI7HcgN~}4ETDJrMK?|pXWKcw)HY#C! z2mB42pdUgJjQpWUv?K5ZC`vM$jJ_Pn({QBtAhrkNqolqGBfSf;X{BW^M5ZPE3`9$c zJ1HQZtk?r^D!Z;g&n7M}y~5U>tNgr`G1G6rp{8h%FW`b<>CQ}HPSiZqWuf;#PpPL= z*dKVidk>UKJ-zVs^&EJLim!TzDtdZZFCHI7^jOV3D-7Q&R_*${hPQcE%=((+`l5^* zNz{s7%_!Qs=@gCPFjld3r-*i`XdXJj@ZDOELB&xMJyBaI4v9HoxmCwUd~SxV&x-DH-Lxv*!PQ5cnm20Vqi&o*TWH$g z`1s&yZDQoL6WZkIu@jm`b;mPj98oEl=(unf<4D!DPhl?A0(AsiKSvxeJTW+oqYmyd zzRU2R6A=3p3O~5_L5Y#OTIuG6?+(GwcVY1QAfsmC>fkwjV5SI{eN1s&#@tK{7c292 z1_SYZ%lRd7`=;a{6t5NJ3RzlyH}~VmhrcokpDw-beQ+{?0!_5DdXcn=T3*`NJ!g z(a~2tG9^0|wX^lEs-|C5ccf3Md(s!x?APjJ=~1-}s`^Kw4LQ*OLXrIF;ZPpoZ=g!l z&1a5E=x&F^FH^Sg{DkNrIFAYPoT!&=e50fPfNik1 zG{v*Jr78Yt*iDav<8QXP#+q%?8ttO_rY%TzbyGiR9(M$3!D#t*wU2o04Mx5bLH`1% CXTo0q From 483798e77aee921876b8881c46eabf2085bd4069 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:32:57 +0000 Subject: [PATCH 332/375] Delete main.c.o --- .../src/main/c/main.c.o | Bin 4096 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o diff --git a/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o b/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/main.c.o deleted file mode 100644 index 55a7cec38777ce5da2feed0f792408df824da205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmb_fU2Gdw7CtkRaXfb7ki^*}-CfmP3JQqWN$RvwSwllol%`V}C4rVd4P$58xV6V# z&!j)J+E$^vswh)Prr?>B&UeyE1^=3lE@njfJV{#j~vw==B1Y{UF$F1b;{lZ`vSH=tC zJTCe_P=k>^a_m|%j2SCCx8E?c*@|_D=R3M*c=FDwiy{X6Ls;$)Rl5S=ijYCPyuGi) z4)yV#6y9gVdcP6zo@ge*AJdxguxPKdKHi|%|6vjD@8VoMXTPb7XO_za%dpL&<)FVl z-XXDHiz2{BT1}+?60ej!kmK(9coDI_jUr4oB7{}=<@uG(Tz$M`UA({k%6RV4@|x?N z6!FfA`Mmf)4NkpDZ`hr3)kLc^XfE z7r>l$|95%0aoeS@6F_pIx7P2X^yX@vm_SOh#{mH3v z-YWDb9M`P4mJQQ@ZyKmEZSqZk*Ob8`EUyc?k#W=Lw4 zZiuz3N^Jgk?AsHu>pFiMYn9q?FXS}sXx|#WH7X+$6-nCBj^}*?Y+JAc>PAvxw?(56 zLo7z4w?S-7L)_7Rdv`D_d?Wmcv?RXL7TVUO#JGn&h$3l{s|KWY)bqhkK8>C8-$`se zsEPW}y5N^s1-1;)RlH7;FLGy>ru=wS zr$%xIjM6$y3F^!0G!<&>Mkn7(8B;|NkCZVOyd}rIwu8dFvT8x#t&xh?a~oMe8<7`| z-NIV*UudJe#Y}yEm%Ej_TG$bX-2+e?)HFbrXqZbBsnMNIYL}VYJ+-$# zjZZr>2dPfI_NnBG=0U4BJC`ra^m=bU-4in}7ZocVLQC^6of|O%3y5d6kCGk6&^own@m?6;PlbIPuhRwFBq! z-if!kbWMX#fxUwS?&3k9E+C&ZSCj|A4}<>+UIL#7zYqQj%(sAvQ;5Y4LJ#I7)HUaH zEk1mKnfYmC;&t-c6jEWwTLI#AGI6!*J9#?#UFwTiF7f2?`<+L>*bCc1@Snk4YB&XX zZk&-DfgnytHgWz66K@-vIP-;x7tAJp41@`iAifl!2BB6V273dYfG$bW&#`6(b_Gk< zoI^xc=Q9G;7{_pxkjp7N(?^Azob_f+TJ`sbqDg8b63(cqt~Q0nRdrl(=GEqq(lW1V zZ@li)DfGAMsur48a^EYzAOEFR?GF8bvE!kgyFejjdOV~g=hcp#YV*!rs;b-v-5FQq zkg|DPZo=~Yt(gF}5%uc45kxwtG5#|AYT&0zFFz=)Kz^uEGkZDvt^=M0B0KdnK4!RB zw!r=<5H(ak?PKPYu%85?uIk5q%p4JRE&?b`dfCTJLD*-3_$jQ<_?US}*dGAmaCOcm zV1{oGe|G|ijMQ}>Gh@O&3dDx%+kDLY5yw#r>E+4j?H{F_=vIkMi-1E|C?s)w_N{8_a1Gd<_?nK9Cci)NT^YG z%=bahnKpw}K>eCT^(hti;L#^PR&pp1wgkfFKo|^!bRcY^f?F&P1S$lm{ecPrY9Hp# F^dHfkTx$RT From 4c8e3360a0fae5d6fe73c9e36aad31205c70467b Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:33:09 +0000 Subject: [PATCH 333/375] Delete game100.c.o --- .../src/main/c/Template/game100.c.o | Bin 2688 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o diff --git a/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o b/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/src/main/c/Template/game100.c.o deleted file mode 100644 index 123f3d68a0e8a309efd0c037d7e2a1b57dd2602e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2688 zcmb7GO=u)V6n;H3J(;AllV5S8ml3iW51F2c3Cad{GbGXc$%Z6qc16pcPAAT0rhAy~ z$tLXL24O+LgF%G_4|!-;dGPA})T^&v zb-hz=HMYl|FU&o)A96`)Zz%b310LL*?mk6$C3o3lXCvMZD)N?+!+NN!N9X+)JRDjE zHsZZ4Z;)tG$zK$nf@jf?pH;1v9pPFP$H!zN-W?SkUD+UC=3zP#&nsTGIjj+HR@G3i z!q`40p3JXm*^PKX1KwB1#0xg6N1pel!n>jJ`|W@6Y_Ed60#SFbl-wmDX2#S~DKe@) zMwD|sMZ{a&#Qmxd*YN$q`YV@QhnF;-_hp6mzQVf=Jf>~nsVhH(H-Nd*;BYRDO~D`z zV*f3yV~AV}(JUnQDN82aikV}RNdOc2LMN@+!2A}+&6ceVba^(LZJ7_e>iHJZIq9F52ib`PUIOIq{*(c#;_5?0pprB*@a^~1mEL0oZd_E^f|+Tnq<{5&OvR; z60aRO9Z&PZ^LXu2S!~dm{PB8EQyS1yEKEMU+}!LZ_bZR`{py2ePMnvKZrE^ zrB!M$Po9=tu~wb_V!c#e>X%(c_A6EmEmoMDD_j)wlb6QD!o}HfA&C6Iss%zNO}GReDz3}1WN-;-mQ8u#S=qP&h1!+A4zGZ=_<&OJ^#irSF*GbYdF zHeWaF%)8fK@ZY>M0~?=7=EZfzdvOK!fNus#FHbQa8ZL@K|?lyL{9iOM3& j|3Sox6NFuKxJU3TpiP#k98{_Ua?HyyN8)g6sU7|X+R}e= From 2354bdce856d0b3ad0d9cfc12ab7d3abc16bb599 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 10:33:14 +0000 Subject: [PATCH 334/375] Delete word_selector_test.c.o --- .../test/Hangman/word_selector_test.c.o | Bin 3840 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/test/Hangman/word_selector_test.c.o diff --git a/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/test/Hangman/word_selector_test.c.o b/cmake-build-debug/CMakeFiles/pmuw_projekt_notebinder.dir/test/Hangman/word_selector_test.c.o deleted file mode 100644 index 5f7e0fabe5b787d239354803f0fb753e174007f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3840 zcmb7HU2GIp6uz^&vp?OkrL@Rjtc$5c9=6*S2nq7jO3_vp!M21V>ScCzT87TfY-VN) z2uS%!glJ;Xnvj?X4?Msd@d?of4NpXkfd`*7F+LbHG5$mnP!PW}d#AfQ)Ceaz_uO;t zx!*na&N=t)e*M=k|1>ftF%UHo@JVXYV9+9Pob>;oT)Z-HLHPK33}#|rd&Ie`?RSL& z!TIo}k>RTD_b!PJ;f2t@4S+dhi?B%&K5?#Erc(tB;`un|y`3>OBKtFEm%wveTQ|qV za1d{pf&pbJg58aZju2va#>ja=%a_NvlF!@P1nswPNAKWsGvi0agbTv5oDQp=>L7hQ z-5j;ZEr_=~T$%i{z_>2(cH{8G)@Q}Tro91z}g1Usft%bdD+~jn+48ueN|V+=8EsxBaD}UN1yy8zOMiZ;8pU^&`ph| z1oyj5;N2B?w?%wsfG0kA9bPy57J@5dDJ%*GkrUa^VIEl~(M&=T+%_-~eR^Vwm(oZa z4SEkx_m8vd_YO)I?`>qKvBC|^oc8%tXmT*#cx`d~aAHZE#m6sPed6+kt7k7?3{Boh z98P?IHK*bd=1GaS?j7vC2&~heh50wNn7f-M2YtNnW9-h&SkE2I`Tb_>?Bafjt;W7v zD>yxOnACFz`qWZJv9RehtIVy%cE)wXz+fHivuvYKXMs}CM@KbVGga?9iBVNEw7jjj zx@A`V700nuJz!MJj%yXQN)`LQMaz0%9j1)gnpV`z>ZJ*HrCiVhYcp1|tx*k&)qx(+ zlses8tDq@HU~NoCh!0@urtVVg6SdncS%y)r-y}lXr{FlSzP}ri2q|x9#aa_%6WShK zHEIDdj*#3v^?r=0R@u>Oj?x<+)*LrIs_2GRSd(^e;;K8Sm<6l2!?Fu$TXV~{sTI;M zZqMZ!nA9vim1>d0sbhyyzaB}=U9cq8EX_kIhgPz1YM^DqqBY59k|ESWSds=>@L(-v z11+mj2l6s>koE2GTc1qA5~FT1xgOp4N(}ll6HSP#p#w|Ji}oxGr^rsoD5sSyG-JT4 zTJJ+1bDF$W*pGmSc-uqzf*M&T+7sYUNd%Luu5&;p`Q$$ zJ~T?&lRrRXjWka53Ro(>gpp8VGW1S-f_lv~gUz9+qBab2g!R&clU5DI97|7Vwu4$p zcdhE^?C4BC?O8Kjt2#S7x?t($94I!a#2Zp^`Zn{DmIH+Qn7VtF4&hV9kH zU2a;gmd6dO*;y9}lI;h6Q8BY9-U6>=iDl#0jN^8wESu9&ruKnspEjWxRtb|fT1B`Q za=3VhEz5ASLw%c_>=s4cIyBO?5}`PSaTZV?Jv6nbjBA;ESvLw9@1|!IpOe$^n@HV* zO69zFaIkkL9~yXh6Cd8WZ4>8=l}$$3Rx^#&sMachSPh&Ijkc}u955?fe{4hSWC*oED1JV0M`wHVVi+C?wWqrb> zJ$6o>On&v=+K<%q`-gTpZ+|-i+c@|QFvU!HOY2g)w}U}cBV;-S7AC4NGEpfB6IC0T zs2qg}JuM10+swZ#P61LL5;RMF~?T3MMXEW>g@G`QUUV+ z*As=n5_Fgzg&&vXMGd!PIr@UUAi7y@iyo5`SLDagZA4f8BNCEXG^}5d<%U1ywk>iq z923zkax2MWVdEGq;rW;py%IexOIt&Y*eF4t11Iov{tP5;sLV7Z269ssx$Yz+-h1Oj zMZQWeiVVL3B=RcL1BstdxwRF!4);D~M22#O#^*xfCsF1KBygke3R#9k9z{1mVw=%r z!k!iq!t?)7$k!oLUc@xQ*gS9w0RD~Zk`ACtGzg+Mu6CT_P9ZS=_u~raRA)YI61tx+ zG}KgshnI!onIWpFTD?7>=L7n#fSw8Hj92e1uI<-dX7CRBQ^GlSTwKC-iSf}A{+YR> mjJtYKW8xC7KGm?#c5`uu?kdK;)^LlZ6^z<$ukG^MPWCSe Date: Wed, 7 Feb 2024 11:49:09 +0100 Subject: [PATCH 335/375] hangman added to main --- src/main/c/main.c | 72 +++++++++++++++++++++++------------------------ 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/src/main/c/main.c b/src/main/c/main.c index f32de94..bbaaa50 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -2,54 +2,54 @@ #include #include -#include "Hangman/playHangman.h" -#include "Hangman/word_selector.h" -#include "Hangman/drawHangman.h" -#include "Hangman/initializeHangman.h" +#include "Snake/snake_start.h" +#include "Minesweeper/minesweeper_start.h" +#include "Pong/pong.h" +#include "playHangman.h" int main(){ bool running = true; while (running){ - + int option = 0; - + system("clear"); printf("Waehlen Sie eine Option:\n"); - printf("\t1.Spiel1 starten\n"); - printf("\t2.Spiel2 starten\n"); - printf("\t3.Spiel3 starten\n"); + printf("\t1.Hangman1 starten\n"); + printf("\t2.Pong starten\n"); + printf("\t3.Snake starten\n"); printf("\t4.Spiel4 starten\n"); - printf("\t100.Template starten\n"); - printf("\t6.Exit\n"); - + printf("\t7.Minesweeper starten\n"); + printf("\t10.Exit\n"); + scanf("%d", &option); getchar(); switch (option){ - case 1: - playHangman(selectRandomWord()); - break; - case 2: - //start_game2(); - break; - case 3: - //start_game3(); - break; - case 4: - //start_game4(); - break; - case 100: - //start_game100(); - break; - case 6: - system("clear"); - running = false; - break; - - default: - break; + case 1: + playHangman(selectRandomWord()); + break; + case 2: + pong(); + break; + case 3: + snake_start(); + break; + case 4: + //start_game4(); + break; + case 7: + minesweeper_start(); + break; + case 10: + system("clear"); + running = false; + break; + + default: + break; } } - return 0; -} \ No newline at end of file + return 0; +} From 8863e7a088fc8585d11fe54d0515595e257e9b5d Mon Sep 17 00:00:00 2001 From: fdai8032 Date: Wed, 7 Feb 2024 10:50:20 +0000 Subject: [PATCH 336/375] Delete settings.json --- .vscode/settings.json | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index ef6068e..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "files.associations": { - "*.embeddedhtml": "html", - "unistd.h": "c", - "fcntl.h": "c", - "stdio.h": "c", - "types.h": "c" - } -} \ No newline at end of file From fb3ed5b4e8e5d4fc37bbfb55561d8d5fa76a0873 Mon Sep 17 00:00:00 2001 From: fdai8032 Date: Wed, 7 Feb 2024 10:50:26 +0000 Subject: [PATCH 337/375] Delete tasks.json --- .vscode/tasks.json | 28 ---------------------------- 1 file changed, 28 deletions(-) delete mode 100644 .vscode/tasks.json diff --git a/.vscode/tasks.json b/.vscode/tasks.json deleted file mode 100644 index 08d9005..0000000 --- a/.vscode/tasks.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "tasks": [ - { - "type": "cppbuild", - "label": "C/C++: gcc build active file", - "command": "/usr/bin/gcc", - "args": [ - "-fdiagnostics-color=always", - "-g", - "${file}", - "-o", - "${fileDirname}/${fileBasenameNoExtension}" - ], - "options": { - "cwd": "${fileDirname}" - }, - "problemMatcher": [ - "$gcc" - ], - "group": { - "kind": "build", - "isDefault": true - }, - "detail": "Task generated by Debugger." - } - ], - "version": "2.0.0" -} \ No newline at end of file From f2098550653e31da91b24139ec120d483263f822 Mon Sep 17 00:00:00 2001 From: fdai7875 Date: Wed, 7 Feb 2024 11:03:15 +0000 Subject: [PATCH 338/375] Hangman added to main --- src/main/c/main.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/c/main.c b/src/main/c/main.c index f0e5b90..94ded54 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -7,6 +7,7 @@ #include "Snake/snake_start.h" #include "Minesweeper/minesweeper_start.h" #include "Pong/pong.h" +#include "Hangman/playHangman.h" int main(){ bool running = true; @@ -17,7 +18,7 @@ int main(){ system("clear"); printf("Waehlen Sie eine Option:\n"); - printf("\t1.Spiel1 starten\n"); + printf("\t1.Hangman starten\n"); printf("\t2.Pong starten\n"); printf("\t3.Snake starten\n"); printf("\t4.tic_tac_toe starten\n"); @@ -29,7 +30,7 @@ int main(){ switch (option){ case 1: - //start_game1(); + playHangman(selectRandomWord()); break; case 2: pong(); From c7de75c1b9afefc9a339d3ffb42259cfabe5fc87 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Wed, 7 Feb 2024 23:41:11 +0000 Subject: [PATCH 339/375] =?UTF-8?q?Rundenz=C3=A4hler,=20Designanpassungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/c/Template/Battleship_game.c | 162 ++++++++++++++++++-------- 1 file changed, 116 insertions(+), 46 deletions(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index a508ebb..60536f9 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -1,5 +1,6 @@ #include #include +#include int feld(char prifield[]) { @@ -107,8 +108,9 @@ int singleplayer() { !feld(ships1); - printf("Player, platziere dein Schlachtschiff (5).\nKoordinate: "); + printf("\nPlayer, platziere dein Schlachtschiff (5).\nKoordinate: "); scanf(" %c%d", &letco, &numco); + system("cls"); coor1 = convertcoor(letco, numco); @@ -116,7 +118,7 @@ int singleplayer() { for (int i = 0; i < 4; i++) { !feld(ships1); - printf("\n"); + printf("\nKoordinate: "); scanf(" %c%d", &letco, &numco); coor2 = convertcoor(letco, numco); @@ -124,21 +126,26 @@ int singleplayer() { if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else { + system("cls"); printf("Ungueltige Eingabe.\n"); i--; } - !feld(ships1); } - printf("Player, platziere deinen Kreuzer (4).\nKoordinate: "); + !feld(ships1); + + printf("\nPlayer, platziere deinen Kreuzer (4).\nKoordinate: "); scanf(" %c%d", &letco, &numco); + system("cls"); coor1 = convertcoor(letco, numco); @@ -146,7 +153,7 @@ int singleplayer() { for (int i = 0; i < 3; i++) { !feld(ships1); - printf("\n"); + printf("\nKoordinate: "); scanf(" %c%d", &letco, &numco); coor2 = convertcoor(letco, numco); @@ -154,22 +161,28 @@ int singleplayer() { if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else { + system("cls"); printf("Ungueltige Eingabe.\n"); i--; } - !feld(ships1); } for (int i = 0; i < 2; i++) { - printf("Player, platziere deine Zerstoerer 2x(3).\nKoordinate: "); + + !feld(ships1); + + printf("\nPlayer, platziere deine Zerstoerer 2x(3).\nKoordinate: "); scanf(" %c%d", &letco, &numco); + system("cls"); coor1 = convertcoor(letco, numco); @@ -177,7 +190,7 @@ int singleplayer() { for (int i = 0; i < 2; i++) { !feld(ships1); - printf("\n"); + printf("\nKoordinate: "); scanf(" %c%d", &letco, &numco); coor2 = convertcoor(letco, numco); @@ -185,29 +198,34 @@ int singleplayer() { if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else { + system("cls"); printf("Ungueltige Eingabe.\n"); i--; } - !feld(ships1); } } - printf("Player, platziere dein U-Boot (2).\nKoordinate: "); + !feld(ships1); + + printf("\nPlayer, platziere dein U-Boot (2).\nKoordinate: "); scanf(" %c%d", &letco, &numco); + system("cls"); coor1 = convertcoor(letco, numco); ships1[coor1] = 'X'; !feld(ships1); - printf("\n"); + printf("\nKoordinate: "); scanf(" %c%d", &letco, &numco); coor2 = convertcoor(letco, numco); @@ -215,21 +233,27 @@ int singleplayer() { if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else { + system("cls"); printf("Ungueltige Eingabe.\n"); + i--; } - !feld(ships1); + system("cls"); + + int runde = 1; while (score1 || score2 < 16) { !feld(player); - printf("Player 1, gib eine Zielkoordinate ein: "); + printf("Runde %d\n\nScore: %d\n\nPlayer, gib eine Zielkoordinate ein: ", runde, score1); scanf(" %c%d", &letco, &numco); coor = convertcoor(letco, numco); @@ -243,6 +267,8 @@ int singleplayer() { player[coor] = '-'; printf("Kein Treffer.\n"); } + + runde++; } return 0; @@ -285,18 +311,23 @@ int multiplayer() { } - !feld(multi); + system("cls"); + + !feld(ships1); - printf("Player 1, platziere dein Schlachtschiff (5).\nKoordinate: "); + printf("\nPlayer 1, platziere dein Schlachtschiff (5).\nKoordinate: "); scanf(" %c%d", &letco, &numco); + system("cls"); coor1 = convertcoor(letco, numco); ships1[coor1] = 'X'; + !feld(ships1); + for (int i = 0; i < 4; i++) { !feld(ships1); - printf("\n"); + printf("\nKoordinate: "); scanf(" %c%d", &letco, &numco); coor2 = convertcoor(letco, numco); @@ -304,21 +335,26 @@ int multiplayer() { if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else { - printf("Ungueltige Eingabe.\n"); - i--; + system("cls"); + printf("Ungueltige Eingabe.\n"); + i--; } - !feld(ships1); } - printf("Player 1, platziere deinen Kreuzer (4).\nKoordinate: "); + !feld(ships1); + + printf("\nPlayer 1, platziere deinen Kreuzer (4).\nKoordinate: "); scanf(" %c%d", &letco, &numco); + system("cls"); coor1 = convertcoor(letco, numco); @@ -326,7 +362,7 @@ int multiplayer() { for (int i = 0; i < 3; i++) { !feld(ships1); - printf("\n"); + printf("\nKoordinate: "); scanf(" %c%d", &letco, &numco); coor2 = convertcoor(letco, numco); @@ -334,22 +370,28 @@ int multiplayer() { if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else { + system("cls"); printf("Ungueltige Eingabe.\n"); i--; } - !feld(ships1); } for (int i = 0; i < 2; i++) { - printf("Player 1, platziere deine Zerstoerer 2x(3).\nKoordinate: "); + + !feld(ships1); + + printf("\nPlayer 1, platziere deine Zerstoerer 2x(3).\nKoordinate: "); scanf(" %c%d", &letco, &numco); + system("cls"); coor1 = convertcoor(letco, numco); @@ -357,7 +399,7 @@ int multiplayer() { for (int i = 0; i < 2; i++) { !feld(ships1); - printf("\n"); + printf("\nKoordinate: "); scanf(" %c%d", &letco, &numco); coor2 = convertcoor(letco, numco); @@ -365,29 +407,34 @@ int multiplayer() { if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else { + system("cls"); printf("Ungueltige Eingabe.\n"); i--; } - !feld(ships1); } } - printf("Player 1, platziere dein U-Boot (2).\nKoordinate: "); + !feld(ships1); + + printf("\nPlayer 1, platziere dein U-Boot (2).\nKoordinate: "); scanf(" %c%d", &letco, &numco); + system("cls"); coor1 = convertcoor(letco, numco); ships1[coor1] = 'X'; !feld(ships1); - printf("\n"); + printf("\nKoordinate: "); scanf(" %c%d", &letco, &numco); coor2 = convertcoor(letco, numco); @@ -395,24 +442,28 @@ int multiplayer() { if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { ships1[coor2] = 'X'; coor1 = coor2; + system("cls"); } else { + system("cls"); printf("Ungueltige Eingabe.\n"); + i--; } !feld(ships1); - - printf("\n\n\n"); + system("cls"); !feld(ships2); - printf("Player 2, platziere dein Schlachtschiff (5).\nKoordinate: "); + printf("\nPlayer 2, platziere dein Schlachtschiff (5).\nKoordinate: "); scanf(" %c%d", &letco, &numco); + system("cls"); coor1 = convertcoor(letco, numco); @@ -420,7 +471,7 @@ int multiplayer() { for (int i = 0; i < 4; i++) { !feld(ships2); - printf("\n"); + printf("\nKoordinate: "); scanf(" %c%d", &letco, &numco); coor2 = convertcoor(letco, numco); @@ -428,21 +479,26 @@ int multiplayer() { if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { ships2[coor2] = 'X'; coor1 = coor2; + system("cls"); } else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { ships2[coor2] = 'X'; coor1 = coor2; + system("cls"); } else { + system("cls"); printf("Ungueltige Eingabe.\n"); i--; } - !feld(ships2); } - printf("Player 2, platziere deinen Kreuzer (4).\nKoordinate: "); + !feld(ships2); + + printf("\nPlayer 2, platziere deinen Kreuzer (4).\nKoordinate: "); scanf(" %c%d", &letco, &numco); + system("cls"); coor1 = convertcoor(letco, numco); @@ -450,7 +506,7 @@ int multiplayer() { for (int i = 0; i < 3; i++) { !feld(ships2); - printf("\n"); + printf("\nKoordinate: "); scanf(" %c%d", &letco, &numco); coor2 = convertcoor(letco, numco); @@ -458,22 +514,28 @@ int multiplayer() { if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { ships2[coor2] = 'X'; coor1 = coor2; + system("cls"); } else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { ships2[coor2] = 'X'; coor1 = coor2; + system("cls"); } else { + system("cls"); printf("Ungueltige Eingabe.\n"); i--; } - !feld(ships2); } for (int i = 0; i < 2; i++) { - printf("Player 2, platziere deine Zerstoerer 2x(3).\nKoordinate: "); + + !feld(ships2); + + printf("\nPlayer 2, platziere deine Zerstoerer 2x(3).\nKoordinate: "); scanf(" %c%d", &letco, &numco); + system("cls"); coor1 = convertcoor(letco, numco); @@ -481,7 +543,7 @@ int multiplayer() { for (int i = 0; i < 2; i++) { !feld(ships2); - printf("\n"); + printf("\nKoordinate: "); scanf(" %c%d", &letco, &numco); coor2 = convertcoor(letco, numco); @@ -489,29 +551,34 @@ int multiplayer() { if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { ships2[coor2] = 'X'; coor1 = coor2; + system("cls"); } else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { ships2[coor2] = 'X'; coor1 = coor2; + system("cls"); } else { + system("cls"); printf("Ungueltige Eingabe.\n"); i--; } - !feld(ships2); } } - printf("Player 2, platziere dein U-Boot (2).\nKoordinate: "); + !feld(ships2); + + printf("\nPlayer 2, platziere dein U-Boot (2).\nKoordinate: "); scanf(" %c%d", &letco, &numco); + system("cls"); coor1 = convertcoor(letco, numco); ships2[coor1] = 'X'; !feld(ships2); - printf("\n"); + printf("\nKoordinate: "); scanf(" %c%d", &letco, &numco); coor2 = convertcoor(letco, numco); @@ -519,24 +586,27 @@ int multiplayer() { if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { ships2[coor2] = 'X'; coor1 = coor2; + system("cls"); } else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { ships2[coor2] = 'X'; coor1 = coor2; + system("cls"); } else { + system("cls"); printf("Ungueltige Eingabe.\n"); + i--; } - !feld(ships2); - - printf("\n\n\n"); + system("cls"); + int runde = 1; while (score1 || score2 < 16) { !feld(player1); - printf("Player 1, gib eine Zielkoordinate ein: "); + printf("Runde %d\n\nScore: %d\n\nPlayer 1, gib eine Zielkoordinate ein: ", runde, score1); scanf(" %c%d", &letco, &numco); coor = convertcoor(letco, numco); @@ -552,7 +622,7 @@ int multiplayer() { } !feld(player2); - printf("Player 2, gib eine Zielkoordinate ein: "); + printf("Runde %d\n\nScore: %d\n\nPlayer 2, gib eine Zielkoordinate ein: ", runde, score2); scanf(" %c%d", &letco, &numco); coor = convertcoor(letco, numco); @@ -567,7 +637,7 @@ int multiplayer() { printf("Kein Treffer.\n"); } - + runde++; } if (score1 = 16) { From 6f5a6adc7a7c69c7336f17bf9219575f69dbc951 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Thu, 8 Feb 2024 00:45:14 +0000 Subject: [PATCH 340/375] Scoresystem Refactoring --- src/main/c/Template/Battleship_game.c | 194 +++++++++++++++----------- 1 file changed, 116 insertions(+), 78 deletions(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 60536f9..752790a 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -224,52 +224,73 @@ int singleplayer() { ships1[coor1] = 'X'; - !feld(ships1); - printf("\nKoordinate: "); - scanf(" %c%d", &letco, &numco); + for (int i = 0; i < 1; i++) { + !feld(ships1); + printf("\nKoordinate: "); + scanf(" %c%d", &letco, &numco); - coor2 = convertcoor(letco, numco); + coor2 = convertcoor(letco, numco); - if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { - ships1[coor2] = 'X'; - coor1 = coor2; - system("cls"); - } - else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { - ships1[coor2] = 'X'; - coor1 = coor2; - system("cls"); - } - else { - system("cls"); - printf("Ungueltige Eingabe.\n"); - i--; + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships1[coor2] = 'X'; + coor1 = coor2; + system("cls"); + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships1[coor2] = 'X'; + coor1 = coor2; + system("cls"); + } + else { + system("cls"); + printf("Ungueltige Eingabe.\n"); + i--; + } } system("cls"); int runde = 1; + int higherscore = 0; - while (score1 || score2 < 16) { + while (higherscore < 16) { - !feld(player); - printf("Runde %d\n\nScore: %d\n\nPlayer, gib eine Zielkoordinate ein: ", runde, score1); - scanf(" %c%d", &letco, &numco); + !feld(player); + printf("Runde %d\n\nScore: %d\n\nPlayer, gib eine Zielkoordinate ein: ", runde, score1); + scanf(" %c%d", &letco, &numco); - coor = convertcoor(letco, numco); + coor = convertcoor(letco, numco); - if (ships2[coor] == 'X') { - player[coor] = 'X'; - score1 += 1; - printf("Treffer!!\n"); - } - else { - player[coor] = '-'; - printf("Kein Treffer.\n"); + if (ships2[coor] == 'X') { + player[coor] = 'X'; + score1 += 1; + system("cls"); + printf("Treffer!!\n\n"); + } + else { + player[coor] = '-'; + system("cls"); + printf("Kein Treffer.\n\n"); + } + + if (score1 >= score2) { + higherscore = score1; + } + else { + higherscore = score2; + } + + runde++; } - runde++; - } + system("cls"); + + if (score1 = 16) { + printf("Player 1 hat gewonnen."); + } + if (score2 = 16) { + printf("Player 2 hat gewonnen."); + } return 0; } @@ -323,7 +344,6 @@ int multiplayer() { coor1 = convertcoor(letco, numco); ships1[coor1] = 'X'; - !feld(ships1); for (int i = 0; i < 4; i++) { !feld(ships1); @@ -433,26 +453,28 @@ int multiplayer() { ships1[coor1] = 'X'; - !feld(ships1); - printf("\nKoordinate: "); - scanf(" %c%d", &letco, &numco); + for (int i = 0; i < 1; i++) { + !feld(ships1); + printf("\nKoordinate: "); + scanf(" %c%d", &letco, &numco); - coor2 = convertcoor(letco, numco); + coor2 = convertcoor(letco, numco); - if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { - ships1[coor2] = 'X'; - coor1 = coor2; - system("cls"); - } - else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { - ships1[coor2] = 'X'; - coor1 = coor2; - system("cls"); - } - else { - system("cls"); - printf("Ungueltige Eingabe.\n"); - i--; + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships1[coor2] = 'X'; + coor1 = coor2; + system("cls"); + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships1[coor2] = 'X'; + coor1 = coor2; + system("cls"); + } + else { + system("cls"); + printf("Ungueltige Eingabe.\n"); + i--; + } } !feld(ships1); @@ -577,33 +599,36 @@ int multiplayer() { ships2[coor1] = 'X'; - !feld(ships2); - printf("\nKoordinate: "); - scanf(" %c%d", &letco, &numco); + for (int i = 0; i < 1; i++) { + !feld(ships2); + printf("\nKoordinate: "); + scanf(" %c%d", &letco, &numco); - coor2 = convertcoor(letco, numco); + coor2 = convertcoor(letco, numco); - if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { - ships2[coor2] = 'X'; - coor1 = coor2; - system("cls"); - } - else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { - ships2[coor2] = 'X'; - coor1 = coor2; - system("cls"); - } - else { - system("cls"); - printf("Ungueltige Eingabe.\n"); - i--; + if (coor2 == coor1 + 1 || coor2 == coor1 - 1) { + ships2[coor2] = 'X'; + coor1 = coor2; + system("cls"); + } + else if (coor2 == coor1 + 10 || coor2 == coor1 - 10) { + ships2[coor2] = 'X'; + coor1 = coor2; + system("cls"); + } + else { + system("cls"); + printf("Ungueltige Eingabe.\n"); + i--; + } } system("cls"); int runde = 1; + int higherscore = 0; - while (score1 || score2 < 16) { + while (higherscore < 16) { !feld(player1); printf("Runde %d\n\nScore: %d\n\nPlayer 1, gib eine Zielkoordinate ein: ", runde, score1); @@ -611,14 +636,16 @@ int multiplayer() { coor = convertcoor(letco, numco); - if (ships2[coor] = 'X') { + if (ships2[coor] == 'X') { player1[coor] = 'X'; score1 += 1; - printf("Treffer!!\n"); + system("cls"); + printf("Treffer!!\n\n"); } else { - player[coor] = '-' - printf("Kein Treffer.\n") + player1[coor] = '-'; + system("cls"); + printf("Kein Treffer.\n"); } !feld(player2); @@ -630,21 +657,32 @@ int multiplayer() { if (ships1[coor] == 'X') { player2[coor] = 'X'; score2 += 1; - printf("Treffer!!\n"); + system("cls"); + printf("Treffer!!\n\n"); } else { player2[coor] = '-'; + system("cls"); printf("Kein Treffer.\n"); } + if (score1 >= score2) { + higherscore = score1; + } + else { + higherscore = score2; + } + runde++; } + system("cls"); + if (score1 = 16) { printf("Player 1 hat gewonnen."); } - if (score1 = 16) { - printf("Player 1 hat gewonnen."); + if (score2 = 16) { + printf("Player 2 hat gewonnen."); } return 0; From 2ce5b23ec55d7069fdc7311f2289f2dff2d1c75f Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Thu, 8 Feb 2024 19:55:26 +0100 Subject: [PATCH 341/375] fix running bug --- CMakeLists.txt | 33 +++++++++++++++++++++++++++++++++ src/main/c/Pong/pong.c | 12 ++++++------ 2 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..62043bc --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,33 @@ +cmake_minimum_required(VERSION 3.26) +project(arcade C) + +set(CMAKE_C_STANDARD 11) + +include_directories(src/main/c) +include_directories(src/main/c/GameTic_Tac_Toe) +include_directories(src/main/c/Hangman) +include_directories(src/main/c/Minesweeper) +include_directories(src/main/c/Pong) +include_directories(src/main/c/Snake) + +add_executable(arcade + src/main/c/GameTic_Tac_Toe/tictactoe.c + src/main/c/GameTic_Tac_Toe/tictactoe.h + src/main/c/Hangman/drawHangman.c + src/main/c/Hangman/drawHangman.h + src/main/c/Hangman/initializeHangman.c + src/main/c/Hangman/initializeHangman.h + src/main/c/Hangman/playHangman.c + src/main/c/Hangman/playHangman.h + src/main/c/Hangman/word_selector.c + src/main/c/Hangman/word_selector.h + src/main/c/Minesweeper/minesweeper_start.c + src/main/c/Minesweeper/minesweeper_start.h + src/main/c/Pong/pong.c + src/main/c/Pong/pong.h + src/main/c/Snake/get_character.c + src/main/c/Snake/get_character.h + src/main/c/Snake/snake_start.c + src/main/c/Snake/snake_start.h + src/main/c/main.c + src/main/c/main.h) diff --git a/src/main/c/Pong/pong.c b/src/main/c/Pong/pong.c index 190f4c8..66476ad 100644 --- a/src/main/c/Pong/pong.c +++ b/src/main/c/Pong/pong.c @@ -55,7 +55,7 @@ void drawField(int paddle1PositionY, int paddle2PositionY, Ball ball, int score1 printf("Drücken Sie 'q', um das Spiel zu beenden.\n"); } -int kbhit(void){ +int kb_hit(void){ struct termios oldt, newt; int ch, oldf; @@ -78,7 +78,7 @@ int kbhit(void){ return 0; } -int getch(void) { +int get_ch(void) { int ch; while ((ch = getchar()) == '\n'); @@ -157,8 +157,8 @@ int pong(){ while (score1 < maxScore && score2 < maxScore) { //Steuerung für Schläger 1 - if (!isPaused && kbhit()){ - char input = getch(); + if (!isPaused && kb_hit()){ + char input = get_ch(); if (input == 'w' && paddle1PositionY > 1) { paddle1PositionY--; @@ -174,8 +174,8 @@ int pong(){ } //Steuerung für Schläger 2 - if (!isPaused && kbhit()){ - char input = getch(); + if (!isPaused && kb_hit()){ + char input = get_ch(); if (input == 'i' && paddle2PositionY > 1){ paddle2PositionY--; } else if (input == 'k' && paddle2PositionY < HEIGHT - PADDLE_LENGTH - 1){ From 1e2e35b0bcb131c4896d66c2a0728065bc8d5963 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Thu, 8 Feb 2024 20:02:33 +0000 Subject: [PATCH 342/375] Update test/test_battleship.c --- test/test_battleship.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/test/test_battleship.c b/test/test_battleship.c index 8b13789..68a4e16 100644 --- a/test/test_battleship.c +++ b/test/test_battleship.c @@ -1 +1,25 @@ +#ifdef TEST +#include "unity.h" +#include "battleship_game.h" + + +void setUp(void){ + +} +void tearDown(void){ +} + + +void test_convertcoor(void) { + + int output; + + + output = convertcoor('b', 5); + + + TEST_ASSERT_EQUAL_INT(14, output); +} + +#endif From d260ad59d57e2ba7ae9f72e46ee51c493889f8df Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Thu, 8 Feb 2024 21:03:55 +0100 Subject: [PATCH 343/375] test displayRules --- test/Hangman/test_initializeHangman.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 test/Hangman/test_initializeHangman.c diff --git a/test/Hangman/test_initializeHangman.c b/test/Hangman/test_initializeHangman.c new file mode 100644 index 0000000..9b5238b --- /dev/null +++ b/test/Hangman/test_initializeHangman.c @@ -0,0 +1,23 @@ +#include +#include "playHangman.h" + + +void test_displayRules() { + printf("Test Case 1: User inputs '1'\n"); + printf("Expected Output: 'Let's get started!'\n"); + printf("Actual Output: "); + printf("1\n"); + displayRules(); + + printf("\nTest Case 2: User inputs '2'\n"); + printf("Expected Output: Output of printRules() function\n"); + printf("Actual Output: "); + printf("2\n"); + displayRules(); + + printf("\nTest Case 3: User inputs invalid value\n"); + printf("Expected Output: 'Please enter either 1 or 2 to continue'\n"); + printf("Actual Output: "); + printf("invalid\n"); + displayRules(); +} From 7981d1fb692df505ee359cc8234a6a9d957cf2ef Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Thu, 8 Feb 2024 21:21:33 +0100 Subject: [PATCH 344/375] score added --- src/main/c/Hangman/playHangman.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 93d9998..68e34c0 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -11,6 +11,7 @@ char toLower(char ch) { void playHangman(char *wordToGuess) { int mistakes = 0; + int score = 10; char guessedLetters[30] = ""; //Guessed letters char currentGuess[50]; //Current state of the guessed word @@ -62,12 +63,14 @@ void playHangman(char *wordToGuess) { // Update mistakes (if the guess is wrong) if (!found) { mistakes++; + score--; } // Win: Check if the player guessed all the letters if (strcmp(currentGuess, wordToGuess) == 0) { currentState(currentGuess, mistakes); printf("Bravo! You guessed the word: %s \n", wordToGuess); + printf("your score is %d/10\n", score); printf("\n" " __ __ __ __ _ \n" " \\ \\ / /__ _ _ \\ \\ / /__ _ _ | |\n" From 50cf84877ddc6005e6404456b0eed43f4cf6ac0b Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Thu, 8 Feb 2024 23:06:22 +0100 Subject: [PATCH 345/375] adding difficulty to playHangman part one --- .idea/vcs.xml | 7 +++++++ src/main/c/Hangman/playHangman.c | 10 +++++++++- src/main/c/Hangman/playHangman.h | 4 ++-- 3 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 .idea/vcs.xml diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..9599e0f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 68e34c0..166a23b 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -9,14 +9,22 @@ char toLower(char ch) { return ch; } -void playHangman(char *wordToGuess) { +void playHangman() { + char *wordToGuess; int mistakes = 0; int score = 10; char guessedLetters[30] = ""; //Guessed letters char currentGuess[50]; //Current state of the guessed word + int difficulty; displayRules(); + printf("choose the difficulty level: (1 or 2)\n"); + printf("1. Easy \n"); + printf("2. Hard \n"); + scanf("%d", &difficulty); + wordToGuess = selectRandomWord(difficulty); + // Initialize the current guess and print the rules initializeHangman(wordToGuess, currentGuess); currentState(currentGuess, mistakes); diff --git a/src/main/c/Hangman/playHangman.h b/src/main/c/Hangman/playHangman.h index 01e6e6d..b516283 100644 --- a/src/main/c/Hangman/playHangman.h +++ b/src/main/c/Hangman/playHangman.h @@ -10,13 +10,13 @@ // Include function implementations directly from .c files -void playHangman(char *wordToGuess); +void playHangman(); void initializeHangman(char *wordToGuess, char *currentGuess); void printRules(); void drawHangman(int incorrectGuesses); void currentState(char *currentGuess, int mistakes); const char* selectRandomWord(); -const char wordsList[NUM_WORDS][MAX_WORD_LENGTH + 1]; +const char wordsList_easy[NUM_WORDS][MAX_WORD_LENGTH + 1]; void displayRules(); #define MAX_MISTAKES 6 From c726d4f19acadfae274305ead298e8a330f9b6d4 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Thu, 8 Feb 2024 23:07:19 +0100 Subject: [PATCH 346/375] adding difficulty to initialize (part two) --- src/main/c/Hangman/word_selector.c | 68 ++++++++++++++++++++++-------- src/main/c/main.c | 2 +- 2 files changed, 52 insertions(+), 18 deletions(-) diff --git a/src/main/c/Hangman/word_selector.c b/src/main/c/Hangman/word_selector.c index 5b2b914..ff25adb 100644 --- a/src/main/c/Hangman/word_selector.c +++ b/src/main/c/Hangman/word_selector.c @@ -1,33 +1,67 @@ #include "word_selector.h" +#include "playHangman.h" -const char wordsList[NUM_WORDS][MAX_WORD_LENGTH + 1] = { - "skill", +// easy words +const char wordsList_easy[NUM_WORDS][MAX_WORD_LENGTH + 1] = { + "apple", "world", - "difference", - "celebration", - "association", - "customer", + "banana", + "cat", + "lemon", + "dog", "mood", - "agreement", - "audience", - "professor", + "orange", + "kite", + "nest", "year", - "dealer", - "patience", - "table tennis", - "pollution", - "awareness", + "grape", + "sun", + "mouse", + "tennis", + "queen", "problem", "vehicle", "death", "cousin" }; -const char* selectRandomWord() { +// hard words +const char wordsList_hard[NUM_WORDS][MAX_WORD_LENGTH + 1] = { + "database", + "programming", + "mountain", + "customer", + "table tennis", + "customer", + "laughter", + "expression", + "audience", + "professor", + "twilight", + "dealer", + "symphony", + "table tennis", + "pollution", + "inspiration", + "supermarket", + "difficulty", + "budget", + "quarter" +}; + +const char* selectRandomWord(int difficulty) { - // pick a random number and assign it to index of wordsList array + // pick a random number and assign it to index of wordsList_easy array srand((unsigned int)time(NULL)); int randomIndex = rand() % NUM_WORDS; - return wordsList[randomIndex]; + switch(difficulty){ + case 1: + return wordsList_easy[randomIndex]; + case 2: + return wordsList_hard[randomIndex]; + default: + printf("Invalid difficulty level. Using easy difficulty.\n"); + return wordsList_easy[randomIndex]; + } } \ No newline at end of file diff --git a/src/main/c/main.c b/src/main/c/main.c index 4f8b2c5..6155d68 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -30,7 +30,7 @@ int main(){ switch (option){ case 1: - playHangman(selectRandomWord()); + playHangman(); break; case 2: pong(); From 96f7a2f77abc8cea751e13dcc723965ab68ec578 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Thu, 8 Feb 2024 23:21:23 +0100 Subject: [PATCH 347/375] clean up word_selector --- src/main/c/Hangman/word_selector.c | 7 +++---- src/main/c/Hangman/word_selector.h | 4 ++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/c/Hangman/word_selector.c b/src/main/c/Hangman/word_selector.c index ff25adb..ec9c547 100644 --- a/src/main/c/Hangman/word_selector.c +++ b/src/main/c/Hangman/word_selector.c @@ -1,8 +1,7 @@ #include "word_selector.h" -#include "playHangman.h" // easy words -const char wordsList_easy[NUM_WORDS][MAX_WORD_LENGTH + 1] = { +char wordsList_easy[NUM_WORDS][MAX_WORD_LENGTH + 1] = { "apple", "world", "banana", @@ -26,7 +25,7 @@ const char wordsList_easy[NUM_WORDS][MAX_WORD_LENGTH + 1] = { }; // hard words -const char wordsList_hard[NUM_WORDS][MAX_WORD_LENGTH + 1] = { +char wordsList_hard[NUM_WORDS][MAX_WORD_LENGTH + 1] = { "database", "programming", "mountain", @@ -49,7 +48,7 @@ const char wordsList_hard[NUM_WORDS][MAX_WORD_LENGTH + 1] = { "quarter" }; -const char* selectRandomWord(int difficulty) { +char* selectRandomWord(int difficulty) { // pick a random number and assign it to index of wordsList_easy array srand((unsigned int)time(NULL)); diff --git a/src/main/c/Hangman/word_selector.h b/src/main/c/Hangman/word_selector.h index d606871..cb13eb7 100644 --- a/src/main/c/Hangman/word_selector.h +++ b/src/main/c/Hangman/word_selector.h @@ -9,4 +9,8 @@ #define MAX_WORD_LENGTH 20 #define NUM_WORDS 20 +char* selectRandomWord(); +char wordsList_easy[NUM_WORDS][MAX_WORD_LENGTH + 1]; +char wordsList_hard[NUM_WORDS][MAX_WORD_LENGTH + 1]; + #endif //PMUW_PROJEKT_NOTEBINDER_WORD_SELECTOR_H From 2294174e2f6a47da4bbeb876d97ccc4cfe6447a1 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Thu, 8 Feb 2024 23:21:49 +0100 Subject: [PATCH 348/375] clean up header files --- src/main/c/Hangman/drawHangman.h | 3 +++ src/main/c/Hangman/initializeHangman.h | 5 +++++ src/main/c/Hangman/playHangman.h | 10 ++-------- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/c/Hangman/drawHangman.h b/src/main/c/Hangman/drawHangman.h index 2c31273..2c1256d 100644 --- a/src/main/c/Hangman/drawHangman.h +++ b/src/main/c/Hangman/drawHangman.h @@ -3,4 +3,7 @@ #include +void drawHangman(int incorrectGuesses); +void currentState(char *currentGuess, int mistakes); + #endif //PMUW_PROJEKT_NOTEBINDER_DRAWHANGMAN_H diff --git a/src/main/c/Hangman/initializeHangman.h b/src/main/c/Hangman/initializeHangman.h index 58f5700..a7159d1 100644 --- a/src/main/c/Hangman/initializeHangman.h +++ b/src/main/c/Hangman/initializeHangman.h @@ -3,4 +3,9 @@ #include #include #include + +void initializeHangman(char *wordToGuess, char *currentGuess); +void printRules(); +void displayRules(); + #endif //PMUW_PROJEKT_NOTEBINDER_INITIALIZEHANGMAN_H diff --git a/src/main/c/Hangman/playHangman.h b/src/main/c/Hangman/playHangman.h index b516283..4adc2ce 100644 --- a/src/main/c/Hangman/playHangman.h +++ b/src/main/c/Hangman/playHangman.h @@ -8,16 +8,10 @@ #include "drawHangman.h" #include "word_selector.h" +#define MAX_MISTAKES 6 + // Include function implementations directly from .c files void playHangman(); -void initializeHangman(char *wordToGuess, char *currentGuess); -void printRules(); -void drawHangman(int incorrectGuesses); -void currentState(char *currentGuess, int mistakes); -const char* selectRandomWord(); -const char wordsList_easy[NUM_WORDS][MAX_WORD_LENGTH + 1]; -void displayRules(); -#define MAX_MISTAKES 6 #endif // PMUW_PROJEKT_NOTEBINDER_PLAYHANGMAN_H From 548df522ad8b3a1ecc51c8608d1f17e36073c07b Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Thu, 8 Feb 2024 23:31:39 +0100 Subject: [PATCH 349/375] super hard words in list --- src/main/c/Hangman/word_selector.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/main/c/Hangman/word_selector.c b/src/main/c/Hangman/word_selector.c index ec9c547..ed6d2ac 100644 --- a/src/main/c/Hangman/word_selector.c +++ b/src/main/c/Hangman/word_selector.c @@ -48,6 +48,30 @@ char wordsList_hard[NUM_WORDS][MAX_WORD_LENGTH + 1] = { "quarter" }; +// super hard words +char wordsList_super_hard[NUM_WORDS][MAX_WORD_LENGTH + 1] = { + "Cacophony", + "Rambunctious", + "Serendipity", + "Resilience", + "Discombobulate", + "Pernicious", + "Eccentricity", + "Mellifluous", + "Ineffable", + "Obfuscate", + "Quixotic", + "Paradoxical", + "Esoteric", + "Perspicacious", + "Indubitable", + "Incandescent", + "Vicissitude", + "Juxtaposition", + "Exacerbate", + "Epiphany" +}; + char* selectRandomWord(int difficulty) { // pick a random number and assign it to index of wordsList_easy array @@ -59,6 +83,8 @@ char* selectRandomWord(int difficulty) { return wordsList_easy[randomIndex]; case 2: return wordsList_hard[randomIndex]; + case 3: + return wordsList_super_hard[randomIndex]; default: printf("Invalid difficulty level. Using easy difficulty.\n"); return wordsList_easy[randomIndex]; From d0197b20aab5b53b3bf4f7eae12658a88aff12a8 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Thu, 8 Feb 2024 23:36:29 +0100 Subject: [PATCH 350/375] super hard level added to game --- src/main/c/Hangman/playHangman.c | 3 ++- src/main/c/Hangman/word_selector.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 166a23b..4aa6739 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -19,9 +19,10 @@ void playHangman() { displayRules(); - printf("choose the difficulty level: (1 or 2)\n"); + printf("choose the difficulty level: (1, 2 or 3)\n"); printf("1. Easy \n"); printf("2. Hard \n"); + printf("3. Super hard \n"); scanf("%d", &difficulty); wordToGuess = selectRandomWord(difficulty); diff --git a/src/main/c/Hangman/word_selector.c b/src/main/c/Hangman/word_selector.c index ed6d2ac..2edbc1c 100644 --- a/src/main/c/Hangman/word_selector.c +++ b/src/main/c/Hangman/word_selector.c @@ -86,7 +86,7 @@ char* selectRandomWord(int difficulty) { case 3: return wordsList_super_hard[randomIndex]; default: - printf("Invalid difficulty level. Using easy difficulty.\n"); + printf("Invalid difficulty level. We choose easy level for you.\n"); return wordsList_easy[randomIndex]; } } \ No newline at end of file From 31b3bbfb83761683e08aec16fef985886de3dc59 Mon Sep 17 00:00:00 2001 From: Saba Fazlali Date: Thu, 8 Feb 2024 23:56:19 +0100 Subject: [PATCH 351/375] ask the player for retry --- src/main/c/Hangman/playHangman.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/c/Hangman/playHangman.c b/src/main/c/Hangman/playHangman.c index 4aa6739..59fa7cc 100644 --- a/src/main/c/Hangman/playHangman.c +++ b/src/main/c/Hangman/playHangman.c @@ -93,7 +93,17 @@ void playHangman() { if (mistakes == MAX_MISTAKES) { currentState(currentGuess, mistakes); printf("Oops! You have no more guesses :( \n The answer was: %s \n", wordToGuess); - break; + int retry; + printf("Do you want to retry? \n"); + printf("1. YES\n"); + printf("2. NO\n"); + scanf("%d", &retry); + + if (retry == 1){ + playHangman(); + } else { + break; + } } currentState(currentGuess, mistakes); From b33ddd54f145f3ed0a09d73b7d481b1e3cfbeea4 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:26:00 +0000 Subject: [PATCH 352/375] hitgenerator --- src/main/c/Template/Battleship_game.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 752790a..d71e93a 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -68,6 +68,15 @@ int convertcoor(char a, int b) { return co; } +int hitgenerator() { + + int hit; + + hit = rand() % 100; + + return hit; +} + int singleplayer() { char player[100]; @@ -253,7 +262,7 @@ int singleplayer() { int runde = 1; int higherscore = 0; - while (higherscore < 16) { + while (higherscore < 17) { !feld(player); printf("Runde %d\n\nScore: %d\n\nPlayer, gib eine Zielkoordinate ein: ", runde, score1); @@ -285,10 +294,10 @@ int singleplayer() { system("cls"); - if (score1 = 16) { + if (score1 = 17) { printf("Player 1 hat gewonnen."); } - if (score2 = 16) { + if (score2 = 17) { printf("Player 2 hat gewonnen."); } @@ -628,7 +637,7 @@ int multiplayer() { int runde = 1; int higherscore = 0; - while (higherscore < 16) { + while (higherscore < 17) { !feld(player1); printf("Runde %d\n\nScore: %d\n\nPlayer 1, gib eine Zielkoordinate ein: ", runde, score1); @@ -678,10 +687,10 @@ int multiplayer() { system("cls"); - if (score1 = 16) { + if (score1 = 17) { printf("Player 1 hat gewonnen."); } - if (score2 = 16) { + if (score2 = 17) { printf("Player 2 hat gewonnen."); } From a339d512a9838def58093393cceb81f0b5268818 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:40:27 +0000 Subject: [PATCH 353/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index d71e93a..f44829d 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -265,7 +265,7 @@ int singleplayer() { while (higherscore < 17) { !feld(player); - printf("Runde %d\n\nScore: %d\n\nPlayer, gib eine Zielkoordinate ein: ", runde, score1); + printf("Runde %d\n\nDein Score: %d\n\nGegnerischer Score: %d\n\nPlayer, gib eine Zielkoordinate ein: ", runde, score1, score2); scanf(" %c%d", &letco, &numco); coor = convertcoor(letco, numco); @@ -282,6 +282,17 @@ int singleplayer() { printf("Kein Treffer.\n\n"); } + coor = hitgenerator(); + + int f = 0; + + while (f != 1) { + + if (progplayer[coor] == '0') { + f = 1; + } + } + if (score1 >= score2) { higherscore = score1; } From 01132fd49eafd5c29f71b5b40105a7d4d643b420 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:41:03 +0000 Subject: [PATCH 354/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index f44829d..50d9322 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -293,6 +293,18 @@ int singleplayer() { } } + if (ships1[coor] == 'X') { + progplayer[coor] = 'X'; + score2 += 1; + system("cls"); + printf("Treffer!!\n\n"); + } + else { + progplayer[coor] = '-'; + system("cls"); + printf("Kein Treffer.\n\n"); + } + if (score1 >= score2) { higherscore = score1; } From 3badada5dac81e403a630df472c1195060a01bea Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:42:32 +0000 Subject: [PATCH 355/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 50d9322..f566d42 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -68,6 +68,24 @@ int convertcoor(char a, int b) { return co; } +int* coorgenerator() { + + int randomcoor[100] = {44, 45, 55, 54, 53, 43, 33, 34, 35, 36, 46, 56, 66, 65, 64, 63, 62, 52, 42, 32, 22, 23, 24, 25, 26, 27, 37, 47, 57, 67, 77, 76, 75, 74, 73, 72, 71, 61, 51, 41, 31, 21, 11, 12, 13, 14, 15, 16, 17, 18, 28, 38, 48, 58, 68, 78, 88, 87, 86, 85, 84, 83, 82, 81, 80, 70, 60, 50, 40, 30, 20, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 19, 29, 39, 49, 59, 69, 79, 89, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90}; + int shipcoor[17]; + int* shipcoorptr[17]; + int co, vers, direct; + int a = 0; + + int* returnarr = (int*)malloc(17* sizeof(int)); + + if (returnarr == NULL) { + perror("Memory allocation failed"); + exit(1); + } + + return returnarr; +} + int hitgenerator() { int hit; From e44039430c40bc3266bae52dac6ff8410eb71f61 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:43:32 +0000 Subject: [PATCH 356/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index f566d42..1a4774b 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -83,6 +83,30 @@ int* coorgenerator() { exit(1); } + srand(time(NULL)); + + //(5)-er + + int ranco = rand() % 4; + + co = randomcoor[ranco]; + + int ranvers = rand()%5; + int randirect = rand()%4; + + if (randirect == 0) { + co = co + ranvers; + } + if (randirect == 1) { + co = co - ranvers; + } + if (randirect == 2) { + co = co + 10*ranvers; + } + if (randirect == 3) { + co = co - 10*ranvers; + } + return returnarr; } From 0ed97a74cee4a5c05e465e98d66de3dd55fecf0b Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:44:10 +0000 Subject: [PATCH 357/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 1a4774b..40cc468 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -31,6 +31,50 @@ int feld(char prifield[]) { printf("\n"); } + ranvers = rand() % 5; + int randirect2 = rand() % 2; + + if (randirect == 0) { + if (randirect2 == 0) { + co = co + 10 * ranvers; + a = 1; + } + if (randirect2 == 1) { + co = co - 10 * ranvers; + a = 2; + } + } + if (randirect == 1) { + if (randirect == 0) { + co = co + 10 * ranvers; + a = 3; + } + if (randirect == 0) { + co = co - 10 * ranvers; + a = 4; + } + } + if (randirect == 2) { + if (randirect == 0) { + co = co + ranvers; + a = 1; + } + if (randirect == 0) { + co = co - ranvers; + a = 3; + } + } + if (randirect == 3) { + if (randirect == 0) { + co = co + ranvers; + a = 2; + } + if (randirect == 0) { + co = co - ranvers; + a = 4; + } + } + return 0; } From bd64d0b512549c8535896b7f0e4717ae78c0fbb5 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:44:49 +0000 Subject: [PATCH 358/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 61 +++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 40cc468..7caf6ef 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -75,6 +75,67 @@ int feld(char prifield[]) { } } + shipcoor[0] = co; + + int shipdirect = rand() % 2; + + if (a == 1) { + if (shipdirect == 0) { + for (int i = 1; i < 5; i++) { + co -= 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 1; i < 5; i++) { + co -= 10; + shipcoor[i] = co; + } + } + } + if (a == 2) { + if (shipdirect == 0) { + for (int i = 1; i < 5; i++) { + co -= 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 1; i < 5; i++) { + co += 10; + shipcoor[i] = co; + } + } + } + if (a == 3) { + if (shipdirect == 0) { + for (int i = 1; i < 5; i++) { + co += 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 1; i < 5; i++) { + co -= 10; + shipcoor[i] = co; + } + } + } + if (a == 4) { + if (shipdirect == 0) { + for (int i = 1; i < 5; i++) { + co += 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 1; i < 5; i++) { + co += 10; + shipcoor[i] = co; + } + } + } + return 0; } From e24a5c5bdb43a3e32b22407c6cb5cfe90a3c8381 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:45:34 +0000 Subject: [PATCH 359/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 7caf6ef..156d7b9 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -212,6 +212,28 @@ int* coorgenerator() { co = co - 10*ranvers; } + //(4)-er + + ranco = rand() % 4; + + co = randomcoor[ranco]; + + ranvers = rand() % 5; + randirect = rand() % 4; + + if (randirect == 0) { + co = co + ranvers; + } + if (randirect == 1) { + co = co - ranvers; + } + if (randirect == 2) { + co = co + 10 * ranvers; + } + if (randirect == 3) { + co = co - 10 * ranvers; + } + return returnarr; } From 6396028f83f38aaf54249edac36ca5814abf5966 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:46:21 +0000 Subject: [PATCH 360/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 156d7b9..c5a882a 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -234,6 +234,50 @@ int* coorgenerator() { co = co - 10 * ranvers; } + ranvers = rand() % 5; + randirect2 = rand() % 2; + + if (randirect == 0) { + if (randirect2 == 0) { + co = co + 10 * ranvers; + a = 1; + } + if (randirect2 == 1) { + co = co - 10 * ranvers; + a = 2; + } + } + if (randirect == 1) { + if (randirect == 0) { + co = co + 10 * ranvers; + a = 3; + } + if (randirect == 0) { + co = co - 10 * ranvers; + a = 4; + } + } + if (randirect == 2) { + if (randirect == 0) { + co = co + ranvers; + a = 1; + } + if (randirect == 0) { + co = co - ranvers; + a = 3; + } + } + if (randirect == 3) { + if (randirect == 0) { + co = co + ranvers; + a = 2; + } + if (randirect == 0) { + co = co - ranvers; + a = 4; + } + } + return returnarr; } From d793d1bbefeb17c62e6a52924e8b27d5d0595797 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:47:29 +0000 Subject: [PATCH 361/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 61 +++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index c5a882a..17bc5e6 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -278,6 +278,67 @@ int* coorgenerator() { } } + shipcoor[5] = co; + + shipdirect = rand() % 2; + + if (a == 1) { + if (shipdirect == 0) { + for (int i = 6; i < 9; i++) { + co -= 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 6; i < 9; i++) { + co -= 10; + shipcoor[i] = co; + } + } + } + if (a == 2) { + if (shipdirect == 0) { + for (int i = 6; i < 9; i++) { + co -= 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 6; i < 9; i++) { + co += 10; + shipcoor[i] = co; + } + } + } + if (a == 3) { + if (shipdirect == 0) { + for (int i = 6; i < 9; i++) { + co += 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 6; i < 9; i++) { + co -= 10; + shipcoor[i] = co; + } + } + } + if (a == 4) { + if (shipdirect == 0) { + for (int i = 6; i < 9; i++) { + co += 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 6; i < 9; i++) { + co += 10; + shipcoor[i] = co; + } + } + } + return returnarr; } From 99551aba4d2a20ce28f83950b8f7cc93b6401bc9 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:48:02 +0000 Subject: [PATCH 362/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 17bc5e6..7248d42 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -339,6 +339,29 @@ int* coorgenerator() { } } + //(3)-er 1 + + ranco = rand() % 4; + + co = randomcoor[ranco]; + + ranvers = rand() % 5; + randirect = rand() % 4; + + if (randirect == 0) { + co = co + ranvers; + } + if (randirect == 1) { + co = co - ranvers; + } + if (randirect == 2) { + co = co + 10 * ranvers; + } + if (randirect == 3) { + co = co - 10 * ranvers; + } + + return returnarr; } From 7467c53c6b987e10f45ec4eeba5df5802ef74faa Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:48:31 +0000 Subject: [PATCH 363/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 7248d42..584546b 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -361,6 +361,50 @@ int* coorgenerator() { co = co - 10 * ranvers; } + ranvers = rand() % 5; + randirect2 = rand() % 2; + + if (randirect == 0) { + if (randirect2 == 0) { + co = co + 10 * ranvers; + a = 1; + } + if (randirect2 == 1) { + co = co - 10 * ranvers; + a = 2; + } + } + if (randirect == 1) { + if (randirect == 0) { + co = co + 10 * ranvers; + a = 3; + } + if (randirect == 0) { + co = co - 10 * ranvers; + a = 4; + } + } + if (randirect == 2) { + if (randirect == 0) { + co = co + ranvers; + a = 1; + } + if (randirect == 0) { + co = co - ranvers; + a = 3; + } + } + if (randirect == 3) { + if (randirect == 0) { + co = co + ranvers; + a = 2; + } + if (randirect == 0) { + co = co - ranvers; + a = 4; + } + } + return returnarr; } From bd263b7845bb5b9ba5304cf89f33274cc16ff907 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:49:01 +0000 Subject: [PATCH 364/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 61 +++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 584546b..f98b728 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -405,6 +405,67 @@ int* coorgenerator() { } } + shipcoor[9] = co; + + shipdirect = rand() % 2; + + if (a == 1) { + if (shipdirect == 0) { + for (int i = 10; i < 12; i++) { + co -= 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 10; i < 12; i++) { + co -= 10; + shipcoor[i] = co; + } + } + } + if (a == 2) { + if (shipdirect == 0) { + for (int i = 10; i < 12; i++) { + co -= 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 10; i < 12; i++) { + co += 10; + shipcoor[i] = co; + } + } + } + if (a == 3) { + if (shipdirect == 0) { + for (int i = 10; i < 12; i++) { + co += 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 10; i < 12; i++) { + co -= 10; + shipcoor[i] = co; + } + } + } + if (a == 4) { + if (shipdirect == 0) { + for (int i = 10; i < 12; i++) { + co += 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 10; i < 12; i++) { + co += 10; + shipcoor[i] = co; + } + } + } + return returnarr; } From 6b47c084f8aa5e51f96d82f117daa11618a1df3d Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:49:28 +0000 Subject: [PATCH 365/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index f98b728..b449e29 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -466,6 +466,28 @@ int* coorgenerator() { } } + //(3)-er 2 + + ranco = rand() % 4; + + co = randomcoor[ranco]; + + ranvers = rand() % 5; + randirect = rand() % 4; + + if (randirect == 0) { + co = co + ranvers; + } + if (randirect == 1) { + co = co - ranvers; + } + if (randirect == 2) { + co = co + 10 * ranvers; + } + if (randirect == 3) { + co = co - 10 * ranvers; + } + return returnarr; } From 0b743e3c1489a8b44c8d35b862196307f6cd87c2 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:50:01 +0000 Subject: [PATCH 366/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index b449e29..c2d1181 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -488,6 +488,50 @@ int* coorgenerator() { co = co - 10 * ranvers; } + ranvers = rand() % 5; + randirect2 = rand() % 2; + + if (randirect == 0) { + if (randirect2 == 0) { + co = co + 10 * ranvers; + a = 1; + } + if (randirect2 == 1) { + co = co - 10 * ranvers; + a = 2; + } + } + if (randirect == 1) { + if (randirect == 0) { + co = co + 10 * ranvers; + a = 3; + } + if (randirect == 0) { + co = co - 10 * ranvers; + a = 4; + } + } + if (randirect == 2) { + if (randirect == 0) { + co = co + ranvers; + a = 1; + } + if (randirect == 0) { + co = co - ranvers; + a = 3; + } + } + if (randirect == 3) { + if (randirect == 0) { + co = co + ranvers; + a = 2; + } + if (randirect == 0) { + co = co - ranvers; + a = 4; + } + } + return returnarr; } From af63d33f6799ed97bbafe6787d54d693db4b5478 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:50:29 +0000 Subject: [PATCH 367/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 61 +++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index c2d1181..dd8f35d 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -532,6 +532,67 @@ int* coorgenerator() { } } + shipcoor[12] = co; + + shipdirect = rand() % 2; + + if (a == 1) { + if (shipdirect == 0) { + for (int i = 13; i < 15; i++) { + co -= 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 13; i < 15; i++) { + co -= 10; + shipcoor[i] = co; + } + } + } + if (a == 2) { + if (shipdirect == 0) { + for (int i = 13; i < 15; i++) { + co -= 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 13; i < 15; i++) { + co += 10; + shipcoor[i] = co; + } + } + } + if (a == 3) { + if (shipdirect == 0) { + for (int i = 13; i < 15; i++) { + co += 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 13; i < 15; i++) { + co -= 10; + shipcoor[i] = co; + } + } + } + if (a == 4) { + if (shipdirect == 0) { + for (int i = 13; i < 15; i++) { + co += 1; + shipcoor[i] = co; + } + } + if (shipdirect == 1) { + for (int i = 13; i < 15; i++) { + co += 10; + shipcoor[i] = co; + } + } + } + return returnarr; } From 116eb7ecff7af08227232b3a8ea87eeecb5c52ee Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:50:57 +0000 Subject: [PATCH 368/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index dd8f35d..1cd0128 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -593,6 +593,28 @@ int* coorgenerator() { } } + //(2)-er + + ranco = rand() % 4; + + co = randomcoor[ranco]; + + ranvers = rand() % 5; + randirect = rand() % 4; + + if (randirect == 0) { + co = co + ranvers; + } + if (randirect == 1) { + co = co - ranvers; + } + if (randirect == 2) { + co = co + 10 * ranvers; + } + if (randirect == 3) { + co = co - 10 * ranvers; + } + return returnarr; } From 471f5cf11dc6524bb4fd31b4c4a9c490f8bfa3e9 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:51:29 +0000 Subject: [PATCH 369/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 44 +++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 1cd0128..1a33994 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -615,6 +615,50 @@ int* coorgenerator() { co = co - 10 * ranvers; } + ranvers = rand() % 5; + randirect2 = rand() % 2; + + if (randirect == 0) { + if (randirect2 == 0) { + co = co + 10 * ranvers; + a = 1; + } + if (randirect2 == 1) { + co = co - 10 * ranvers; + a = 2; + } + } + if (randirect == 1) { + if (randirect == 0) { + co = co + 10 * ranvers; + a = 3; + } + if (randirect == 0) { + co = co - 10 * ranvers; + a = 4; + } + } + if (randirect == 2) { + if (randirect == 0) { + co = co + ranvers; + a = 1; + } + if (randirect == 0) { + co = co - ranvers; + a = 3; + } + } + if (randirect == 3) { + if (randirect == 0) { + co = co + ranvers; + a = 2; + } + if (randirect == 0) { + co = co - ranvers; + a = 4; + } + } + return returnarr; } From 5c20512317b334f3b9ab861d75998dd630394298 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:52:03 +0000 Subject: [PATCH 370/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 50 +++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 1a33994..1999e97 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -659,6 +659,56 @@ int* coorgenerator() { } } + shipcoor[15] = co; + + shipdirect = rand() % 2; + + if (a == 1) { + if (shipdirect == 0) { + co -= 1; + shipcoor[16] = co; + } + if (shipdirect == 1) { + co -= 10; + shipcoor[16] = co; + } + } + if (a == 2) { + if (shipdirect == 0) { + co -= 1; + shipcoor[16] = co; + } + if (shipdirect == 1) { + co += 10; + shipcoor[16] = co; + } + } + if (a == 3) { + if (shipdirect == 0) { + co += 1; + shipcoor[16] = co; + } + if (shipdirect == 1) { + co -= 10; + shipcoor[16] = co; + } + } + if (a == 4) { + if (shipdirect == 0) { + co += 1; + shipcoor[16] = co; + } + if (shipdirect == 1) { + co += 10; + shipcoor[16] = co; + } + } + + for (int i = 0; i < 17; i++) { + + returnarr[i] = shipcoor[i]; + } + return returnarr; } From fd7e417730347ebb7b797ee8e6e49398a60904fa Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 03:53:43 +0000 Subject: [PATCH 371/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 1999e97..7bb546b 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -728,9 +728,10 @@ int singleplayer() { char progplayer[100]; char ships1[100]; char ships2[100]; + int* gencoor = coorgenerator(); char letco; - int numco; + int numco, ranco; int coor, coor1, coor2; int score1 = 0; int score2 = 0; @@ -760,6 +761,11 @@ int singleplayer() { } + for (int i = 0; i <= 18; i++) { + ranco = gencoor[i]; + ships2[ranco] = 'X'; + } + !feld(ships1); printf("\nPlayer, platziere dein Schlachtschiff (5).\nKoordinate: "); From 03b578a3d5be7e047010a8fe352e68185d96badc Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 04:00:50 +0000 Subject: [PATCH 372/375] Update src/main/c/Template/Battleship_game.c --- src/main/c/Template/Battleship_game.c | 153 +++++++++++++------------- 1 file changed, 77 insertions(+), 76 deletions(-) diff --git a/src/main/c/Template/Battleship_game.c b/src/main/c/Template/Battleship_game.c index 7bb546b..e0b97fa 100644 --- a/src/main/c/Template/Battleship_game.c +++ b/src/main/c/Template/Battleship_game.c @@ -31,6 +31,83 @@ int feld(char prifield[]) { printf("\n"); } + + return 0; +} + +int convertcoor(char a, int b) { + + int co = 0; + + switch (a) { + case 'A': co = 0; break; + case 'a': co = 0; break; + case 'B': co = 10; break; + case 'b': co = 10; break; + case 'C': co = 20; break; + case 'c': co = 20; break; + case 'D': co = 30; break; + case 'd': co = 30; break; + case 'E': co = 40; break; + case 'e': co = 40; break; + case 'F': co = 50; break; + case 'f': co = 50; break; + case 'G': co = 60; break; + case 'g': co = 60; break; + case 'H': co = 70; break; + case 'h': co = 70; break; + case 'I': co = 80; break; + case 'i': co = 80; break; + case 'J': co = 90; break; + case 'j': co = 90; break; + default: co = 0; + } + + co += b; + co -= 1; + + return co; +} + +int* coorgenerator() { + + int randomcoor[100] = {44, 45, 55, 54, 53, 43, 33, 34, 35, 36, 46, 56, 66, 65, 64, 63, 62, 52, 42, 32, 22, 23, 24, 25, 26, 27, 37, 47, 57, 67, 77, 76, 75, 74, 73, 72, 71, 61, 51, 41, 31, 21, 11, 12, 13, 14, 15, 16, 17, 18, 28, 38, 48, 58, 68, 78, 88, 87, 86, 85, 84, 83, 82, 81, 80, 70, 60, 50, 40, 30, 20, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 19, 29, 39, 49, 59, 69, 79, 89, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90}; + int shipcoor[17]; + int* shipcoorptr[17]; + int co, vers, direct; + int a = 0; + + int* returnarr = (int*)malloc(17* sizeof(int)); + + if (returnarr == NULL) { + perror("Memory allocation failed"); + exit(1); + } + + srand(time(NULL)); + + //(5)-er + + int ranco = rand() % 4; + + co = randomcoor[ranco]; + + int ranvers = rand()%5; + int randirect = rand()%4; + + if (randirect == 0) { + co = co + ranvers; + } + if (randirect == 1) { + co = co - ranvers; + } + if (randirect == 2) { + co = co + 10*ranvers; + } + if (randirect == 3) { + co = co - 10*ranvers; + } + ranvers = rand() % 5; int randirect2 = rand() % 2; @@ -136,82 +213,6 @@ int feld(char prifield[]) { } } - return 0; -} - -int convertcoor(char a, int b) { - - int co = 0; - - switch (a) { - case 'A': co = 0; break; - case 'a': co = 0; break; - case 'B': co = 10; break; - case 'b': co = 10; break; - case 'C': co = 20; break; - case 'c': co = 20; break; - case 'D': co = 30; break; - case 'd': co = 30; break; - case 'E': co = 40; break; - case 'e': co = 40; break; - case 'F': co = 50; break; - case 'f': co = 50; break; - case 'G': co = 60; break; - case 'g': co = 60; break; - case 'H': co = 70; break; - case 'h': co = 70; break; - case 'I': co = 80; break; - case 'i': co = 80; break; - case 'J': co = 90; break; - case 'j': co = 90; break; - default: co = 0; - } - - co += b; - co -= 1; - - return co; -} - -int* coorgenerator() { - - int randomcoor[100] = {44, 45, 55, 54, 53, 43, 33, 34, 35, 36, 46, 56, 66, 65, 64, 63, 62, 52, 42, 32, 22, 23, 24, 25, 26, 27, 37, 47, 57, 67, 77, 76, 75, 74, 73, 72, 71, 61, 51, 41, 31, 21, 11, 12, 13, 14, 15, 16, 17, 18, 28, 38, 48, 58, 68, 78, 88, 87, 86, 85, 84, 83, 82, 81, 80, 70, 60, 50, 40, 30, 20, 10, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 19, 29, 39, 49, 59, 69, 79, 89, 99, 98, 97, 96, 95, 94, 93, 92, 91, 90}; - int shipcoor[17]; - int* shipcoorptr[17]; - int co, vers, direct; - int a = 0; - - int* returnarr = (int*)malloc(17* sizeof(int)); - - if (returnarr == NULL) { - perror("Memory allocation failed"); - exit(1); - } - - srand(time(NULL)); - - //(5)-er - - int ranco = rand() % 4; - - co = randomcoor[ranco]; - - int ranvers = rand()%5; - int randirect = rand()%4; - - if (randirect == 0) { - co = co + ranvers; - } - if (randirect == 1) { - co = co - ranvers; - } - if (randirect == 2) { - co = co + 10*ranvers; - } - if (randirect == 3) { - co = co - 10*ranvers; - } - //(4)-er ranco = rand() % 4; From e9abad7b74a24159c050d9defbee786ed9cf3f1e Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 04:04:44 +0000 Subject: [PATCH 373/375] Update test/test_battleship.c --- test/test_battleship.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/test/test_battleship.c b/test/test_battleship.c index 68a4e16..56d6aa3 100644 --- a/test/test_battleship.c +++ b/test/test_battleship.c @@ -21,5 +21,23 @@ void test_convertcoor(void) { TEST_ASSERT_EQUAL_INT(14, output); } +void setUp(void){ + +} +void tearDown(void){ +} + + +void test_convertcoor(void) { + + int output; + + + output = convertcoor('F', 6); + + + TEST_ASSERT_EQUAL_INT(55, output); +} + #endif From 7d4a9b46b0df5a51d0f6e0a36e34021bf41382d9 Mon Sep 17 00:00:00 2001 From: fdai7729 Date: Fri, 9 Feb 2024 04:14:25 +0000 Subject: [PATCH 374/375] Update src/main/c/main.c --- src/main/c/main.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/c/main.c b/src/main/c/main.c index 6155d68..f501e07 100644 --- a/src/main/c/main.c +++ b/src/main/c/main.c @@ -8,6 +8,7 @@ #include "Minesweeper/minesweeper_start.h" #include "Pong/pong.h" #include "Hangman/playHangman.h" +#include "Battleship_game/battleship_game.h" int main(){ bool running = true; @@ -22,6 +23,7 @@ int main(){ printf("\t2.Pong starten\n"); printf("\t3.Snake starten\n"); printf("\t4.tic_tac_toe starten\n"); + printf("\t5.battleship starten\n") printf("\t7.Minesweeper starten\n"); printf("\t10.Exit\n"); @@ -41,6 +43,9 @@ int main(){ case 4: start_tictactoe(); break; + case 5: + start_battleship(); + break; case 7: minesweeper_start(); break; From 2acead7a056f156a3c7129d740f7d5585fbc805f Mon Sep 17 00:00:00 2001 From: fdai8040 Date: Fri, 9 Feb 2024 09:10:07 +0000 Subject: [PATCH 375/375] Aktualisieren team.md --- team.md | 1 + 1 file changed, 1 insertion(+) diff --git a/team.md b/team.md index 1c481f3..101d21f 100644 --- a/team.md +++ b/team.md @@ -1,5 +1,6 @@ - David Moeller, fdai8032 - Julia Selig, fdai8040 +- fdai8040, fdai8040 - Ariana Ginju, fdai7775 - fdai7775, fdai7775 - Saba Fazlali, fdai7875