Compare commits
2 Commits
d38b65d59b
...
e404159cbe
Author | SHA1 | Date |
---|---|---|
MuedeHydra | e404159cbe | |
MuedeHydra | 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…
Reference in New Issue