Closed cseyda closed 6 years ago
x = 0
y = 0
def go_right(x, y):
print('You go to the right side')
new_x = x + 1
return new_x, y
# x will ich dann in user_pos_x übernehmen
user = input('Enter something: ')
if str(user) == 'right':
x, y = go_right(x, y)
etwa sowas?
dazu dann noch eine loop, so dass man immer befehle eingeben kann, um entsprechend mit dem spiel zu interagieren.
Ja, das sieht sehr passend aus. Danke.
Ich hab auch ein wenig experimentiert und bin dann auf folgende, ähnliche aber etwas umständlichere Idee gekommen:
user_pos_x = 0
user_pos_y = 0
def get_movement():
user = input('Where do you want to go? ')
if str(user) == 'left':
x = user_pos_x - 1
y = user_pos_y
return x,y
elif str(user) == 'right':
x = user_pos_x + 1
y = user_pos_y
return x,y
elif str(user) == 'up':
x = user_pos_x
y = user_pos_y + 1
return x,y
elif str(user) == 'down':
x = user_pos_x
y = user_pos_y - 1
return x,y
choice = input('What do you want do do? move or interact? ')
if choice == str('move'):
move = get_movement()
if choice == str('interact'):
interact = get_interaction()
user_pos = move
user_pos_x = user_pos[0]
user_pos_y = user_pos[1]
key_x = 1
key_y = 1
if user_pos_x and user_pos_y == key_x and key_y:
print('You found a key')
Probleme hatte ich beim return: Anscheinend ist es schwer möglich, zwei Werten per return zurückzugeben. Daher hab ich dann sowohl x als auch y per Liste zurückgeschickt und lese diese dann jeweils aus. Dass ich die return values noch einmal in "move" zwischenspeichere, ist wohl unnötig, aber auf feinere Lösungen komme ich im Moment ad hoc nicht.
Inwiefern die Abfrage nach move oder interact Sinn macht, wird sich noch zeigen. Aber das ist zumindest dann schon foreshadowing auf andere Issues ... Aber erst einmal eins nach dem anderen. Das Movement muss ja noch im Loop "wiederverwendbar" sein.
Edit: Sollte jetzt formatiert sein
formatting?
du gibst doch fast überall mehrere werte per return zurück? wo / wann tritt deiner ansicht nach ein problem auf?
anstatt
user_pos = move
user_pos_x = user_pos[0]
user_pos_y = user_pos[1]
kannst du auch einfach
user_pos = move
user_pos_x, user_pos_y = user_pos
machen.
scheint geklärt zu sein?
Robin asked:
Im Moment will ich vor allem verstehen, wie das "spätere Gameplay" funktioniert. Also wie sich die Person bewegt und wie sie mit Objekten interagieren kann. Also keine Inhalte/Story etc.
Grundlegende Frage: Wie bekomme ich aus einer Funktion einen Wert heraus, mit dem ich arbeiten kann?
Ich will also, dass der User sagt wohin er geht (im dem Fall "right"). Dann soll die Funktion go_right den user_pos_x Wert nehmen, ihn addieren und wiederzurückgeben.
Wie funktioniert das mit dem Zurückgeben eines Wertes im def? Es existiert ja nur die lokale Variable in der def. Dass mit den Argumenten (go_right(argument_1, arg_2 etc.), hab ich nur als "Zusatz-Wert" verstanden (kann eine default-Nachricht sein oder ein Wert der mitgenommen werden soll ..), aber keine Ahnung, wie ich da einen Wert als globalen Wert zurückgeben kann. Mit Return gibt er auch keine Variable weiter (?)
Ja ein simples Problem, aber ich blicke es nicht.