diff --git a/falling.rs b/falling.rs index 12d4a27..5f97062 100644 --- a/falling.rs +++ b/falling.rs @@ -1,8 +1,8 @@ use rand::Rng; -use std::io::{stdin,stdout,Write}; use console::Term; +//use termsize::get; -fn output_levels(starting_level: u64, ending_level: u64, character_x_coord: u8, character_icon: char, levels: &Vec>) { +fn output_levels(starting_level: u64, ending_level: u64, character_x_coord: u16, character_icon: char, levels: &Vec>) { print!("{}[2J", 27 as char); for i in starting_level..ending_level { for j in 0..levels[i as usize].len() { @@ -17,7 +17,7 @@ fn output_levels(starting_level: u64, ending_level: u64, character_x_coord: u8, println!(" {}",i); } } -fn generate_level(level_to_generate: u64, difficulty: u8, left_wall: &mut i8, right_wall: &mut i8, screen_width: u8, levels: &mut Vec>) { +fn generate_level(level_to_generate: u64, difficulty: u8, left_wall: &mut i8, right_wall: &mut i8, screen_width: u16, levels: &mut Vec>) { let mut new_level: Vec = Vec::new(); let left_wall_change = rand::thread_rng().gen_range(-1..2); @@ -33,7 +33,6 @@ fn generate_level(level_to_generate: u64, difficulty: u8, left_wall: &mut i8, ri } //println!("lw: {}, rw: {}", left_wall, right_wall); if (*right_wall-*left_wall).abs() < 8 { - println!("VERY CLOSE"); *left_wall-=2; *right_wall+=2; } @@ -46,7 +45,7 @@ fn generate_level(level_to_generate: u64, difficulty: u8, left_wall: &mut i8, ri } for i in *left_wall+1..*right_wall-1 { - let mut rng = rand::thread_rng(); + let rng = rand::thread_rng(); let object: u8 = rand::thread_rng().gen_range(3..difficulty); new_level[i as usize] = object; } @@ -75,20 +74,7 @@ fn generate_level(level_to_generate: u64, difficulty: u8, left_wall: &mut i8, ri levels.push(new_level); } -fn input() -> String{ - let mut s=String::new(); - let _=stdout().flush(); - stdin().read_line(&mut s).expect("Did not enter a correct string"); - if let Some('\n')=s.chars().next_back() { - s.pop(); - } - if let Some('\r')=s.chars().next_back() { - s.pop(); - } - return s; -} fn check_if_alive(levels: &Vec>, level: usize, x_coord: usize) -> bool { - println!("{}",levels[level][x_coord]); if levels[level][x_coord] == 0 || levels[level][x_coord] == 1 || levels[level][x_coord] == 2 || levels[level][x_coord] == 3 { println!("GAME OVER"); return false; @@ -98,17 +84,20 @@ fn check_if_alive(levels: &Vec>, level: usize, x_coord: usize) -> bool { } } -fn main() { +pub fn main() { let mut levels: Vec> = Vec::new(); - - let screen_height: u8 = 70; - let screen_width: u8 = 100; - let difficulty: u8 = 10; + + let (screen_width, screen_height) = termion::terminal_size().unwrap(); + + println!("width: {}, height: {}",screen_width, screen_height); + //let screen_height: u8 = 70; + //let screen_width: u8 = 100; + let difficulty: u8 = 15; let stdout = Term::buffered_stdout(); let mut current_level: u64 = 0; let character_icon: char = 'ยต'; - let mut x_coord: u8 = (screen_width as f32/ 2.0) as u8; // Distance from left wall + let mut x_coord: u16 = (screen_width as f32/ 2.0) as u16; // Distance from left wall let mut left_wall: i8 = (screen_width as f32/ 4.0) as i8; let mut right_wall: i8 = ((screen_width as f32 * 3.0)/ 4.0) as i8; let mut alive: bool = true; @@ -124,7 +113,7 @@ fn main() { 'd' => if x_coord < screen_width-1 { x_coord += 1 }, 'a' => if x_coord > 1 { x_coord -= 1 }, 'q' => break 'game_loop, - _ => (), + _ => continue 'game_loop, } } current_level+=1; diff --git a/falling.toml b/falling.toml new file mode 100644 index 0000000..d2925dc --- /dev/null +++ b/falling.toml @@ -0,0 +1,9 @@ +[package] +name = "falling" +version = "0.1.0" +edition = "2024" + +[dependencies] +rand = "0.8.5" +console = "0.15.10" +termion = "4.0.3"