Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community!
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trial

George S-T
6,624 PointsHow to properly use return in Python?
Hi. Im trying to create my own dungeon game before getting on to the video.
Here is a snippet of my code:
def set_positions():
clear()
monster = random.choice(cells)
door = random.choice(cells)
player = random.choice(cells)
if player == monster:
set_positions()
elif monster == door:
set_positions()
elif door == player:
set_positions()
else:
print('coords set')
user_input()
return player, door, monster
def move_right():
#I would like to use the values of player, door and monster (from set_positions()) in this function
#current_position = player ?
My question is: how do I use the player, door and monster position from my set_positions() function in the move_right() function?
Thanks
1 Answer

Chris Freeman
Treehouse Moderator 68,390 PointsI don't think you want to use the values returned by set_positions()
directly with move_right()
. This would mean calling set_positions()
each time move_right()
was called which would change all of the positions of player, door, and monster.
What you likely want is to capture the values from set_positions()
into variables from some main
function or loop, then operate on these captured values. Here is one way to structure your code:
def set_positions():
# ... snip
# return positions as list
return [player, door, monster]
def move_right(positions):
#I would like to use the values of player, door and monster (from set_positions()) in this function
# access player position from first item in positions list
current_player_position = positions[0]
positions[0] = (current_player[0] + 1, current_player[1])
# Main loop
while playing_game:
# get positions as list
positions = set_positions()
# ...
if move == "RIGHT":
# pass positions list to move_right
move_right(positions)
Testing this in the Python REPL:
>>> positions = [(0, 0), (1, 3), (4, 5)]
>>> def move_player_right(positions):
... current_player = positions[0]
... positions[0] = (current_player[0] + 1, current_player[1])
...
>>> positions
[(0, 0), (1, 3), (4, 5)]
>>> move_player_right(positions)
>>> positions
[(1, 0), (1, 3), (4, 5)]
Post back if you are looking for something different. Good Luck!
George S-T
6,624 PointsGeorge S-T
6,624 PointsPerfect, thanks! Finished the game now :)