Fix disallowed_direction logic and improved input responsiveness
This commit is contained in:
parent
5ac79ce0ce
commit
e7157f58c1
1 changed files with 34 additions and 23 deletions
|
|
@ -83,34 +83,45 @@ fn main() -> Result<(), anyhow::Error> {
|
||||||
let mut apple = random_tile();
|
let mut apple = random_tile();
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let pressed_keys = keyboard.scan_pressed_keys()?;
|
for _ in 0..10 {
|
||||||
dbg!(&pressed_keys);
|
let pressed_keys = keyboard.scan_pressed_keys()?;
|
||||||
for key in pressed_keys {
|
dbg!(&pressed_keys);
|
||||||
let new_direction = match key {
|
for key in pressed_keys {
|
||||||
cardputer_bsc::keyboard::KeyImprint::SemiColon => (0, -1),
|
let new_direction = match key {
|
||||||
cardputer_bsc::keyboard::KeyImprint::Comma => (-1, 0),
|
cardputer_bsc::keyboard::KeyImprint::SemiColon => (0, -1),
|
||||||
cardputer_bsc::keyboard::KeyImprint::Period => (0, 1),
|
cardputer_bsc::keyboard::KeyImprint::Comma => (-1, 0),
|
||||||
cardputer_bsc::keyboard::KeyImprint::Slash => (1, 0),
|
cardputer_bsc::keyboard::KeyImprint::Period => (0, 1),
|
||||||
_ => continue,
|
cardputer_bsc::keyboard::KeyImprint::Slash => (1, 0),
|
||||||
};
|
_ => continue,
|
||||||
match (snake_tiles.get(0), snake_tiles.get(1)) {
|
};
|
||||||
(Some(&first), Some(&second)) => {
|
match (snake_tiles.get(0), snake_tiles.get(1)) {
|
||||||
let disallowed_direction = (
|
(Some(&first), Some(&second)) => {
|
||||||
(second.0 - first.0).rem(GRID_WIDTH),
|
let mut disallowed_direction = (
|
||||||
(second.1 - first.1).rem(GRID_HEIGHT),
|
(second.0 - first.0).rem(GRID_WIDTH),
|
||||||
);
|
(second.1 - first.1).rem(GRID_HEIGHT),
|
||||||
dbg!(disallowed_direction);
|
);
|
||||||
if disallowed_direction != new_direction {
|
if disallowed_direction.0 == GRID_WIDTH - 1 {
|
||||||
|
disallowed_direction.0 = -1;
|
||||||
|
} else if disallowed_direction.0 == 1 - GRID_WIDTH {
|
||||||
|
disallowed_direction.0 = 1;
|
||||||
|
} else if disallowed_direction.1 == GRID_HEIGHT - 1 {
|
||||||
|
disallowed_direction.1 = -1;
|
||||||
|
} else if disallowed_direction.1 == 1 - GRID_HEIGHT {
|
||||||
|
disallowed_direction.1 = 1;
|
||||||
|
}
|
||||||
|
dbg!(disallowed_direction);
|
||||||
|
if disallowed_direction != new_direction {
|
||||||
|
direction = new_direction;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
direction = new_direction;
|
direction = new_direction;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => {
|
|
||||||
direction = new_direction;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
sleep(Duration::from_millis(200));
|
sleep(Duration::from_millis(20));
|
||||||
|
}
|
||||||
|
|
||||||
let front_file = *snake_tiles.get(0).unwrap();
|
let front_file = *snake_tiles.get(0).unwrap();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue