def main_replay(replay_file, force_perfect, overwrite, instant_death, target_wpm): """Run main curses loop with a replay. Parameters ---------- force_perfect : bool If True, then one cannot finish typing before all characters are typed without any mistakes. overwrite : bool If True, the replay file will be overwritten in case we are faster than it. replay_file : str or pathlib.Path Typed text in this file from some previous game. instant_death : bool If active, the first mistake will end the game. target_wpm : None or int The desired speed to be shown as guide. """ replay_file = pathlib.Path(replay_file) replay_tt = TypedText.load(replay_file) tt = curses.wrapper( run_loop, replay_tt.text, force_perfect=force_perfect, replay_tt=replay_tt, instant_death=instant_death, target_wpm=target_wpm, ) wpm_replay = replay_tt.compute_wpm() wpm_new = tt.compute_wpm() with print_section(" Statistics ", fill_char="=", add_ts=False): print(f"Old WPM: {wpm_replay:.1f}\nNew WPM: {wpm_new:.1f}") if wpm_new > wpm_replay: print("Congratulations!") if overwrite: print("Updating the checkpoint file") tt.save(replay_file) else: print("You lost!")
def test_save_and_load(self, tmpdir): path_dir = pathlib.Path(str(tmpdir)) path_file = path_dir / "cool.rlt" tt = TypedText("Hello") # finish typing tt.type_character(0, "H") tt.type_character(1, "w") tt.type_character(1) tt.type_character(1, "e") tt.type_character(2, "l") tt.type_character(3, "l") tt.save(path_file) assert tt == TypedText.load(path_file)