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! While you're at it, check out some resources Treehouse students have shared here.
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 trialAnthony Grodowski
4,902 Pointsgame.log not working
In the python shell after typing ls
game.log doesn't show up. I get only smth like this:
treehouse:~/workspace$ ls
badpep8.py buggy.py dd_game.py docstrings.py logging.py __pycache__
Why?
import logging
import random
logging.basicConfig(filename='game.log', level=logging.DEBUG)
player = {'location': None, 'path': []}
cells = [(0, 0), (0, 1), (0, 2),
(1, 0), (1, 1), (1, 2),
(2, 0), (2, 1), (2, 2)]
def get_locations():
monster = random.choice(cells)
door = random.choice(cells)
start = random.choice(cells)
if monster == door or monster == start or door == start:
monster, door, start = get_locations()
return monster, door, start
def get_moves(player):
moves = ['LEFT', 'RIGHT', 'UP', 'DOWN']
if player in [(0, 0), (1, 0), (2, 0)]:
moves.remove('LEFT')
if player in [(0, 0), (0, 1), (0, 2)]:
moves.remove('UP')
if player in [(0, 2), (1, 2), (2, 2)]:
moves.remove('RIGHT')
if player in [(2, 0), (2, 1), (2, 2)]:
moves.remove('DOWN')
return moves
def move_player(player, move):
x, y = player['location']
player['path'].append((x, y))
if move == 'LEFT':
player['location'] = x, y - 1
elif move == 'UP':
player['location'] = x - 1, y
elif move == 'RIGHT':
player['location'] = x, y + 1
elif move == 'DOWN':
player['location'] = x + 1, y
return player
def draw_map():
print(' _ _ _')
tile = '|{}'
for idx, cell in enumerate(cells):
if idx in [0, 1, 3, 4, 6, 7]:
if cell == player['location']:
print(tile.format('X'), end='')
elif cell in player['path']:
print(tile.format('.'), end='')
else:
print(tile.format('_'), end='')
else:
if cell == player['location']:
print(tile.format('X|'))
elif cell in player['path']:
print(tile.format('.|'))
else:
print(tile.format('_|'))
monster, door, player['location'] = get_locations()
logging.info('monster: {}; door: {}; player: {}'.format(
monster, door, player['location']))
while True:
moves = get_moves(player['location'])
print("Welcome to the dungeon!")
print("You're currently in room {}".format(player['location']))
draw_map()
print("\nYou can move {}".format(', '.join(moves)))
print("Enter QUIT to quit")
move = input("> ")
move = move.upper()
if move == 'QUIT':
break
if not move in moves:
print("\n** Walls are hard! Stop running into them! **\n")
continue
player = move_player(player, move)
if player['location'] == door:
print("\n** You escaped! **\n")
break
elif player['location'] == monster:
print("\n** You got eaten! **\n")
break
else:
continue
1 Answer
Josh Stephens
13,529 PointsSo I copied your code and I was able to create and log out to game.log.
treehouse:~/workspace$ ls
badpep8.py buggy.py dd_game.py docstrings.py game.log game.py
treehouse:~/workspace$ cat game.log
INFO:root:monster: (0, 0); door: (1, 2); player: (1, 0)
treehouse:~/workspace$ python --version
Python 3.6.4
can you type
python game.py
then quit out and then do an
ls -al
boi
14,242 PointsHi there josh, what is this -al command?
Chris Freeman
Treehouse Moderator 68,457 PointsThe -al are switches to the shell command ls
.
-
-a
says display all files, including "dot" files -
-l
says display long listing which includes permissions and file size
jmac pd
11,490 Pointsjmac pd
11,490 PointsI ran this fine. when I copied and saved the code and ran the program through the command line. must be something with the workspace. Maybe try copying it to your python IDE shell or anther text editor, then re-aligning the spaces and tabs in the setting, then pasting it back to the workspace.
Short of that I am not sure, but it is saving the log every time I move.