class ConsolePresentation: def __init__(self, puzzle): self.sudoku_game = puzzle self.new_tool = Tools() self.matrix = self.new_tool.convert_str_to_matrix(self.sudoku_game, 9, 9) self.new_menus = Menus() self.new_configuration = Configuration() self.new_sudoku_play = SudokuPlay() self.path_of_file = os.getcwd() + "\\configurations\\" self.matrix_play = self.matrix self.row = 0 self.column = 0 self.value = 0 self.algorithm = "" self.difficulty = "" self.solved_out_put = "" def read_xml(self, file_name): """ It receives an xml file and return root, it has the xml file data """ try: self.tree = xmltree.parse(self.path_of_file + file_name) except: self.tree = xmltree.parse(self.path_of_file+self.name_of_file) self.root = self.tree.getroot() return self.root def get_difficulty_levels(self, root): """ This method we did because we start writing code instead write a unit TC before; so this is an example of what we should not do it. """ list_tmp = "" matrix = [] for levels in root.iter('level'): xml_read = levels.attrib id_xml = xml_read['id'] name_xml = xml_read['name'] min_xml = xml_read['min'] max_xml = xml_read['max'] list_tmp = id_xml, name_xml, min_xml, max_xml matrix.append(list_tmp) return matrix def start_end_menus(self, menu): os.system('cls') self.new_tool.display_board(self.matrix) if menu == "main": self.new_menus.print_main_menu() elif menu == "game": self.new_menus.print_sub_menu_game() elif menu == "play": self.new_menus.print_sub_menu_play() elif menu == "read": self.new_menus.print_sub_menu_read() elif menu == "save": self.new_menus.print_sub_menu_save() elif menu == "options": self.new_menus.print_sub_menu_options() elif menu == "algorithm": self.new_menus.print_sub_menu_algorithm() elif menu == "difficulty": self.new_menus.print_list_difficulty() self.new_menus.print_sub_menu_difficulty() elif menu == "solved_out_put": self.new_menus.print_sub_menu_solved_out_put() elif menu == "edit": self.new_menus.print_sub_menu_edit() if menu == 'play': return raw_input("make your play: ") else: return raw_input("choose: ") def count_zeros(self, matrix): rows = len(matrix) columns = len(matrix[0]) cont_zeros = 0 for row in range(rows): for col in range(columns): if matrix[row][col] == 0: cont_zeros += 1 return cont_zeros def verify_game_completed(self, game_matrix): if self.count_zeros(game_matrix) == 0: return True else: return False def print_main_menu(self, puzzle): read_key = self.start_end_menus("main") while read_key != "X": if read_key == "p": self.new_sudoku_play.play_the_game(puzzle) elif read_key == "o": self.print_sub_menu_options() elif read_key == "x": print "" print "!!! Game Over !!!, ", print "you press key %s..." %(read_key) break else: read_key = raw_input("choose another option.") read_key = self.start_end_menus("main") def print_sub_menu_game(self): read_key = self.start_end_menus("game") while read_key != "B": if read_key == "p": self.play_the_game() elif read_key == "g": print "you press key %s" %(read_key) elif read_key == "l": print "You press key %s" % read_key elif read_key == "r": self.print_sub_menu_read() elif read_key == "s": self.print_sub_menu_save() elif read_key == "t": print "you press key %s" %(read_key) elif read_key == "b": break else: read_key = raw_input("choose another option.") read_key = self.start_end_menus("game") def print_sub_menu_read(self): read_key = self.start_end_menus("read") while read_key != "B": if read_key == "t": print "you press key %s" %(read_key) elif read_key == "v": print "you press key %s" %(read_key) elif read_key == "c": print "you press key %s" %(read_key) elif read_key == "b": break else: read_key = raw_input("choose another option.") read_key = self.start_end_menus("read") def print_sub_menu_save(self): read_key = self.start_end_menus("save") while read_key != "B": if read_key == "t": print "You press key %s" % read_key elif read_key == "c": print "you press key %s" %(read_key) elif read_key == "h": print "You press key %s" % read_key elif read_key == "b": break else: read_key = raw_input("choose another option.") read_key = self.start_end_menus("save") def print_sub_menu_options(self): read_key = self.start_end_menus("options") while read_key != "B": if read_key == "a": self.print_sub_menu_algorithm() elif read_key == "d": self.print_sub_menu_difficulty() elif read_key == "v": self.print_sub_menu_solved_out_put() elif read_key == "b": break else: read_key = raw_input("choose another option.") read_key = self.start_end_menus("options") def print_sub_menu_algorithm(self): read_key = self.start_end_menus("algorithm") while read_key != "B": if read_key == "k": self.algorithm = "backtracking" self.new_configuration.modify_value_in_xml(self.algorithm,"algorithm") raw_input ("you chose " +self.algorithm + " Algorithm") break elif read_key == "n": self.algorithm = "peternorvig" self.new_configuration.modify_value_in_xml(self.algorithm,"algorithm") raw_input ("you chose " + "Peter Norvig" + " Algorithm") break elif read_key == "i": self.algorithm = "recursive" self.new_configuration.modify_value_in_xml(self.algorithm,"algorithm") raw_input ("you chose " +self.algorithm + " Algorithm") break elif read_key == "b": break else: read_key = raw_input("choose another option.") read_key = self.start_end_menus("algorithm") def print_sub_menu_difficulty(self): read_key = self.start_end_menus("difficulty") difficulty_matrix = self.new_menus.get_difficulty_matrix() while read_key != "B": if read_key == "e": self.print_sub_menu_edit() try: if read_key == "e": self.print_sub_menu_edit() elif read_key == "0": self.difficulty = difficulty_matrix[0][1] self.new_configuration.modify_value_in_xml(self.difficulty,"difficulty") raw_input ("You chose " + self.difficulty + " as difficulty level") break elif read_key == "1": self.difficulty = difficulty_matrix[1][1] self.new_configuration.modify_value_in_xml(self.difficulty,"difficulty") raw_input ("You chose "+ self.difficulty + " as difficulty level") break elif read_key == "2": self.difficulty = difficulty_matrix[2][1] self.new_configuration.modify_value_in_xml(self.difficulty,"difficulty") raw_input ("You chose "+ self.difficulty + " as difficulty level") break elif read_key == "3": self.difficulty = difficulty_matrix[3][1] self.new_configuration.modify_value_in_xml(self.difficulty,"difficulty") raw_input ("You chose "+ self.difficulty + " as difficulty level") break elif read_key == "4": self.difficulty = difficulty_matrix[4][1] self.new_configuration.modify_value_in_xml(self.difficulty,"difficulty") raw_input ("You chose "+ self.difficulty + " as difficulty level") break elif read_key == "5": self.difficulty = difficulty_matrix[5][1] self.new_configuration.modify_value_in_xml(self.difficulty,"difficulty") raw_input ("You chose "+ self.difficulty + " as difficulty level") break elif read_key == "b": break else: read_key = raw_input("choose another option.") except: raw_input("Choose another option") read_key = self.start_end_menus("difficulty") def print_sub_menu_solved_out_put(self): read_key = self.start_end_menus("solved_out_put") difficulty_matrix = self.new_menus.get_difficulty_matrix() while read_key != "B": if read_key == "e": self.print_sub_menu_edit() try: if read_key == "t": self.solved_out_put = "txt" self.new_configuration.modify_value_in_xml(self.solved_out_put,"solver_output_type") raw_input ("You chose " + self.solved_out_put + " as solver output type") break elif read_key == "c": self.solved_out_put = "csv" self.new_configuration.modify_value_in_xml(self.solved_out_put,"solver_output_type") raw_input ("You chose "+ self.solved_out_put + " as solver output type") break elif read_key == "h": self.solved_out_put = "html" self.new_configuration.modify_value_in_xml(self.solved_out_put,"solver_output_type") raw_input ("You chose "+ self.solved_out_put + " as solver output type ") break elif read_key == "b": break else: read_key = raw_input("choose another option.") except: raw_input("Choose another option") read_key = self.start_end_menus("difficulty") def print_sub_menu_edit(self): read_key = self.start_end_menus("edit") while read_key != "B": if read_key == "n": print "You press key %s" % read_key elif read_key == "c": print "you press key %s" %(read_key) elif read_key == "b": break else: read_key = raw_input("choose another option.") read_key = self.start_end_menus("edit") def run_app(self, puzzle): self.print_main_menu(puzzle)