Fix: Better wpm formula
This commit is contained in:
parent
718b4c49ff
commit
a67efb0d84
1 changed files with 3 additions and 11 deletions
14
src/typer.rs
14
src/typer.rs
|
@ -13,7 +13,6 @@ pub struct Typer {
|
|||
should_display_result: bool,
|
||||
words_to_write: WordList,
|
||||
chars_written: Vec<char>,
|
||||
current_num_of_words: u16,
|
||||
wpm: u16,
|
||||
errors: u16,
|
||||
start_timestamp: Option<SystemTime>,
|
||||
|
@ -27,7 +26,6 @@ impl Typer {
|
|||
should_display_result: false,
|
||||
words_to_write: WordList::new(50),
|
||||
chars_written: Vec::new() as Vec<char>,
|
||||
current_num_of_words: 0,
|
||||
wpm: 0,
|
||||
errors: 0,
|
||||
start_timestamp: None
|
||||
|
@ -60,9 +58,7 @@ impl Typer {
|
|||
self.should_quit = true;
|
||||
}
|
||||
Backspace => {
|
||||
if self.chars_written.pop().unwrap() == ' ' && self.current_num_of_words > 0 {
|
||||
self.current_num_of_words -= 1;
|
||||
}
|
||||
_ = self.chars_written.pop();
|
||||
}
|
||||
_ => {
|
||||
if code.as_char().is_some() {
|
||||
|
@ -79,16 +75,12 @@ impl Typer {
|
|||
self.errors += 1;
|
||||
}
|
||||
|
||||
// Increase the number of written words on space.
|
||||
if c == ' ' {
|
||||
self.current_num_of_words += 1;
|
||||
}
|
||||
|
||||
// Update WPM
|
||||
match self.start_timestamp.unwrap().elapsed() {
|
||||
Ok(elapsed) => {
|
||||
if elapsed.as_secs() != 0 {
|
||||
self.wpm = (f32::from(self.current_num_of_words) / (elapsed.as_secs() as f32 / 60_f32)) as u16;
|
||||
// WPM formula = (chars / 5) / mins, According to reddit https://www.reddit.com/r/typing/comments/1h014p7/comment/lz0rsl2/
|
||||
self.wpm = ((self.chars_written.len() as f32 / 5_f32) / (elapsed.as_secs() as f32 / 60_f32)) as u16;
|
||||
}
|
||||
}
|
||||
Err(_e) => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue