# Spiel anfang
```python
print("Hallo Abenteurer")
print("Wilkommen in der Welt voller Abenteuer")
print("""wähle deine Klasse: 1-4
1 ein weiser Magier
2 ein mächtiger Krieger
3 ein Flinker Bogenschütze
4 ein unbekannter Bettler""")
Start = int(input("Um zu beginnen gib mir eine Zahle zwischen 1 und 4! "))
if Start == 1:
print("Du bist eine Magier")
elif Start == 2:
print("Du bist eine Krieger")
elif Start == 3:
print("Du bis ein Bogenschütze")
elif Start == 4:
print("Du startest als Bettler")
else:
print("Du bist tot da du nicht in der Lage bist eine Zahl zwischen 1 und 4 zu schreiben")
```
Wofür ist der Aufbau da oben? Wozu dient er?
Das Python script ist dafür da für verschiedene integer eingaben verschiede strings auszugeben
# Wir gehen in richtung Objektorinetierte Programmierung
## Erstellung der Klasse
```python
class character:
def __init__(self, klasse, hp, power, mana, agility):
self.klasse = klasse
self.hp = hp
self.power = power
self.mana = mana
self.agility = agility
```
## Was genau macht die Init hierbei?
Sie legt die Attribute für die Charactere fest.
## Charackter erstellung
```python
def character_create:
if auswahl == 1:
return character("Magier", hp = 60, power = 20, mana = 100, agility = 50)
elif auswahl == 2:
return character("Krieger", hp = 100, power = 80, mana = 0, agility = 40)
elif auswahl == 3:
return character("Bogenschütze", hp = 80, power = 50, mana = 20, agility = 80)
elif auswahl == 4:
return character("Bettler", hp = 100, power = 100, mana = 100, agility = 100)
```
## Vorstellung des Spielers
Verwendung von f Funktion
```python
def vorstellen(self):
print(f'Du hast die Klasse:{self.klasse}')
print(f'Du hast: {self.hp}, hp')
print(f'Du hast: {self.power}, power')
print(f'Du hast: {self.mana}, mana')
print(f'Du hast: {self.agility}, agility')
```
## Charackter auswhal
```python
character = character_create(start)
if character:
character.vorstellen()
```
# Bewegungssystem erster entwurf:
```python=
class Room:
def __init__(self, name, description):
self.name = name
self.description = description
self.exits = {}
# define all rooms
vor_der_burg = Room("Vor der Burg",
"Vor dir ragt eine alte trutzige Burg auf, das Ziel deiner tagelangen "
"Reise durch die Wälder von Mordag. Im Norden führt eine herabgelassene "
"Zugbrücke zu einem düsteren Burghof. Es ist still hier. Sehr still.")
burghof = Room("Der Burghof",
"Die hohen Mauern lassen nur weg Licht der untergehenden Sonne hinein. "
"Der Hof ist unübersichtlich. Im Laufe der Jahrhunderte hat sich hier "
"viel Schutt und Müll angesammelt. Doch im Westen führt ein Tor in den "
"Burgfried. Alle anderen Zugänge scheinen verschüttet zu sein.")
burgfried = Room("Der Burgfried",
"Hier ist es richtig dunkel. Wie praktisch wäre jetzt ein Licht. Nach "
"einige Treppen kommt ein kleiner Raum, in dem es entsetzlich stinkt. "
"Wäre die restliche Treppe nicht eingestürzt, ginge es hier zum Dach.")
schloss = Room("Schloss",
"Das ist ein Test")
jaegerhütte = Room("Jaegerhütte", "asdfd")
straße1 = Room("straße1", "asdfasd")
straße2 = Room("Straß2", "asdfasdf")
straße3 = Room("Straße3", "asdfsad")
wegekreuz = Room("Wegekreuz",
"Das ist ein Test")
wald = Room("Wald", "asdfsdf")
# all directions
directions = ("norden", "osten", "süden", "westen")
# connect rooms
schloss.exits["süden"] = wegekreuz
wegekreuz.exits["norden"] = schloss
vor_der_burg.exits["norden"] = burghof
burghof.exits["süden"] = vor_der_burg
burghof.exits["westen"] = burgfried
burgfried.exits["osten"] = burghof
# the current room
current_room = None
def enter_room(room):
global current_room
current_room = room
describe_room()
def describe_room():
emit()
emit(current_room.name); emit()
emit(current_room.description); emit()
def emit(s="", width=80):
column = 0
for word in str(s).split():
column += len(word) + 1
if column > width:
column = len(word) + 1
print()
print(word, end=" ")
print()
def play():
enter_room(wegekreuz)
while execute_command():
pass
def execute_command():
words = read_command()
if words:
if words[0] in ("gehe", "geh"):
if len(words) > 2 and words[1] == "nach":
execute_go(words[2])
elif len(words) > 1:
execute_go(words[1])
else:
emit("Wohin soll ich gehen?")
elif words[0] in directions:
execute_go(words[0])
elif words[0] in ("schaue", "schau", "beschreibung"):
describe_room()
elif words[0] == "ende":
return False
else:
emit("Ich verstehe '%s' nicht." % "".join(words))
return True
def read_command():
return [word.lower() for word in input("? ").rstrip(".?!").split()]
def execute_go(direction):
room = current_room.exits.get(direction)
if room:
enter_room(room)
else:
emit("Du kannst nicht nach '%s' gehen." % direction)
play()
```
# Die Tagesarbeit mit viel hin und her
```python=
class character:
def __init__(self, klasse, hp, power, mana, agility):
self.klasse = klasse
self.hp = hp
self.power = power
self.mana = mana
self.agility = agility
def vorstellen(self):
print(f'Du hast die Klasse:{self.klasse}')
print(f'Du hast: {self.hp}, hp')
print(f'Du hast: {self.power}, power')
print(f'Du hast: {self.mana}, mana')
print(f'Du hast: {self.agility}, agility')
def character_create(auswahl):
if auswahl == 1:
return character("Magier", hp=60, power=20, mana=100, agility=50)
elif auswahl == 2:
return character("Krieger", hp=100, power=80, mana=0, agility=40)
elif auswahl == 3:
return character("Bogenschütze", hp=80, power=50, mana=20, agility=80)
elif auswahl == 4:
return character("Bettler", hp=100, power=100, mana=100, agility=100)
else:
print('Du hast keine gültige Eingabe getroffen!')
return None
# Erstellen der Karte und der einzelnen Wegekreuze, einfügen einer def __init__ Funktion , Vergabe von Variablen
class map:
def __init__(self, name, description):
self.name = name
self.description = description
self.exits = {}
# point of interest
schloss = map("Schloss", "Das Schloss der Unendlichkeit, befindet sich auf einem ")
Magier_Turm = map("Magierturm", "Magierturm")
Hochstand = map("Hochstand", "Hochstand des Bogenschützens")
Krieger_Hütte = map("Kriegerhütte", "Kriegerhütte")
Bettler_Paradies = map("Bettlerparadies", "Bettlerparadies")
# Routing
Wegekreuz_1 = map("Wegekreuz_1", "Wegekreuz_1")
Wegekreuz_2 = map("Wegekreuz_2", "Wegekreuz_2")
Wegekreuz_3 = map("Wegekreuz_3", "Wegekreuz_3")
Wegekreuz_4 = map("Wegekreuz_4", "Wegekreuz_4")
Richtungen = ("norden", "süden", "westen", "osten")
schloss.exits["norden"] = Wegekreuz_1
schloss.exits["osten"] = Wegekreuz_2
schloss.exits["süden"] = Wegekreuz_3
schloss.exits["westen"] = Wegekreuz_4
Magier_Turm.exits["norden"] = Wegekreuz_4
Magier_Turm.exits["osten"] = Wegekreuz_3
Hochstand.exits["osten"] = Wegekreuz_1
Hochstand.exits["süden"] = Wegekreuz_4
Krieger_Hütte.exits["norden"] = Wegekreuz_2
Krieger_Hütte.exits["westen"] = Wegekreuz_3
Bettler_Paradies.exits["westen"] = Wegekreuz_1
Bettler_Paradies.exits["süden"] = Wegekreuz_2
Wegekreuz_1.exits["westen"] = Hochstand
Wegekreuz_1.exits["osten"] = Bettler_Paradies
Wegekreuz_1.exits["süden"] = schloss
Wegekreuz_2.exits["norden"] = Bettler_Paradies
Wegekreuz_2.exits["süden"] = Krieger_Hütte
Wegekreuz_2.exits["westen"] = schloss
Wegekreuz_3.exits["norden"] = schloss
Wegekreuz_3.exits["osten"] = Krieger_Hütte
Wegekreuz_3.exits["westen"] = Magier_Turm
Wegekreuz_4.exits["osten"] = schloss
Wegekreuz_4.exits["norden"] = Hochstand
Wegekreuz_4.exits["süden"] = Magier_Turm
# the current map
current_map = None
def enter_map(map):
global current_map
current_map = map
describe_map()
def describe_map():
emit()
emit(current_map.name); emit()
emit(current_map.description); emit()
def emit(s="", width=80):
column = 0
for word in str(s).split():
column += len(word) + 1
if column > width:
column = len(word) + 1
print()
print(word, end=" ")
print()
def play():
enter_map(Wegekreuz_1)
while execute_command():
pass
def execute_command():
words = read_command()
if words:
if words[0] in ("gehe", "geh"):
if len(words) > 2 and words[1] == "nach":
execute_go(words[2])
elif len(words) > 1:
execute_go(words[1])
else:
emit("Wohin soll ich gehen?")
elif words[0] in Richtungen:
execute_go(words[0])
elif words[0] in ("schaue", "schau", "beschreibung"):
describe_map()
elif words[0] == "ende":
return False
else:
emit("Ich verstehe '%s' nicht." % "".join(words))
return True
def read_command():
return [word.lower() for word in input("? ").rstrip(".?!").split()]
def execute_go(Richtungen):
map = current_map.exits.get(Richtungen)
if map:
enter_map(map)
else:
emit("Du kannst nicht nach '%s' gehen." % Richtungen)
print('Hallo Abenteurer,')
print('Willkommen in der Welt voller Abenteuer')
start = int(input('''Du hast die Wahl zwischen
einem weisen Magier(1)
einem mächtigen Krieger(2),
einem flinken Bogenschützen(3)
einem unbekannten Bettler(4)
Um zu beginnen gib mir eine Zahl zwischen 1 und 4! '''))
character = character_create(start)
if character:
character.vorstellen()
play()
```
### Lukas
Habe versucht den Code zu vereinfachen bin aber immer wieder in fehler gelaufen und habe es am ende nicht geschaft
### Stefan
Selbststudium Fehleranalyse
### Andreas
Selbststudium code verbesserungen mit Internet und Chatgpt ohne erfolg
### Enrico
Recherche und Code verbesserungen
### Fatih
Selbststudium Fehleranalyse