out of minor - * made add_player_mark() also call the player instance to record mark into it's internal list * put the exception message into a separate variable for the sake of simpler representation
The map is revolved around a dictionary. This way there's no need to spend computing power expanding the map, if it was a 2-dimensional list.