working version

This commit is contained in:
u80864958 2024-12-11 10:07:05 +01:00
parent b2305b1e4c
commit f4f7535887
15 changed files with 388 additions and 306 deletions

2
.gitignore vendored
View File

@ -5,7 +5,7 @@ __pycache__/
# C extensions
*.so
.idea
# Distribution / packaging
.Python
build/

3
.idea/.gitignore vendored
View File

@ -1,3 +0,0 @@
# Default ignored files
/shelf/
/workspace.xml

View File

@ -1,6 +0,0 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="PyDocumentationSettings">
<option name="format" value="PLAIN" />
<option name="myDocStringFormat" value="Plain" />
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="py.test" />
</component>
</module>

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.12 (lous-thing)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (lous-thing)" project-jdk-type="Python SDK" />
</project>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/lous-thing.iml" filepath="$PROJECT_DIR$/.idea/lous-thing.iml" />
</modules>
</component>
</project>

3
.timer.toml Normal file
View File

@ -0,0 +1,3 @@
## dates and their corresponding seconds been here :)
[24-12-11]
u80864958_at_u80864958 = 8231

View File

@ -1,110 +1,59 @@
#####################
# Autor:in: Taina Sophia Kreuzer
#####################
import Texte as t
import Toolbox as tb
import BetterUtils as u
from Toolbox import *
from Texte import *
print(t.welcome_message)
print()
print()
print()
print(disclaimer)
print ()
print(einstieg)
# setup Characters
user = u.User()
interest = u.RomanticInterest(user.preference, u.generateAge(user.age))
name= input(fragename)
spieler = Wesen(name)
ausrüstung= [akten, handy]
print (inventar1+name+inventar2)
zeigeListe(ausrüstung)
print(ziel1)
answer=input(frage1)
# meet interest
t.meet_cute()
tb.pressForward()
interest.introduce()
tb.pressForward()
print(t.situation_head_over_heels)
tb.pressForward()
pressForward()
# First choice
print(t.ask_what_you_do)
action = u.wähleAusListe([
t.action_throw_book,
t.action_introduce_self,
t.action_ask_age,
])
if (answer==ja):
print(aufzählunggrid)
elif (answer== nein):
print(gut)
print()
print(start)
print(indiz1)
user.do_action(action)
tb.pressForward()
interest.react_to(action)
pressForward()
verdächtigter1=input(vorraussetungantwort1)
if(verdächtigter1==lösungv1):
print(anfang)
## Second choice
print(t.ask_what_you_do)
action = u.wähleAusListe([
t.action_dance,
t.action_ask_for_number,
t.action_tell_compliment,
])
user.do_action(action)
tb.pressForward()
interest.react_to(action)
# Third Choice
print(t.ask_what_you_do)
action = u.wähleAusListe([
t.action_invite_to_date,
t.action_hug_out_of_blue,
t.action_send_dickpic,
])
user.do_action(action)
tb.pressForward()
interest.react_to(action)
u.showStats(interest)
if interest.is_won():
print(t.won_message)
else:
print (DNN)
verdächtigter1=input(vorraussetungantwort1)
if(verdächtigter1==lösungv1):
print(gut)
else:
print (DNN)
verdächtigter1=input(vorraussetungantwort1)
if(verdächtigter1==lösungv1):
print(endlich)
else:
print (DNN)
verdächtigter1=input(vorraussetungantwort1)
if (verdächtigter1==lösungv1):
print (wurdezeit)
else:
print(nötigertipp)
antworttipp1=input(nochmal2)
if(antworttipp1==lösungv1):
print(gedauert)
else:
AbenteuerAbbrechen()
pressForward()
print(texträtsel1)
print(rätsel1)
antwort1= input(WBI)
wiederholung= 1
while (antwort1!=lösung1):
print (falsch)
if (wiederholung==2):
print(rätsel1tipp1)
if (wiederholung==4):
print(rätsel1tipp2)
antwort1= input(WBI)
wiederholung= wiederholung +1
print (klopfen)
print (totobüro)
pressForward()
print(texträtsel2)
print(rätsel2)
antwort2= input(WBI)
while (antwort2!=lösung2):
print (falsch)
antwort1= input(WBI)
print(vasseurtext)
pressForward()
print(nächsterlead)
guess= input(letzteverdächtigte)
while (guess!=lösung3):
print (nöperson)
antwort1= input(guess)
print(belohung)
pressForward()
print (rätsel3)
antwort3= input(WBI)
while (antwort3!=lösung4):
print (nochmal)
antwort1= input(WBI)
print(ende)
pressForward()
print(theend)
print(theend2)
print(theend3)
print(t.loose_message)

173
BetterUtils.py Normal file
View File

@ -0,0 +1,173 @@
import time
import random
import math
import Toolbox as tb
import Texte as t
# Colorize, made with help from Niklas
MAGENTA = "\033[35m"
BLUE = "\033[34m"
RESET = "\033[0m" # called to return to standard terminal text color
def blue(s):
return BLUE + s + RESET
def magenta(s):
return MAGENTA + s + RESET
def wähleAusListe(listeDerOptionen):
"""Lässt Benutzer*innen eine Option aus einer Liste auswählen und gibt die gewählte Option zurück."""
auswahl = tb.wähleAusListe(listeDerOptionen)
return listeDerOptionen[auswahl - 1]
def askUser(question):
while True:
answer = input(question + " ")
if answer != "":
return answer
# generate Age using Wää formula
def askUserInt(question):
while True:
try:
return int(askUser(question + " "))
except:
print(t.err_not_a_number)
def generateAge(interest_age):
min = int((interest_age / 2) + 7)
max = int((interest_age - 7) * 2)
print(min)
print(max)
return tb.randomInRange(min, max)
def showStats(intrest):
print("You got " + str(intrest.rom_points) + " of "+str(intrest.rom_goals)+" rom points")
class RomanticInterest:
def __init__(self, gender, age):
self.name = random.choice(t.names.get(gender, t.names[t.gender_other]))
self.gender = gender
self.age = age
self.rom_goals = 200
self.rom_points = 50
def introduce(self):
print(magenta("oh..."))
print(magenta("Hallo du!"))
time.sleep(0.7)
print(magenta("Mein name ist " + self.name + "."))
time.sleep(0.5)
## only print pronouns if nonbinary otherwise clear from name
if self.gender == t.gender_other:
print("Und BTW meine Pronomen sind: they/them.")
def react_to(self, action):
"""
call this function to react to a action defined in texte
"""
# first choice
if action == t.action_ask_age:
print(magenta("Ich bin " + str(self.age) + " jahre alt!"))
self.rom_points -= 20
elif action == t.action_throw_book:
print(magenta(t.situation_get_hurt_bad))
self.rom_points -= 100
elif action == t.action_introduce_self:
print(magenta("Hallo du"))
self.rom_points += 50
# second choice
elif action == t.action_dance:
print(magenta(t.situation_wierd_cute))
self.rom_points += 50
elif action == t.action_ask_for_number:
## It depends on achieved rompoints
if self.rom_points > 100:
print(magenta(t.situation_accept))
self.rom_points += 50
elif self.rom_points > 0:
print(magenta(t.situation_decline_friendly))
else:
print(magenta(t.situation_decline_agressive))
self.rom_points -= 100
elif action == t.action_tell_compliment:
print(magenta(t.situation_recieve_compliment))
self.rom_points += 100
# third choice
elif action == t.action_invite_to_date:
## It depends on achieved rompoints
if self.rom_points > 150:
print(magenta(t.situation_accept))
self.rom_points += 100
elif self.rom_points > 50:
print(magenta(t.situation_decline_friendly))
else:
print(magenta(t.situation_decline_agressive))
self.rom_points -= 100
elif action == t.action_hug_out_of_blue:
## It depends on achieved rompoints
if self.rom_points > 100:
print(magenta(t.situation_hug_back))
self.rom_points += 100
elif self.rom_points > 50:
print(magenta(t.situation_stand_akward))
self.rom_points -= 20
else:
print(magenta(t.situation_react_to_inapropriate))
self.rom_points -= 100
self.rom_points -= 10000
print(magenta(t.situation_react_to_inapropriate))
elif action == t.action_send_dickpic:
self.rom_points -= 10000
print(magenta(t.situation_react_to_inapropriate))
def is_won(self):
return self.rom_points > self.rom_goals
class User:
def __init__(self):
self.name = askUser(t.ask_name)
self.age = askUserInt(t.ask_age)
print(t.ask_sexual_preference)
self.preference = wähleAusListe([
t.gender_male,
t.gender_female,
t.gender_other,
])
def __str__(self):
return self.name + str(self.age) + self.preference
def do_action(self, action):
# first choice
if action == t.action_ask_age:
print(blue(t.ask_age))
elif action == t.action_throw_book:
print(blue(t.situation_throw_book))
elif action == t.action_introduce_self:
print(blue("Hallo"))
# Second Choice
elif action == t.action_dance:
print(blue(t.situation_dance))
elif action == t.action_ask_for_number:
print(blue(t.situation_ask_for_number))
elif action == t.action_tell_compliment:
print(blue(t.situation_tell_compliment))
# Third choice
elif action == t.action_invite_to_date:
print(blue(t.situation_ask_for_date))
elif action == t.action_hug_out_of_blue:
print(blue(t.situation_hug))
elif action == t.action_send_dickpic:
print(blue(t.situation_send_dickpic))

View File

@ -3,14 +3,19 @@ Hier können Sie Ihre Texte aufschreiben.
Das hat den Vorteil, dass der Code Ihres Abenteuers übersichtlicher wird.
Verwenden Sie selbsterklärende Variablennamen.
"""
import time
welcome_message="Willkommen in Delulu-World!!\nDie virtuelle Welt der Wahnhaften."
welcome_message = "Willkommen in Deloulou-World!!\nDie virtuelle Welt der Wahnhaften."
won_message = "Du hast es geschafft"
loose_message = "Du hast leider verloren"
ask_name = "Was ist dein Name?"
ask_age="Was alter?"
ask_sexual_preference="was du bums?"
ask_what_you_do="Was mchst du?"
ask_age = "Wie alt bist du?"
ask_sexual_preference = "Was ist deine Preferenza?"
ask_what_you_do = "Was machst du?"
ask_for_date = "Willst du vielleicht mit mir, naja mal was machen?"
def meet_cute():
print("""
@ -20,19 +25,71 @@ also siehst du die Person die dir entgegen kommt nicht.
time.sleep(1.5)
print("WUUUUMMMMMMSSS")
situation_head_over_heels = """
Dir fehlen die Worte. Noch nie ist dir eine solch atemberaubende Person ins
Leben getreten. Schnell, deine Traumperson wartet auf eine Antwort!
"""
situation_throw_book = """
Du wirfst dein Buch!!!
"""
situation_dance = """
Du kramst aus deiner Tasche dein Telefon und Stellst musik an:
"I like to move it move it"
"I like to move it move it..."
Zu diesen wundersamen Klängen bewegst du dich selbst schwungvoll.
"""
situation_send_dickpic = """
Du begiebst dich auf die Toilete und Klick! Schon hast du das Photo gemacht
und Schwups, schon gesendet.
"""
situation_tell_compliment = """
Du liest "Rosenkranz und Güldenstern"?
Da hat ja mal jemand Geschmack!
"""
situation_ask_for_number = """
Darf ich fragen was deine Telefon nummer ist?
"""
situation_ask_for_date = """
Mochtest du vielleicht, naja mal eventuell was mit mir unternehmen?"
"""
situation_wierd_cute = """
Hehe, Okey? Das hat noch nie jemand für mich gemacht, aber somewhat cute.
"""
situation_hug = """
*Du setzt einen Fuss nach vorne und umarmst dein Gegenüber.*
"""
situation_hug_back = """
Aww *Dein Gegenüber umarmt dich auch.
"""
situation_stand_akward = """
*Deinem Gegenüber ist es sichtlich unangenehm*
"""
situation_recieve_compliment = "Oh, *streicht sich durch's haar * Merci <3"
situation_get_hurt_bad = "Aua, was soll das!?!"
situation_react_to_inapropriate = "WTF, DU SCHWEIN, VERZIEHDICH!!!!!"
situation_decline_agressive = "Nein, damit hättest du auch noch warten können!"
situation_decline_friendly = "Lieber nicht."
situation_accept = "Ou ja, das würde mich freuen."
action_throw_book = "Werfe dein buch nach der Person."
action_introduce_self = "Stelle dich selbst vor."
action_ask_age = "Wie alt bist du?"
action_dance = "Führe einen lustigen tanz auf."
action_ask_for_number = "Frage nach der Telefon nummer."
action_tell_compliment = "Mache ein Kompliment"
action_invite_to_date = "Frage die Person, ob sie etwas mit dir unternehmen möchte."
action_hug_out_of_blue = "Umarme dein Gegenüber."
action_send_dickpic = "Schicke ein unanständiges bild ;)"
gender_male = "Mänlich"
gender_female = "Weiblich"
gender_other = "Nonbinär"
@ -43,4 +100,5 @@ names = {
gender_other: ["Kim", "Sky", "Raven"],
}
err_not_a_number="Bitte gib nummere"
err_not_a_number = "Bitte eine nummer eingeben."

View File

@ -1,8 +1,3 @@
import time
from colors import MAGENTA, BLUE, RESET
from Texte import *
""""
Hier finden Sie Funktionen, die Sie für Ihr eigenes Abenteuer nutzen können.
Die Funktionen sind auch auf OneNote dokumentiert.
@ -10,11 +5,14 @@ Die Funktionen sind auch auf OneNote dokumentiert.
import random
def randomInRange (untergrenze,obergrenze):
"""Generiert einen zufälligen Wert innerhalb vorgegebener Grenzen"""
return random.randint(untergrenze,obergrenze)
def randomItem ():
"""Wählt einen zufälligen Gegenstand aus einer vordefinierten Liste aus."""
möglicheGegenstände = ["holzpflocksichere Weste","Anti-Knoblauch-Spray","Noten-Booster","Nachsitz-Stellvertreter*in","Gummibärli mit veganer Gelatine","Hausaufgaben-Weg!-Zauber","Sportunterricht-Schwänz-Ausreden-Generator","Dauer-Abo für Programmier-Lern-Videos","nasse-Schwämme-Kanone, unsichtbar für Lehrsonen","vom-Bett-direkt-ins-Schulzimmer-Beamer","Hausaufgaben-Butler","langweilige Informatik-Lektion (äusserst selten!!!)","Monster-Lexikon","Friedens-Panzer","privater Mensa-Tisch mit unendlich Dessert","ewige Jugend","Mute-Schalter für Erwachsene","Thermo-Mix","Lösungen für alle Prüfungen ever","1 Tonne Kaugummi mit Salat-Geschmack","solarbetriebenes Karton-Uboot","Übersetzungsgerät Katzen->Menschen","Hausstaub","Ersatz-Schuebändel","sehr effizientes Reinigungsmittel","Buch 1001 lustige Mathe-Rätsel","10-bändige Enzyklopädie des schweizerdeutschen Humors","3-zinkige Gabel","Löffel mit eingebautem Lautsprecher","Staubsauger, der dich versteht","personalisierbares WC-Papier","Velo mit Gartenschlauch-Anschluss","Laserschwert-Schärfer","Pickel-Erzeugungs-Crème","elegante Wanderschuhe","interstellare Raumfähre für Würmer","Bücherwurm-Komposter","nimmermüdes Murmeltier","Regenbogen produzierende Sonnenbrille","Sichtbarmachende Unsichtbarkeitsbrille","Pflanzenwachstums-Beschleunigungs-Spray","Gedankenlesende Haarbürste","Selbstreinigendes Geschirr","Automatischer Unterrichts-Versteher","Unzerbrechliche Seifenblase","Universale Fernbedienung für alles","Portabler Schwarzes Loch Müllschlucker"]
return random.choice(möglicheGegenstände)
def testeObInListe (liste, ding):
"""Überprüft, ob ein Element in einer Liste vorhanden ist und gibt entsprechend Rückmeldung"""
@ -24,13 +22,11 @@ def testeObInListe(liste, ding):
print("Leider existiert",ding,"nicht - jedenfalls nicht hier...")
return False
def zeigeListe (listeDerOptionen):
"""Zeigt eine Liste von Optionen nummeriert an."""
for i, element in enumerate(listeDerOptionen):
print(f"{i+1}. {element}")
def wähleAusListe(listeDerOptionen):
"""Lässt Benutzer*innen eine Option aus einer Liste auswählen und gibt die gewählte Option zurück."""
zeigeListe(listeDerOptionen)
@ -43,22 +39,17 @@ def wähleAusListe(listeDerOptionen):
print("Ungültige Auswahl. Bitte versuchen Sie es erneut.")
return wähleAusListe(listeDerOptionen)
else:
# return element not number
return listeDerOptionen[auswahl - 1]
return auswahl
def pressForward():
"""Hält das Ausführend des Programms an, bis der Benutzer eine Taste drückt."""
input("\n-----------Drücke eine beliebige Taste fürs Weiterfahren.-----------")
input("\n-----------Drücken Sie eine beliebige Taste fürs Weiterfahren.-----------")
# Why Pascal case???
def AbenteuerAbbrechen():
"""Beendet das Abenteuer vorzeitig und bricht die Ausführung des Programms ab."""
print("Das Spiel ist leider zu Ende.")
exit()
def AbenteuerEnde():
"""Markiert das erfolgreiche Ende des Abenteuers."""
print("Nach zahlreichen Strapazen haben Sie es geschafft!")
@ -70,54 +61,74 @@ def AbenteuerEnde():
print("::::::::::::::::THE END::::::::::::::::")
def blue(s):
return BLUE + s + RESET
class Wesen ():
def __init__(self, name):
self.name = name
self.lebenspunkte = 100
self.kraft = randomInRange(3,6) # randomisierte Kraft zur Instanziierung, um Spielablauf weniger berechenbar zu gestalten
self.besitz = self.besitz = [randomItem()]
def stelltSichVor(self):
"""Stellt das Wesen vor und zeigt dessen Besitz."""
print("Name:\t\t",self.name)
print("Folgendes ist im Besitz von ",self.name,":")
zeigeListe(self.besitz) # Aufruf einer weiteren Funktion (zeigeListe)
pressForward()
def magenta(s):
return MAGENTA + s + RESET
def bekommtEtwas (self, beschreibung):
"""Fügt der Besitzliste des Wesens ein neues Item hinzu."""
self.besitz.append(beschreibung)
print(self.name,"besitzt jetzt",beschreibung)
def gibtEtwasAn (self, nehmer, beschreibung):
"""Ermöglicht die Übergabe von Gegenständen zwischen zwei Wesen."""
print(self.name,"gibt",beschreibung,"an",nehmer.name)
if testeObInListe (self.besitz,beschreibung)==False:
print("\nOh",self.name,"hat gar kein",beschreibung,":-(")
else:
nehmer.bekommtEtwas(beschreibung)
self.besitz.remove(beschreibung)
pressForward()
def askUser(question):
while True:
answer = input(question + " ")
if answer != "":
return answer
def kämpftMit (self, anderesWesen, anzahlRunden):
"""Lässt zwei Wesen über eine bestimmte Anzahl von Runden miteinander kämpfen."""
print("\n",self.name,"und",anderesWesen.name,"kämpfen!")
# Hier werden 4 Funktionen innerhalb einer Funktion definiert.
# Das ist dann sinnvoll, wenn diese Funktion nirgends sonst verwendet werden.
# Falls später z.B. der Verlierer dem Gewinner einen Gegenstand gibt, kann das unkompliziert ergänzt werden - ohne den übrigen Code zu verändern.
def kämpfen (fig1, fig2): # fig1=verteidiger, fig2= angreifer
if testeObBeideLeben(self, anderesWesen):
angriffsstärke = randomInRange(1,10) * fig2.kraft
print(fig2.name,"greift",fig1.name,"mit",angriffsstärke,"an.")
fig1.lebenspunkte=fig1.lebenspunkte-angriffsstärke
statusbericht(fig1)
def askUserInt(question):
while True:
try:
return int(askUser(question + " "))
except:
print(err_not_a_number)
def statusbericht (wesen):
print("Lebenspunkte von",wesen.name,":\t",wesen.lebenspunkte)
def kampfBeenden(self):
print("\nDer Kampf zwischen",self.name,"und",anderesWesen.name,"ist zu Ende.")
class RomanticInterest():
def __init__(self, gender):
self.name = random.choice(names.get(gender, names[gender_other]))
self.gender = gender
self.rom_goals = 200
self.rom_points = 50
if self.lebenspunkte > anderesWesen.lebenspunkte:
print(self.name,"hat gewonnen!")
else:
print(self.name,"hat verloren.")
def introduce(self):
print(magenta("oh..."))
print(magenta("Hallo du!"))
time.sleep(0.7)
print(magenta("Mein name ist " + self.name + "."))
time.sleep(0.5)
def testeObBeideLeben(self, anderesWesen):
if self.lebenspunkte > 0 and anderesWesen.lebenspunkte > 0:
return True
## only print pronouns if nonbinary otherwise clear from name
if self.gender == gender_other:
print("Und BTW meine Pronomen sind: they/them.")
def react_to(self, action):
if action == action_ask_age:
print(magenta("Ich bin 17 jahre alt!"))
self.rom_points -= 20
elif action == action_throw_book:
print(magenta(situation_get_hurt_bad))
self.rom_points -= 100
elif action == action_introduce_self:
print(magenta("Hallo du"))
self.rom_points += 50
# Es folgt nun in den nächsten Zeilen der eigentliche Kampf.
# Durch die Verwendung von Funktionen wird es sehr übersichtlich!
statusbericht(self)
statusbericht(anderesWesen)
rundenZähler = 1
anzahlRunden +=1
while (rundenZähler<anzahlRunden and testeObBeideLeben(self, anderesWesen)):
print("\nRunde",(rundenZähler),":")
kämpfen(self, anderesWesen)
kämpfen(anderesWesen, self)
rundenZähler+=1
pressForward()
kampfBeenden(self)

View File

@ -1,18 +0,0 @@
BLACK = '\033[30m'
RED = '\033[31m'
GREEN = '\033[32m'
YELLOW = '\033[33m' # orange on some systems
BLUE = '\033[34m'
MAGENTA = '\033[35m'
CYAN = '\033[36m'
LIGHT_GRAY = '\033[37m'
DARK_GRAY = '\033[90m'
BRIGHT_RED = '\033[91m'
BRIGHT_GREEN = '\033[92m'
BRIGHT_YELLOW = '\033[93m'
BRIGHT_BLUE = '\033[94m'
BRIGHT_MAGENTA = '\033[95m'
BRIGHT_CYAN = '\033[96m'
WHITE = '\033[97m'
RESET = '\033[0m' # called to return to standard terminal text color

29
main.py
View File

@ -1,29 +0,0 @@
from Texte import *
from Toolbox import *
from user import User
print(welcome_message)
user = User()
interest = RomanticInterest(user.preference)
meet_cute()
pressForward()
interest.introduce()
pressForward()
print(situation_head_over_heels)
pressForward()
print(ask_what_you_do)
action = wähleAusListe([action_throw_book, action_introduce_self, action_ask_age])
user.do_action(action)
pressForward()
interest.react_to(action)

View File

@ -1,5 +0,0 @@
home = /usr/bin
include-system-site-packages = false
version = 3.12.7
executable = /usr/bin/python3.12
command = /usr/bin/python3 -m venv /home/schreifuchs/dev/lous-thing

21
user.py
View File

@ -1,21 +0,0 @@
from Toolbox import *
from Texte import *
class User:
def __init__(self):
self.name = askUser(ask_name)
self.age = askUserInt(ask_age)
print(ask_sexual_preference)
self.preference = wähleAusListe([gender_male, gender_female, gender_other])
def __str__(self):
return self.name + str(self.age) + self.preference
def do_action(self, action):
if action == action_ask_age:
print(blue(ask_age))
elif action == action_throw_book:
print(blue(situation_throw_book))
elif action == action_introduce_self:
print(blue("Hallo"))