Compare commits
	
		
			2 Commits
		
	
	
		
			d38b65d59b
			...
			e404159cbe
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | e404159cbe | ||
|   | f1ca9b4da6 | 
							
								
								
									
										150
									
								
								src/main.c
									
									
									
									
									
								
							
							
						
						
									
										150
									
								
								src/main.c
									
									
									
									
									
								
							| @ -1,6 +1,23 @@ | ||||
| /*
 | ||||
| Photonics helper main programm | ||||
| Das main programm startet die sub programme der verschienene gruppen | ||||
| 
 | ||||
| Autor: Noah Balsinger, Thomas Zwicker | ||||
| Version: 0.1 | ||||
| Datum: 04.12.2024 | ||||
| Änderungen: | ||||
| 0.1 04.12.2024 Dokument erstellt | ||||
| 0.2 09.12.2024 Willkommensnachricht | ||||
| 0.3 10.12.2024 Meun hinzugefügt | ||||
| 0.4 11.12.2024 pipes + easter eggs hinzugefügt | ||||
| 0.5 12.12.2024 Windows version fix | ||||
| 0.6 13.12.2024 Pfeiltasten wurden hinzugefügt | ||||
| */ | ||||
| 
 | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <stdbool.h> | ||||
| #include <string.h> | ||||
| #include <time.h> | ||||
| 
 | ||||
| #ifdef __linux__ | ||||
| @ -17,22 +34,10 @@ | ||||
| #include "Ramen_Physik.h" | ||||
| #include "test_prog.h" | ||||
| 
 | ||||
| /*
 | ||||
| Photonics helper main programm | ||||
| Das main programm startet die sub programme der verschienene gruppen | ||||
| 
 | ||||
| Autor: Noah Balsinger, Thomas Zwicker | ||||
| Version: 0.1 | ||||
| Datum: 04.12.2024 | ||||
| Änderungen: | ||||
| 0.1 04.12.2024 Dokument erstellt | ||||
| 0.2 09.12.2024 Willkommensnachricht | ||||
| 0.3 10.12.2024 Meun hinzugefügt | ||||
| 0.4 11.12.2024 pipes + easter eggs hinzugefügt | ||||
| */ | ||||
| 
 | ||||
| #ifdef __linux__ | ||||
| int getch(){  | ||||
|     // getch funktion für linux (für windows in der conio.h lib)
 | ||||
|     int ch; | ||||
|     struct termios oldattr, newattr; | ||||
| 
 | ||||
| @ -58,7 +63,6 @@ void get_terminal_size_linux(int argc, char **argv, int *width, int *height){ | ||||
|     *height = w.ws_row; | ||||
|     *width = w.ws_col; | ||||
| } | ||||
| 
 | ||||
| #elif _WIN32 | ||||
| void get_terminal_size_windows(int argc, char **argv, int *width, int *height){ | ||||
|     CONSOLE_SCREEN_BUFFER_INFO csbi; | ||||
| @ -71,30 +75,28 @@ void get_terminal_size_windows(int argc, char **argv, int *width, int *height){ | ||||
| #endif | ||||
| 
 | ||||
| void print_line(char line[100], int spaces, char color[5]){ | ||||
|     // funktion welche den text in einer farbe und mit space printet
 | ||||
|     for(int i = 0; i < spaces; i++){ | ||||
|         printf(" "); | ||||
|     } | ||||
|     printf("\033[1%sm %s \033[0m\n", color, line); | ||||
|     // printf("%s\n", line);
 | ||||
| } | ||||
| 
 | ||||
| void clear_terminal(){ | ||||
|     #ifdef __linux__ | ||||
|         printf("\e[1;1H\e[2J"); | ||||
|     #elif _WIN32 | ||||
|         system("cls"); | ||||
|     #endif | ||||
|     printf("\e[1;1H\e[2J"); | ||||
| } | ||||
| 
 | ||||
| void sleep_universal(int t){ | ||||
|     #ifdef __linux__ | ||||
|         sleep(t); | ||||
|     #elif _WIN32 | ||||
|         // Sleep ist in Milisekunden
 | ||||
|         Sleep(t * 1000); | ||||
|     #endif | ||||
| } | ||||
| 
 | ||||
| void print_blank_lines(int lines){ | ||||
|     // funktion die leere zeilen printet
 | ||||
|     for(int i = 0; i < lines; i++){ | ||||
|         printf("\n"); | ||||
|     } | ||||
| @ -119,20 +121,6 @@ void print_wellcome(int terminal_width, int terminal_height){ | ||||
|     print_line("|_|   |_| |_|\\___/ \\__|_| |_|\\___/|_| |_|_|\\___|___/   |_| |_|\\___|_|_|  \\___|_|     ", spaces, ";37"); | ||||
| 
 | ||||
|     sleep_universal(2); | ||||
| 
 | ||||
|     /*
 | ||||
|     printf("__        ___ _ _ _                                                                "); | ||||
|     printf("\ \      / (_) | | | _____  _ __ ___  _ __ ___   ___ _ __      _____   _ _ __ ___  "); | ||||
|     printf(" \ \ /\ / /| | | | |/ / _ \| '_ ` _ \| '_ ` _ \ / _ \ '_ \    |_  / | | | '_ ` _ \ "); | ||||
|     printf("  \ V  V / | | | |   < (_) | | | | | | | | | | |  __/ | | |    / /| |_| | | | | | |"); | ||||
|     printf("   \_/\_/  |_|_|_|_|\_\___/|_| |_| |_|_| |_| |_|\___|_| |_|   /___|\__,_|_| |_| |_|"); | ||||
|     printf("                                                                                   "); | ||||
|     printf(" ____  _           _   _                 _              _   _      _  __           "); | ||||
|     printf("|  _ \| |__   ___ | |_| |__   ___  _ __ (_) ___ ___    | | | | ___| |/ _| ___ _ __ "); | ||||
|     printf("| |_) | '_ \ / _ \| __| '_ \ / _ \| '_ \| |/ __/ __|   | |_| |/ _ \ | |_ / _ \ '__|"); | ||||
|     printf("|  __/| | | | (_) | |_| | | | (_) | | | | | (__\__ \   |  _  |  __/ |  _|  __/ |   "); | ||||
|     printf("|_|   |_| |_|\___/ \__|_| |_|\___/|_| |_|_|\___|___/   |_| |_|\___|_|_|  \___|_|   "); | ||||
|     */ | ||||
| } | ||||
| 
 | ||||
| void print_game_over(int terminal_width, int terminal_height){ | ||||
| @ -149,8 +137,6 @@ void print_game_over(int terminal_width, int terminal_height){ | ||||
|     print_blank_lines(2); | ||||
|     print_line("Press a key to contine: ", spaces, ";37"); | ||||
|     char key_input = (char)getch(); | ||||
|     // getchar();
 | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| void print_speedrun(int terminal_width, int terminal_height, int speed_time){ | ||||
| @ -158,7 +144,6 @@ void print_speedrun(int terminal_width, int terminal_height, int speed_time){ | ||||
|     print_blank_lines((terminal_height - 12) / 2); | ||||
|     int spaces = (terminal_width - 70) / 2; | ||||
| 
 | ||||
| 
 | ||||
|     print_line("    _    ____ _   _ ___ _______     _______ __  __ _____ _   _ _____        ", spaces, ";37"); | ||||
|     print_line("   / \\  / ___| | | |_ _| ____\\ \\   / / ____|  \\/  | ____| \\ | |_   _|  ", spaces, ";37"); | ||||
|     print_line("  / _ \\| |   | |_| || ||  _|  \\ \\ / /|  _| | |\\/| |  _| |  \\| | | |(_) ", spaces, ";37"); | ||||
| @ -175,7 +160,6 @@ void print_speedrun(int terminal_width, int terminal_height, int speed_time){ | ||||
|     print_line("", spaces, ";37"); | ||||
|     printf("Du brauchtest: %i Sekunden.", speed_time); | ||||
|     char key_input = (char)getch(); | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| void print_menu(int terminal_width, int terminal_height, int line){ | ||||
| @ -185,23 +169,23 @@ void print_menu(int terminal_width, int terminal_height, int line){ | ||||
|     int spaces = (terminal_width - 41) / 2; | ||||
| 
 | ||||
|         print_line("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓", spaces, (0 <= line && line < 1) ? ";31": ";37"); | ||||
|         print_line("┃  Ramen Physik                         ┃", spaces, (0 <= line && line < 1) ? ";31": ";37"); | ||||
|         print_line("┃  1 Ramen Physik                       ┃", spaces, (0 <= line && line < 1) ? ";31": ";37"); | ||||
|         print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (0 <= line && line < 2) ? ";31": ";37"); | ||||
|         print_line("┃  Programm 2                           ┃", spaces, (1 <= line && line < 2) ? ";31": ";37"); | ||||
|         print_line("┃  2 Programm                           ┃", spaces, (1 <= line && line < 2) ? ";31": ";37"); | ||||
|         print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (1 <= line && line < 3) ? ";31": ";37"); | ||||
|         print_line("┃  Programm 3                           ┃", spaces, (2 <= line && line < 3) ? ";31": ";37"); | ||||
|         print_line("┃  3 Programm                           ┃", spaces, (2 <= line && line < 3) ? ";31": ";37"); | ||||
|         print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (2 <= line && line < 4) ? ";31": ";37"); | ||||
|         print_line("┃  Programm 4                           ┃", spaces, (3 <= line && line < 4) ? ";31": ";37"); | ||||
|         print_line("┃  4 Programm                           ┃", spaces, (3 <= line && line < 4) ? ";31": ";37"); | ||||
|         print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (3 <= line && line < 5) ? ";31": ";37"); | ||||
|         print_line("┃  Programm 5                           ┃", spaces, (4 <= line && line < 5) ? ";31": ";37"); | ||||
|         print_line("┃  5 Programm                           ┃", spaces, (4 <= line && line < 5) ? ";31": ";37"); | ||||
|         print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (4 <= line && line < 6) ? ";31": ";37"); | ||||
|         print_line("┃  Programm 6                           ┃", spaces, (5 <= line && line < 6) ? ";31": ";37"); | ||||
|         print_line("┃  6 Programm                           ┃", spaces, (5 <= line && line < 6) ? ";31": ";37"); | ||||
|         print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (5 <= line && line < 7) ? ";31": ";37"); | ||||
|         print_line("┃  Programm 7                           ┃", spaces, (6 <= line && line < 7) ? ";31": ";37"); | ||||
|         print_line("┃  7 Programm                           ┃", spaces, (6 <= line && line < 7) ? ";31": ";37"); | ||||
|         print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (6 <= line && line < 8) ? ";31": ";37"); | ||||
|         print_line("┃  Programm 8                           ┃", spaces, (7 <= line && line < 8) ? ";31": ";37"); | ||||
|         print_line("┃  8 Programm                           ┃", spaces, (7 <= line && line < 8) ? ";31": ";37"); | ||||
|         print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (7 <= line && line < 9) ? ";31": ";37"); | ||||
|         print_line("┃  Programm 9                           ┃", spaces, (8 <= line && line < 9) ? ";31": ";37"); | ||||
|         print_line("┃  9 Programm                           ┃", spaces, (8 <= line && line < 9) ? ";31": ";37"); | ||||
|         print_line("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛", spaces, (8 <= line && line < 9) ? ";31": ";37"); | ||||
| } | ||||
| 
 | ||||
| @ -218,7 +202,6 @@ void print_help(){ | ||||
|     printf("q \t Um das Programm zu beenden\n"); | ||||
|     printf("\nDrücke eine Taste um zurück zu kommen\n"); | ||||
|     char key_input = (char)getch(); | ||||
|     // getchar();
 | ||||
| } | ||||
| 
 | ||||
| void get_terminal_size(int argc, char **argv, int *width, int *height){ | ||||
| @ -227,7 +210,6 @@ void get_terminal_size(int argc, char **argv, int *width, int *height){ | ||||
|         #elif _WIN32 | ||||
|             get_terminal_size_windows(argc, argv, width, height); | ||||
|         #endif | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| void get_terminal_size_init(int argc, char **argv, int *width, int *height){ | ||||
| @ -253,12 +235,18 @@ void run_programm(int programm, int width, int height, bool *used){ | ||||
|         case 2: return_code = test_gruppe_programmname(); break; | ||||
|         case 3: return_code = test_gruppe_programmname(); break; | ||||
|         case 4: return_code = test_gruppe_programmname(); break; | ||||
|         case 5: return_code = test_gruppe_programmname(); break; | ||||
|         case 6: return_code = test_gruppe_programmname(); break; | ||||
|         case 7: return_code = test_gruppe_programmname(); break; | ||||
|         case 8: return_code = test_gruppe_programmname(); break; | ||||
|         case 9: return_code = test_gruppe_programmname(); break; | ||||
|      | ||||
|     } | ||||
|     switch (return_code) { | ||||
|         case 10: used[programm] = 1; break; | ||||
|         case 20: print_game_over(width, height); break; | ||||
|     } | ||||
|     // ist dazu da um "\n" aus dem buffer zu entfernen!
 | ||||
|     getchar(); | ||||
| } | ||||
| 
 | ||||
| @ -292,6 +280,10 @@ int main(int argc, char **argv){ | ||||
|     bool run = true; | ||||
|     bool *used = (bool[5]){0}; | ||||
|     int start_time = time(0); | ||||
|     bool arrows = false; | ||||
|         if (argc >= 2 && strcmp(argv[1], "--ich-benutze-windows-und-bin-auf-die-pfeiltasten-angewiesen") == 0){ | ||||
|             arrows = true; | ||||
|         } | ||||
| 
 | ||||
|     // umlaute für windows
 | ||||
|     #ifdef _WIN32 | ||||
| @ -306,16 +298,23 @@ int main(int argc, char **argv){ | ||||
|     // Terminal grösse herauslesen
 | ||||
|     get_terminal_size_init(argc, argv, &width, &height); | ||||
| 
 | ||||
| 
 | ||||
|     // print wellcome message
 | ||||
|     print_wellcome(width, height); | ||||
|      | ||||
|     // Hauptschleife
 | ||||
|     while(run){ | ||||
|         // liest die terminal grösse ein
 | ||||
|         get_terminal_size_init(argc, argv, &width, &height); | ||||
| 
 | ||||
|         // zeigt das menu an
 | ||||
|         print_menu(width, height, line); | ||||
| 
 | ||||
|         // liest die Tastatur aus
 | ||||
|         char key_input = (char)getch(); | ||||
| 
 | ||||
|         // verarbeitet die Tastatur eingabe
 | ||||
|         switch (key_input) { | ||||
|             // vim movement
 | ||||
|             case 'k': line--; break; | ||||
|             case 'j': line++; break; | ||||
|             case 'g': { | ||||
| @ -326,34 +325,63 @@ int main(int argc, char **argv){ | ||||
|                 break; | ||||
|             } | ||||
|             case 'G': line = 8; break; | ||||
| 
 | ||||
|             case '?': print_help(); break; | ||||
|             // case 'p': pipes(); break;
 | ||||
|              | ||||
|             case 'q': run = false; break; | ||||
|             case '?': print_help(); break; | ||||
| 
 | ||||
|             case 'A': open(); break; | ||||
|             case 'B': open(); break; | ||||
|             case 'C': open(); break; | ||||
|             case 'D': open(); break; | ||||
|             case -32: open(); break; | ||||
|             // case 'p': pipes(); break;
 | ||||
| 
 | ||||
|             // windows
 | ||||
|             case -32:{ | ||||
|                 key_input = (char)getch(); | ||||
|                 if (arrows){ | ||||
|                     switch (key_input){ | ||||
|                         case 72: line--; break; // printf("up\n");
 | ||||
|                         case 80: line++; break; // printf("down\n");
 | ||||
|                         // case 77: printf("right\n"); break;
 | ||||
|                         // case 75: printf("left\n"); break;
 | ||||
|                     } | ||||
|                 } else{ | ||||
|                     open(); | ||||
|                 } | ||||
|                 break; | ||||
|             } | ||||
|             // linux
 | ||||
|             case 27:{ | ||||
|                 key_input = (char)getch(); | ||||
|                 key_input = (char)getch(); | ||||
|                 if (arrows){ | ||||
|                     switch (key_input){ | ||||
|                         case 65: line--; break; // printf("up\n");
 | ||||
|                         case 66: line++; break; // printf("down\n");
 | ||||
|                         // case 67: printf("right\n"); break;
 | ||||
|                         // case 68: printf("left\n"); break;
 | ||||
|                     } | ||||
|                 } else { | ||||
|                     open(); | ||||
|                 } | ||||
|                 break; | ||||
|             } | ||||
| 
 | ||||
|             // enter unter linux
 | ||||
|             case '\n': run_programm(line, width, height, used); break; | ||||
|             // enter under windows
 | ||||
|             case 13 : run_programm(line, width, height, used); break; | ||||
| 
 | ||||
|             // schnell start
 | ||||
|             case '1': run_programm(0, width, height, used); break; | ||||
|             case '2': run_programm(1, width, height, used); break; | ||||
|             case '3': run_programm(2, width, height, used); break; | ||||
|             case '4': run_programm(3, width, height, used); break; | ||||
|             case '5': run_programm(4, width, height, used); break; | ||||
|              | ||||
|             // default: printf(" Es wurde die Taste: %c gedrückt", key_input); getch();
 | ||||
|             default: printf(" Es wurde die Taste: %i gedrückt\n", key_input); // getch();
 | ||||
|         } | ||||
|         if(line < 0){line = 8;} | ||||
|         if(line > 8){line = 0;} | ||||
|         speed(width, height, &start_time, used); | ||||
|     } | ||||
| 
 | ||||
|     // zürück zum alten terminal (nur linux)
 | ||||
|     // zurück zum alten terminal (nur linux)
 | ||||
|     #ifdef __linux__ | ||||
|         system("tput rmcup"); | ||||
|     #endif | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user