mirror of
https://github.com/JonasHinterdorfer/TextAdventure.git
synced 2025-10-26 03:41:10 +00:00
85 lines
3.8 KiB
Prolog
85 lines
3.8 KiB
Prolog
% ========== PARKOUR-MINIGAMES ==========
|
|
parkour_minigame_altstadt :-
|
|
write('Sequenz-Challenge: Wiederhole die Bewegungsfolge!'), nl,
|
|
random_member(Sequence, [[sprung, rolle, kletter], [rolle, sprung, balance], [kletter, sprung, rolle]]),
|
|
write('Merke dir: '), write_sequence(Sequence), nl,
|
|
write('Warte...'), nl, sleep(2),
|
|
clear_screen,
|
|
write('Jetzt wiederhole die Sequenz:'), nl,
|
|
write('Gib die Sequenz als Liste ein, z.B. [sprung, rolle, kletter].'), nl,
|
|
write('Verfügbare Bewegungen: sprung, rolle, kletter, balance'), nl,
|
|
write('> '),
|
|
read_sequence(UserSequence),
|
|
(UserSequence = Sequence ->
|
|
(write('Perfekte Ausführung! Du erreichst das Dach sicher!'), nl,
|
|
write('Du findest eine verschlossene Box auf dem Dach.'), nl,
|
|
write('Verwende "hack(box)" um sie zu öffnen.'), nl) ;
|
|
(write('Falsche Sequenz! Du rutschst ab und verlierst 10 Gesundheit.'), nl,
|
|
damage_player(10))).
|
|
|
|
climbing_minigame_donauufer :-
|
|
write('Balance-Challenge: Halte das Gleichgewicht!'), nl,
|
|
write('Drücke abwechselnd "links" und "rechts" um das Gleichgewicht zu halten.'), nl,
|
|
write('Du musst 5 mal korrekt reagieren!'), nl,
|
|
balance_challenge(5, 0).
|
|
|
|
balance_challenge(0, Success) :-
|
|
Success >= 4,
|
|
write('Excellent! Du hast den Turm erfolgreich erklommen!'), nl,
|
|
write('Oben ist ein elektrisches Schutzschild um eine Box.'), nl,
|
|
write('Du brauchst eine EMP-Granate um das Schild zu deaktivieren.'), nl,
|
|
(player_inventory(emp_granate) ->
|
|
(write('Du verwendest die EMP-Granate! Das Schild fällt aus!'), nl,
|
|
retract(player_inventory(emp_granate)),
|
|
write('Verwende "hack(box)" um die Box zu öffnen.'), nl) ;
|
|
true),
|
|
!.
|
|
|
|
balance_challenge(0, Success) :-
|
|
Success < 4,
|
|
write('Du verlierst das Gleichgewicht und fällst! 15 Schaden!'), nl,
|
|
damage_player(15),
|
|
!.
|
|
|
|
balance_challenge(Remaining, Success) :-
|
|
Remaining > 0,
|
|
random_member(Direction, [links, rechts]),
|
|
write('Das Gebäude schwankt nach '), write(Direction), write('! Schnell reagieren:'), nl,
|
|
write('> '),
|
|
read(Response),
|
|
NewRemaining is Remaining - 1,
|
|
(Response = Direction ->
|
|
(write('Gut! Gleichgewicht gehalten.'), nl,
|
|
NewSuccess is Success + 1) ;
|
|
(write('Falsch! Du wackelst gefährlich.'), nl,
|
|
NewSuccess = Success)),
|
|
balance_challenge(NewRemaining, NewSuccess).
|
|
|
|
climbing_minigame_poestlingberg :-
|
|
write('Stealth-Klettern: Vermeide die Überwachungskameras!'), nl,
|
|
write('Du musst die richtige Route wählen um unentdeckt zu bleiben.'), nl,
|
|
stealth_climbing_challenge.
|
|
|
|
stealth_climbing_challenge :-
|
|
write('Stufe 1: Kamera schwenkt von links nach rechts. Wann bewegst du dich?'), nl,
|
|
write('1) Wenn die Kamera nach links schaut'), nl,
|
|
write('2) Wenn die Kamera nach rechts schaut'), nl,
|
|
write('3) Wenn die Kamera geradeaus schaut'), nl,
|
|
write('> '),
|
|
read(Choice1),
|
|
(Choice1 = 1 ->
|
|
(write('Richtig! Du nutzt den toten Winkel.'), nl,
|
|
write('Stufe 2: Zwei Kameras kreuzen sich. Wann bewegst du dich?'), nl,
|
|
write('1) Gleichzeitig mit beiden'), nl,
|
|
write('2) Zwischen den Schwenkbewegungen'), nl,
|
|
write('3) Wenn eine Kamera defekt ist'), nl,
|
|
write('> '),
|
|
read(Choice2),
|
|
(Choice2 = 2 ->
|
|
(write('Perfekt! Du erreichst die Spitze unentdeckt!'), nl,
|
|
write('Du findest eine schwer gesicherte Box.'), nl,
|
|
write('Diese Box benötigt eine Kampfdrohne zum Hacken.'), nl) ;
|
|
(write('Entdeckt! Alarm! Du verlierst 20 Gesundheit beim hastigen Rückzug.'), nl,
|
|
damage_player(20)))) ;
|
|
(write('Entdeckt! Du musst schnell fliehen und verlierst 15 Gesundheit.'), nl,
|
|
damage_player(15))). |