Ejemplo n.º 1
0
class GameController:
	def __init__(self):
		self.message = ''
		self.game_model = GameModel()
		self.winner_check = 0

	def start_game(self):
		self.get_updated_vars()
		return {
				 'previous_player':self.previous_player,
				 'current_player': self.current_player,
				 'current_game_state':self.current_game_state,
				 'message':self.message,
				 'available_columns':self.available_columns
			}

	def player_move(self,move):
		self.col = move
		self.row = self.game_model.get_column_capacity(self.col)
		self.update_vars()
		self.get_updated_vars()
		if self.winner_check:
			is_a_winning_move = pattern_finder(
											self.game_model.get_current_game_state(),
			 							  	self.row,self.col,self.game_model.get_sequence_length()
										 )
			if is_a_winning_move:
				self.message = self.game_model.get_winning_message()
			elif self.game_model.is_game_over():
				self.message = self.game_model.get_tie_message()
		return {
				 'previous_player':self.previous_player,
				 'current_player': self.current_player,
				 'row':self.row,
				 'col':self.col,
				 'message':self.message,
				 'available_columns':self.available_columns,
				 'number_of_moves':self.number_of_moves
		}

	def update_vars(self):
		self.game_model.update_game_state(self.row,self.col)
		if self.game_model.get_column_capacity(self.col) <= 0:
			self.game_model.update_available_colums(self.col)
		self.game_model.update_column_capacity(self.col)
		self.game_model.update_game_state(self.row,self.col)
		self.game_model.update_number_of_moves()
		self.game_model.update_current_player()
		self.check_for_winner()

	def get_updated_vars(self):
		self.previous_player = self.game_model.get_previous_player()
		self.current_player = self.game_model.get_current_player()
		self.current_game_state = self.game_model.get_current_game_state()
		self.number_of_moves = self.game_model.get_number_of_moves()
		self.available_columns = self.game_model.get_available_columns()

	def check_for_winner(self):
		if self.game_model.get_number_of_moves() >= (self.game_model.get_number_of_players()\
			*self.game_model.get_sequence_length()) - self.game_model.get_number_of_players() +1 :
			self.winner_check = 1