diff --git a/adventure.pl b/adventure.pl index 14cca00..0ceb8ec 100644 --- a/adventure.pl +++ b/adventure.pl @@ -177,8 +177,7 @@ process_command([a]) :- check_konami_input(a). process_command([b]) :- check_konami_input(b). process_command([beende]) :- - write('Auf Wiedersehen! Die Wahrheit muss ans Licht...'), nl, - halt. + end_game. process_command([hilfe]) :- write('Verfügbare Befehle:'), nl, @@ -318,19 +317,6 @@ check_obstacles_here(Loc) :- findall(obstacle(Loc, Exit, ObstacleType), obstacle(Loc, Exit, ObstacleType), Obstacles), (Obstacles = [] -> true ; list_obstacles(Obstacles)). -list_obstacles([]). -list_obstacles([obstacle(_, Exit, ObstacleType)|T]) :- - write('HINDERNIS nach '), write(Exit), write(': '), - describe_obstacle(ObstacleType), nl, - list_obstacles(T). - -describe_obstacle(hohe_mauer) :- - write('Hohe Mauer - benötigt Parkour-Handschuhe zum Klettern'). -describe_obstacle(drone_swarm) :- - write('Drohnen-Schwarm - benötigt Kampfdrohne zur Abwehr'). -describe_obstacle(security_system) :- - write('Hochsicherheitssystem - benötigt EMP-Generator'). - % ========== MOVEMENT WITH OBSTACLES ========== move_player(Direction) :- player_location(CurrentLoc), @@ -946,127 +932,7 @@ show_status :- (player_inventory(kondensator) -> write(' Kondensator: ✓') ; write(' Kondensator: ✗')), nl)), write('=============='), nl. -% ========== GAME ENDINGS ========== -final_choice :- - write('=== FINALE ENTSCHEIDUNG ==='), nl, - write('Du hast drei Möglichkeiten:'), nl, - write('1) Das Hauptquartier mit einer EMP-Überladung zerstören (du stirbst dabei)'), nl, - write('2) Dich Aviary Control anschließen und die Welt beherrschen'), nl, - write('3) Das System hacken und die Kontrolle übernehmen'), nl, - write('Deine Wahl (1-3): '), - read(Choice), - handle_final_choice(Choice), - game_over_menu. -handle_final_choice(1) :- - write('Du entscheidest dich für das ultimative Opfer...'), nl, - write('Du überlädst alle EMP-Generatoren und Granaten gleichzeitig.'), nl, - write('Die resultierende Explosion wird das gesamte Aviary-Netzwerk vernichten.'), nl, - write('Du weißt, dass du dabei sterben wirst, aber die Menschheit wird frei sein.'), nl, - write('Du drückst den roten Knopf...'), nl, - end_game(heroic_sacrifice). - -handle_final_choice(2) :- - write('Du blickst auf die Macht, die vor dir liegt...'), nl, - write('Warum gegen das System kämpfen, wenn du es beherrschen kannst?'), nl, - write('Du aktivierst die Aviary-Kontrolle und übernimmst das Drohnen-Netzwerk.'), nl, - write('Die Welt wird unter deiner Herrschaft "sicher" sein...'), nl, - write('Aber zu welchem Preis?'), nl, - end_game(dark_ruler). - -handle_final_choice(3) :- - player_inventory(master_schluessel), - write('Du verwendest den Master-Schlüssel für vollständigen Systemzugriff...'), nl, - write('Mit diesem legendären Artefakt hackst du dich mühelos durch alle Sicherheitsebenen!'), nl, - write('Du übernimmst nicht nur die Kontrolle - du wirst zum Meister des Systems!'), nl, - write('Die Drohnen werden zu Beschützern der Freiheit umfunktioniert.'), nl, - write('Du etablierst ein neues Zeitalter der technologischen Harmonie!'), nl, - end_game(master_hacker_victory), - !. - -handle_final_choice(3) :- - write('Du versuchst das System zu hacken, aber die Sicherheit ist zu stark...'), nl, - write('Ohne die richtige Ausrüstung ist ein vollständiger Hack unmöglich.'), nl, - write('Du wirst entdeckt und gefangen genommen!'), nl, - write('(Hinweis: Es gibt einen geheimen Weg, diese Fähigkeit zu erlangen...)'), nl, - end_game(hack_failure). - -handle_final_choice(_) :- - write('Ungültige Wahl! Bitte wähle 1, 2 oder 3.'), nl, - final_choice. - -end_game(heroic_sacrifice) :- - clear_screen, - write('=== HEROISCHES OPFER ==='), nl, - write('BOOOOOOM!'), nl, - write('Das Aviary HQ explodiert in einem blendenden Lichtblitz!'), nl, - write('Alle Drohnen weltweit fallen gleichzeitig vom Himmel.'), nl, - write('Die Menschen von Linz und der ganzen Welt sind frei!'), nl, - write('Du hast dein Leben für die Freiheit der Menschheit geopfert.'), nl, - write('Du wirst als Held in Erinnerung bleiben!'), nl, - write('ENDE: Der ultimative Held'), nl. - -end_game(dark_ruler) :- - clear_screen, - write('=== DUNKLER HERRSCHER ==='), nl, - write('Die Drohnen schwärmen aus und überwachen jeden Winkel der Erde.'), nl, - write('Unter deiner Kontrolle gibt es keine Verbrechen, keine Unordnung...'), nl, - write('Aber auch keine Freiheit, keine Privatsphäre, keine Menschlichkeit.'), nl, - write('Du sitzt auf einem Thron aus Überwachung und Kontrolle.'), nl, - write('Die Welt ist "sicher" - aber zu welchem Preis?'), nl, - write('ENDE: Der neue Überwacher'), nl. - -end_game(master_hacker_victory) :- - clear_screen, - write('=== MEISTER-HACKER TRIUMPH ==='), nl, - write('Mit dem Master-Schlüssel hast du göttliche Kontrolle über das Netzwerk erlangt!'), nl, - write('Du transformierst das gesamte System in einen Beschützer der Menschheit.'), nl, - write('Die Drohnen werden zu Helfern: Sie retten Menschen, schützen die Umwelt'), nl, - write('und überwachen nur noch wirkliche Bedrohungen.'), nl, - write('Du hast die perfekte Balance zwischen Sicherheit und Freiheit geschaffen!'), nl, - write('Die Welt ist in eine neue Ära des technologischen Friedens eingetreten.'), nl, - write('ENDE: Der Meister-Hacker (Geheimes Ende)'), nl. - -end_game(hack_failure) :- - clear_screen, - write('=== HACK FEHLGESCHLAGEN ==='), nl, - write('Deine Hacking-Versuche wurden entdeckt!'), nl, - write('Sicherheitsdrohnen umzingeln dich!'), nl, - write('Du wurdest gefangen genommen und das System läuft weiter...'), nl, - write('GAME OVER'), nl, - write('Vielleicht gibt es einen anderen Weg... einen geheimen Code?'), nl. - -end_game(defeat) :- - clear_screen, - write('=== NIEDERLAGE ==='), nl, - write('Du wurdest von den Drohnen überwältigt.'), nl, - write('Die Wahrheit bleibt für immer begraben...'), nl, - write('GAME OVER'), nl, - game_over_menu. - -game_over_menu :- - nl, - write('=== SPIEL BEENDET ==='), nl, - write('Möchtest du nochmal spielen?'), nl, - write('1) Ja - Neues Spiel starten'), nl, - write('2) Nein - Program beenden'), nl, - write('Deine Wahl (1 oder 2): '), - read(Choice), - handle_game_over_choice(Choice). - -handle_game_over_choice(1) :- - nl, - write('Startet neues Spiel...'), nl, - nl, - start_game. - -handle_game_over_choice(2) :- - write('Auf Wiedersehen! Die Wahrheit muss ans Licht...'), nl, - halt. - -handle_game_over_choice(_) :- - write('Ungültige Wahl! Bitte wähle 1, 2 oder 3.'), nl, - game_over_menu. % ========== HELP PREDICATES ========== hilfe :- process_command([hilfe]). diff --git a/game_assets/endings.pl b/game_assets/endings.pl new file mode 100644 index 0000000..5e27150 --- /dev/null +++ b/game_assets/endings.pl @@ -0,0 +1,123 @@ +% ========== FINAL CHOICES ========== +final_choice :- + write('=== FINALE ENTSCHEIDUNG ==='), nl, + write('Du hast drei Möglichkeiten:'), nl, + write('1) Das Hauptquartier mit einer EMP-Überladung zerstören (du stirbst dabei)'), nl, + write('2) Dich Aviary Control anschließen und die Welt beherrschen'), nl, + write('3) Das System hacken und die Kontrolle übernehmen'), nl, + write('Deine Wahl (1-3): '), + read(Choice), + handle_final_choice(Choice), + game_over_menu. + +handle_final_choice(1) :- + write('Du entscheidest dich für das ultimative Opfer...'), nl, + write('Du überlädst alle EMP-Generatoren und Granaten gleichzeitig.'), nl, + write('Die resultierende Explosion wird das gesamte Aviary-Netzwerk vernichten.'), nl, + write('Du weißt, dass du dabei sterben wirst, aber die Menschheit wird frei sein.'), nl, + write('Du drückst den roten Knopf...'), nl, + end_game(heroic_sacrifice). + +handle_final_choice(2) :- + write('Du blickst auf die Macht, die vor dir liegt...'), nl, + write('Warum gegen das System kämpfen, wenn du es beherrschen kannst?'), nl, + write('Du aktivierst die Aviary-Kontrolle und übernimmst das Drohnen-Netzwerk.'), nl, + write('Die Welt wird unter deiner Herrschaft "sicher" sein...'), nl, + write('Aber zu welchem Preis?'), nl, + end_game(dark_ruler). + +handle_final_choice(3) :- + player_inventory(master_schluessel), + write('Du verwendest den Master-Schlüssel für vollständigen Systemzugriff...'), nl, + write('Mit diesem legendären Artefakt hackst du dich mühelos durch alle Sicherheitsebenen!'), nl, + write('Du übernimmst nicht nur die Kontrolle - du wirst zum Meister des Systems!'), nl, + write('Die Drohnen werden zu Beschützern der Freiheit umfunktioniert.'), nl, + write('Du etablierst ein neues Zeitalter der technologischen Harmonie!'), nl, + end_game(master_hacker_victory), + !. + +handle_final_choice(3) :- + write('Du versuchst das System zu hacken, aber die Sicherheit ist zu stark...'), nl, + write('Ohne die richtige Ausrüstung ist ein vollständiger Hack unmöglich.'), nl, + write('Du wirst entdeckt und gefangen genommen!'), nl, + write('(Hinweis: Es gibt einen geheimen Weg, diese Fähigkeit zu erlangen...)'), nl, + end_game(hack_failure). + +handle_final_choice(_) :- + write('Ungültige Wahl! Bitte wähle 1, 2 oder 3.'), nl, + final_choice. + +% ========== GAME ENDINGS ========== +end_game(heroic_sacrifice) :- + clear_screen, + write('=== HEROISCHES OPFER ==='), nl, + write('BOOOOOOM!'), nl, + write('Das Aviary HQ explodiert in einem blendenden Lichtblitz!'), nl, + write('Alle Drohnen weltweit fallen gleichzeitig vom Himmel.'), nl, + write('Die Menschen von Linz und der ganzen Welt sind frei!'), nl, + write('Du hast dein Leben für die Freiheit der Menschheit geopfert.'), nl, + write('Du wirst als Held in Erinnerung bleiben!'), nl, + write('ENDE: Der ultimative Held'), nl. + +end_game(dark_ruler) :- + clear_screen, + write('=== DUNKLER HERRSCHER ==='), nl, + write('Die Drohnen schwärmen aus und überwachen jeden Winkel der Erde.'), nl, + write('Unter deiner Kontrolle gibt es keine Verbrechen, keine Unordnung...'), nl, + write('Aber auch keine Freiheit, keine Privatsphäre, keine Menschlichkeit.'), nl, + write('Du sitzt auf einem Thron aus Überwachung und Kontrolle.'), nl, + write('Die Welt ist "sicher" - aber zu welchem Preis?'), nl, + write('ENDE: Der neue Überwacher'), nl. + +end_game(master_hacker_victory) :- + clear_screen, + write('=== MEISTER-HACKER TRIUMPH ==='), nl, + write('Mit dem Master-Schlüssel hast du göttliche Kontrolle über das Netzwerk erlangt!'), nl, + write('Du transformierst das gesamte System in einen Beschützer der Menschheit.'), nl, + write('Die Drohnen werden zu Helfern: Sie retten Menschen, schützen die Umwelt'), nl, + write('und überwachen nur noch wirkliche Bedrohungen.'), nl, + write('Du hast die perfekte Balance zwischen Sicherheit und Freiheit geschaffen!'), nl, + write('Die Welt ist in eine neue Ära des technologischen Friedens eingetreten.'), nl, + write('ENDE: Der Meister-Hacker (Geheimes Ende)'), nl. + +end_game(hack_failure) :- + clear_screen, + write('=== HACK FEHLGESCHLAGEN ==='), nl, + write('Deine Hacking-Versuche wurden entdeckt!'), nl, + write('Sicherheitsdrohnen umzingeln dich!'), nl, + write('Du wurdest gefangen genommen und das System läuft weiter...'), nl, + write('GAME OVER'), nl, + write('Vielleicht gibt es einen anderen Weg... einen geheimen Code?'), nl. + +end_game(defeat) :- + clear_screen, + write('=== NIEDERLAGE ==='), nl, + write('Du wurdest von den Drohnen überwältigt.'), nl, + write('Die Wahrheit bleibt für immer begraben...'), nl, + write('GAME OVER'), nl, + game_over_menu. + + +% ========== GAME_OVER MENU ========== +game_over_menu :- + nl, + write('=== SPIEL BEENDET ==='), nl, + write('Möchtest du nochmal spielen?'), nl, + write('1) Ja - Neues Spiel starten'), nl, + write('2) Nein - Program beenden'), nl, + write('Deine Wahl (1 oder 2): '), + read(Choice), + handle_game_over_choice(Choice). + +handle_game_over_choice(1) :- + nl, + write('Startet neues Spiel...'), nl, + nl, + start_game. + +handle_game_over_choice(2) :- + end_game. + +handle_game_over_choice(_) :- + write('Ungültige Wahl! Bitte wähle 1, 2 oder 3.'), nl, + game_over_menu. \ No newline at end of file diff --git a/game_assets/locations.pl b/game_assets/locations.pl index e5d826a..61403cc 100644 --- a/game_assets/locations.pl +++ b/game_assets/locations.pl @@ -42,3 +42,16 @@ init_obstacles :- % Obstacle to aviary_hq assertz(obstacle(poestlingberg, aviary_hq, security_system)), assertz(obstacle(aviary_hq, poestlingberg, security_system)). + +list_obstacles([]). +list_obstacles([obstacle(_, Exit, ObstacleType)|T]) :- + write('HINDERNIS nach '), write(Exit), write(': '), + describe_obstacle(ObstacleType), nl, + list_obstacles(T). + +describe_obstacle(hohe_mauer) :- + write('Hohe Mauer - benötigt Parkour-Handschuhe zum Klettern'). +describe_obstacle(drone_swarm) :- + write('Drohnen-Schwarm - benötigt Kampfdrohne zur Abwehr'). +describe_obstacle(security_system) :- + write('Hochsicherheitssystem - benötigt EMP-Generator'). \ No newline at end of file diff --git a/game_assets/utilities.pl b/game_assets/utilities.pl index 13951bd..fa8c3d0 100644 --- a/game_assets/utilities.pl +++ b/game_assets/utilities.pl @@ -36,4 +36,8 @@ read_sequence(Sequence) :- Sequence = [Input]). clear_screen :- - catch(shell('clear'), _, (catch(shell('cls'), _, fail))). \ No newline at end of file + catch(shell('clear'), _, (catch(shell('cls'), _, fail))). + +end_game :- + write('Auf Wiedersehen! Die Wahrheit muss ans Licht...'), nl, + halt. \ No newline at end of file