original_docstring: 
  	Reads the level text file, and generates a gamemap.
  	The various objects are represented as:
  		Walls: -1
  		Floor: -2
  		Man:   -3
  		Goal:  -4
  		Man on goal: -5
  		Boulder on goal: -1*(bouldernum+1)*10
  		Boulder: bouldernum, which represents the index of the boulder oject in the list of boulder objects
  			The boulderobject list is made in the initialise board function, where all these objects are placed on the GUI
  	
docstring: Reads the level text file, and generates a gamemap.
docstring_tokens: Reads the level text file and generates a gamemap .
code: def makeMapArray(levelNum='3'):
  	'''
  	Reads the level text file, and generates a gamemap.
  	The various objects are represented as:
  		Walls: -1
  		Floor: -2
  		Man:   -3
  		Goal:  -4
  		Man on goal: -5
  		Boulder on goal: -1*(bouldernum+1)*10
  		Boulder: bouldernum, which represents the index of the boulder oject in the list of boulder objects
  			The boulderobject list is made in the initialise board function, where all these objects are placed on the GUI
  	'''
  	level=open('levels/project_levels/level'+levelNum,'r').read()
  	outerArray=list()
  	innerArray=[]
  	characterMap={'$':0, '#':-1, ' ':-2, '@':-3, '.': -4, '+':-5}
  	
  	for char in level:
  		if char!='\n':
  			if(char=='*'):
  				#if a boulder is found on a goal, store it as -1*(bouldernum+1)*10
  				#note that this formula ensures boulderongoal is always represented as a num<=-10.
  				#hence, while gameplay if the num<=-10, we know it's a boulder on goal
  				#we can access the corresponding boulder object by using the expression:
  				# currentBoulder= -1*num/10 -1
  				#Using currentBoulder, we can access the boulder object from the boulderlist. 
  				#Also, since a boulder was added, increment bouldernum by 1
  
  				#%%---why use bouldernum+1 instead of bouldernum to represent boulderongoal:
  				#%%---if bouldernnum=0, then the resulting value will be 0, which represents the first boulder not on a goal,
  				#%%---hence causing a conflict. We must ensure that boulderongoal is always<=-10, hence start from bouldernum+1
  				innerArray.append((characterMap['$']+1)*10*-1)
  				characterMap['$']+=1
  			else:
  				innerArray.append(characterMap[char])
  				#if a boulder was added, increment bouldernum
  				if char=='$':
  					characterMap['$']+=1
  		else:
  			outerArray.append(innerArray)
  			innerArray=[]
  	outerArray.append(innerArray)
  	return outerArray
code_tokens: def makeMapArray ( levelNum = '3' ) : level = open ( 'levels/project_levels/level' + levelNum , 'r' ) . read ( ) outerArray = list ( ) innerArray = [ ] characterMap = { '$' : 0 , '#' : - 1 , ' ' : - 2 , '@' : - 3 , '.' : - 4 , '+' : - 5 } for char in level : if char != '\n' : if ( char == '*' ) : innerArray . append ( ( characterMap [ '$' ] + 1 ) * 10 * - 1 ) characterMap [ '$' ] += 1 else : innerArray . append ( characterMap [ char ] ) if char == '$' : characterMap [ '$' ] += 1 else : outerArray . append ( innerArray ) innerArray = [ ] outerArray . append ( innerArray ) return outerArray
short_docstring: Reads the level text file, and generates a gamemap.
short_docstring_tokens: Reads the level text file and generates a gamemap .
comment: '''
  	Reads the level text file, and generates a gamemap.
  	The various objects are represented as:
  		Walls: -1
  		Floor: -2
  		Man:   -3
  		Goal:  -4
  		Man on goal: -5
  		Boulder on goal: -1*(bouldernum+1)*10
  		Boulder: bouldernum, which represents the index of the boulder oject in the list of boulder objects
  			The boulderobject list is made in the initialise board function, where all these objects are placed on the GUI
  	'''$SEP$#if a boulder is found on a goal, store it as -1*(bouldernum+1)*10$SEP$#note that this formula ensures boulderongoal is always represented as a num<=-10.$SEP$#hence, while gameplay if the num<=-10, we know it's a boulder on goal$SEP$#we can access the corresponding boulder object by using the expression:$SEP$# currentBoulder= -1*num/10 -1$SEP$#Using currentBoulder, we can access the boulder object from the boulderlist. $SEP$#Also, since a boulder was added, increment bouldernum by 1$SEP$#%%---why use bouldernum+1 instead of bouldernum to represent boulderongoal:$SEP$#%%---if bouldernnum=0, then the resulting value will be 0, which represents the first boulder not on a goal,$SEP$#%%---hence causing a conflict. We must ensure that boulderongoal is always<=-10, hence start from bouldernum+1$SEP$#if a boulder was added, increment bouldernum