Example #1
0
def uncover(request):
	"""
	1. marks the block as selected
	2. determines if user selected a mine
	3. if there's a mine then send map of all mines to user
	4. else return the number of mines in that area
	"""

	if request.is_ajax():
		if request.method == 'POST':
			request.session.set_expiry(ONE_HOUR)
			json_data = json.loads( request.body )

			try:
				row = json_data['row']
				col = json_data['col']
			except KeyError:
				print "Error: The post request did not json parameters as expected"
				return
			else:
				response_data = {}
				gameboard = GameBoard.deserialize( request.session[GAMEBOARD] )

				response_data['gameover'] = gameboard.select_block(row, col)
				response_data['mine_locations'] = gameboard.get_mine_locations() if response_data['gameover'] else None
				response_data['consecutive_mineless_blocks'] = None if response_data['gameover'] else gameboard.uncover_consecutive_mineless_area(row, col)

				if response_data['gameover']:
					request.session.pop( GAMEBOARD, None )
				else:
					request.session[GAMEBOARD] = gameboard.serialize()

				return HttpResponse(json.dumps(response_data), content_type="application/json; charset=utf8")
Example #2
0
def resume_game(request):
	response_data = {}
	gameboard = GameBoard.deserialize( request.session[GAMEBOARD] )
	selected_blocks = gameboard.get_selected_blocks()
	selection_data = []

	for block in selected_blocks:
		selection_data += gameboard.uncover_consecutive_mineless_area(block[0], block[1])
	
	response_data['selection_data'] = selection_data
	return HttpResponse(json.dumps(response_data), content_type="application/json; charset=utf8")
Example #3
0
def new_game(request):
	"""
	starts a new game by completing the tasks:

	1. Overwrite the previous session's game, if exists
	2. Set the expiration of the current session in 1 hour 
	"""

	if request.is_ajax():
		if request.method == 'POST':
			request.session.set_expiry(ONE_HOUR)
			json_data = json.loads( request.body )

			try:
				dim = json_data['dim']
				resume_game = json_data['resume_game']
			except KeyError:
				print "Error: The post request did not json parameters as expected"
				return
			else:
				if len(dim) is 2:
					try:
						gameboard = None
						if resume_game:
							gameboard = GameBoard.deserialize( request.session[GAMEBOARD] )
							dim = gameboard.dim
						else:
							gameboard = GameBoard(dim)
							request.session[GAMEBOARD] = gameboard.serialize()

					except TypeError:
						print "Error: The dimensions provided in the request were not of the expected type"
						return
					else:
						response_data = {}
						t = loader.get_template('minesweeper/gameboard.html')
						c = Context({'rows' : range(dim[0]), 'cols' : range(dim[1])})
						response_data['html_gameboard'] = t.render(c)
						response_data['dim'] = gameboard.dim

						return HttpResponse(json.dumps(response_data), content_type="application/json; charset=utf8")