def start_puzzle(self): while(not self.solved): while(True): response_code = self.code for i, l in enumerate(self.lines): clear() put_text(self.lesson) print_code(response_code, "\nThe code currently is:") resp = int(get_text('Place the line \'%s\': ' % l)) response_code = self.process_input(resp, l, response_code) threads = self.translator(response_code) simulator = Simulator(threads, self.predicate, self.semaphores, self.poll_rate) success, message = simulator.run_sim() simulator.visualize() if success: put_text('Simulator test Passed!') else: put_text('Simulator test Failed!') put_text(message) get_text('Check against the real answer? (y/n)') clear() put_text(self.lesson) print_code(response_code, "\nThe code currently is:") if(response_code == self.answer): put_text("Congratulations! That's correct. Good job!\n") break else: get_text("Woops! That's incorrect. Try again? (y/n)\n") self.solved = True