forked from zwickethomas/Photonics-Helfer
		
	fin main
This commit is contained in:
		
							parent
							
								
									ae53688748
								
							
						
					
					
						commit
						db56e1d635
					
				
							
								
								
									
										123
									
								
								src/main.c
									
									
									
									
									
								
							
							
						
						
									
										123
									
								
								src/main.c
									
									
									
									
									
								
							@ -1,6 +1,7 @@
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <stdlib.h>
 | 
			
		||||
#include <stdbool.h>
 | 
			
		||||
#include <time.h>
 | 
			
		||||
 | 
			
		||||
#ifdef __linux__
 | 
			
		||||
    #include <sys/ioctl.h>
 | 
			
		||||
@ -13,6 +14,7 @@
 | 
			
		||||
 | 
			
		||||
// import sub programme
 | 
			
		||||
#include "pipes_test.h"
 | 
			
		||||
#include "test_prog.h"
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
Photonics helper main programm
 | 
			
		||||
@ -25,6 +27,7 @@ Datum: 04.12.2024
 | 
			
		||||
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__
 | 
			
		||||
@ -149,9 +152,35 @@ void print_game_over(int terminal_width, int terminal_height){
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void print_speedrun(int terminal_width, int terminal_height, int speed_time){
 | 
			
		||||
    clear_terminal();
 | 
			
		||||
    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");
 | 
			
		||||
    print_line(" / ___ \\ |___|  _  || || |___  \\ V / | |___| |  | | |___| |\\  | | | _    ", spaces, ";37");
 | 
			
		||||
    print_line("/_/   \\_\\____|_| |_|___|_____|  \\_/  |_____|_|  |_|_____|_| \\_| |_|(_)  ", spaces, ";37");
 | 
			
		||||
    print_line("                                                                            ", spaces, ";37");
 | 
			
		||||
    print_line(" ____  ____  _____ _____ ____  ____  _   _ _   _ _   _ _____ ____           ", spaces, ";37");
 | 
			
		||||
    print_line("/ ___||  _ \\| ____| ____|  _ \\|  _ \\| | | | \\ | | \\ | | ____|  _ \\    ", spaces, ";37");
 | 
			
		||||
    print_line("\\___ \\| |_) |  _| |  _| | | | | |_) | | | |  \\| |  \\| |  _| | |_) |     ", spaces, ";37");
 | 
			
		||||
    print_line(" ___) |  __/| |___| |___| |_| |  _ <| |_| | |\\  | |\\  | |___|  _ <        ", spaces, ";37");
 | 
			
		||||
    print_line("|____/|_|   |_____|_____|____/|_| \\_\\\\___/|_| \\_|_| \\_|_____|_| \\_\\  ", spaces, ";37");
 | 
			
		||||
 | 
			
		||||
    print_blank_lines(2);
 | 
			
		||||
    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){
 | 
			
		||||
    clear_terminal();
 | 
			
		||||
    print_blank_lines((terminal_height - 11) / 2);
 | 
			
		||||
    printf("Drücke ? für Hilfe\n");
 | 
			
		||||
    print_blank_lines((terminal_height - 19) / 2);
 | 
			
		||||
    int spaces = (terminal_width - 41) / 2;
 | 
			
		||||
 | 
			
		||||
        print_line("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓", spaces, (0 <= line && line < 1) ? ";31": ";37");
 | 
			
		||||
@ -163,8 +192,16 @@ void print_menu(int terminal_width, int terminal_height, int line){
 | 
			
		||||
        print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (2 <= line && line < 4) ? ";31": ";37");
 | 
			
		||||
        print_line("┃  Programm 4                           ┃", spaces, (3 <= line && line < 4) ? ";31": ";37");
 | 
			
		||||
        print_line("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (3 <= line && line < 5) ? ";31": ";37");
 | 
			
		||||
        print_line("┃                                       ┃", spaces, (4 <= line && line < 5) ? ";31": ";37");
 | 
			
		||||
        print_line("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛", spaces, (4 <= line && line < 5) ? ";31": ";37");
 | 
			
		||||
        print_line("┃  Programm 5                           ┃", 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("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (5 <= line && line < 7) ? ";31": ";37");
 | 
			
		||||
        print_line("┃  Programm 7                           ┃", 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("┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫", spaces, (7 <= line && line < 9) ? ";31": ";37");
 | 
			
		||||
        print_line("┃  Programm 9                           ┃", spaces, (8 <= line && line < 9) ? ";31": ";37");
 | 
			
		||||
        print_line("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛", spaces, (8 <= line && line < 9) ? ";31": ";37");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -176,6 +213,7 @@ void print_help(){
 | 
			
		||||
    printf("j \t Ein Programm nach unten\n");
 | 
			
		||||
    printf("k \t Ein Programm nach oben\n");
 | 
			
		||||
    printf("Enter \t Um das ausgewählte Programm zu starten\n");
 | 
			
		||||
    printf("1-n \t Um das n Programm zu starten\n");
 | 
			
		||||
    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();
 | 
			
		||||
@ -205,11 +243,54 @@ void get_terminal_size_init(int argc, char **argv, int *width, int *height){
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void run_programm(int programm, int width, int height, bool *used){
 | 
			
		||||
    clear_terminal();
 | 
			
		||||
    int return_code = 0;
 | 
			
		||||
    switch (programm) {
 | 
			
		||||
        case 0: return_code = test_gruppe_programmname(); break;
 | 
			
		||||
        case 1: return_code = test_gruppe_programmname(); break;
 | 
			
		||||
        case 2: return_code = test_gruppe_programmname(); break;
 | 
			
		||||
        case 3: return_code = test_gruppe_programmname(); break;
 | 
			
		||||
        case 4: return_code = test_gruppe_programmname(); break;
 | 
			
		||||
    
 | 
			
		||||
    }
 | 
			
		||||
    switch (return_code) {
 | 
			
		||||
        case 10: used[programm] = 1; break;
 | 
			
		||||
        case 20: print_game_over(width, height); break;
 | 
			
		||||
    }
 | 
			
		||||
    getchar();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void speed(int width, int height, int *start_time, bool *used){
 | 
			
		||||
    if (*start_time + 20 < time(0)){
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
    for (int i = 0; i < 5; i++){
 | 
			
		||||
        if (used[i] == 0){
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    int speed_time = time(0) - *start_time;
 | 
			
		||||
    *start_time -= 20;
 | 
			
		||||
    print_speedrun(width, height, speed_time);
 | 
			
		||||
    printf("speed: %i", speed_time);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void open(){
 | 
			
		||||
    #ifdef __linux__
 | 
			
		||||
        system("xdg-open https://media1.tenor.com/m/xTZp3_9gnE0AAAAd/linux-linux-convention.gif");
 | 
			
		||||
    #elif _WIN32
 | 
			
		||||
        system("start msedge.exe --kiosk https://www.ravbug.com/bsod/bsod10/ --edge-kiosk-type=fullscreen");
 | 
			
		||||
    #endif
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int main(int argc, char **argv){
 | 
			
		||||
    int width = 0;
 | 
			
		||||
    int height = 0;
 | 
			
		||||
    int line = 0;
 | 
			
		||||
    bool run = true;
 | 
			
		||||
    bool *used = (bool[5]){0};
 | 
			
		||||
    int start_time = time(0);
 | 
			
		||||
 | 
			
		||||
    // umlaute für windows
 | 
			
		||||
    #ifdef _WIN32
 | 
			
		||||
@ -222,24 +303,15 @@ int main(int argc, char **argv){
 | 
			
		||||
    #endif
 | 
			
		||||
 | 
			
		||||
    // Terminal grösse herauslesen
 | 
			
		||||
    // get_terminal_size(argc, argv, &width, &height);
 | 
			
		||||
    get_terminal_size_init(argc, argv, &width, &height);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // int x = test_gruppe_programmname();
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    printf ("lines %d\n", height);
 | 
			
		||||
    printf ("columns %d\n", width);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    // print wellcome message
 | 
			
		||||
    print_wellcome(width, height);
 | 
			
		||||
    // print_game_over(width, height);
 | 
			
		||||
    // print_menu(width, height, line);
 | 
			
		||||
    while(run){
 | 
			
		||||
        get_terminal_size_init(argc, argv, &width, &height);
 | 
			
		||||
        print_menu(width, height, line);
 | 
			
		||||
 | 
			
		||||
        char key_input = (char)getch();
 | 
			
		||||
 | 
			
		||||
        switch (key_input) {
 | 
			
		||||
@ -252,19 +324,32 @@ int main(int argc, char **argv){
 | 
			
		||||
                }
 | 
			
		||||
                break;
 | 
			
		||||
            }
 | 
			
		||||
            case 'G': line = 4; break;
 | 
			
		||||
            case 'G': line = 8; break;
 | 
			
		||||
 | 
			
		||||
            case '?': print_help(); break;
 | 
			
		||||
            case 'p': pipes(); break;
 | 
			
		||||
            
 | 
			
		||||
            case 'q': run = false; break;
 | 
			
		||||
            case '\n': printf(" Es wurde die Enter Taste gedrückt"); getchar(); break;
 | 
			
		||||
            default: printf(" Es wurde die Taste: %c gedrückt", key_input);
 | 
			
		||||
 | 
			
		||||
            case 'A': open(); break;
 | 
			
		||||
            case 'B': open(); break;
 | 
			
		||||
            case 'C': open(); break;
 | 
			
		||||
            case 'D': open(); break;
 | 
			
		||||
 | 
			
		||||
            case '\n': run_programm(line, width, height, used); break;
 | 
			
		||||
            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();
 | 
			
		||||
        }
 | 
			
		||||
        if(line < 0){line = 4;}
 | 
			
		||||
        if(line > 4){line = 0;}
 | 
			
		||||
        // print_menu(width, height, line);
 | 
			
		||||
        if(line < 0){line = 8;}
 | 
			
		||||
        if(line > 8){line = 0;}
 | 
			
		||||
        speed(width, height, &start_time, used);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // zürück zum alten terminal (nur linux)
 | 
			
		||||
    #ifdef __linux__
 | 
			
		||||
        system("tput rmcup");
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user