diff --git a/fira.ttf b/fira.ttf new file mode 100644 index 0000000..948285b Binary files /dev/null and b/fira.ttf differ diff --git a/src/main.rs b/src/main.rs index 83a56b2..5f49d8c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,6 @@ -use cat_box::{get_keyboard_state, physics::check_for_collision, Game, Sprite}; -use sdl2::keyboard::Scancode; +use cat_box::{get_keyboard_state, physics::check_for_collision, Game, Sprite, draw_text, TextMode}; +use sdl2::keyboard::{Scancode/*,Keycode */}; +//use sdl2::event::Event; use std::time::Instant; mod ball; @@ -26,34 +27,45 @@ fn main() { let mut dir = Direction::Still; let mut dir_enemy = Direction::Still; + let mode = TextMode::Transparent { + colour: (255,255,255), + }; + let mut score_player = 0; + let mut score_enemy = 0; + let mut now = Instant::now(); game.run(|ctx| { ctx.set_background_colour(0, 0, 0); - + let (x_player, y_player) = paddle.position().into(); let (x_enemy, y_enemy) = paddle_enemy.position().into(); let (x_ball, y_ball) = ball.sprite.position().into(); + + if now.elapsed().as_millis() >= 1{ + let keys = get_keyboard_state(ctx).keys; + //let (_tex, _canvas, e) = ctx.inner(); - let keys = get_keyboard_state(ctx).keys; - for key in &keys { - match key { - Scancode::W | Scancode::Up => { - dir = Direction::Up; - held = true; - } - Scancode::S | Scancode::Down => { - dir = Direction::Down; - held = true; - } - _ => { - dir = Direction::Still; - held = false; - } - }; + for key in &keys { + match key { + Scancode::W | Scancode::Up => { + dir = Direction::Up; + held = true; + } + Scancode::S | Scancode::Down => { + dir = Direction::Down; + held = true; + } + _ => { + dir = Direction::Still; + held = false; + } + }; + + } } - + if y_enemy < y_ball { dir_enemy = Direction::Down; } @@ -63,22 +75,35 @@ fn main() { if now.elapsed().as_millis() >= 10 { //BALL - if check_for_collision(&paddle, &ball.sprite) { - ball.vel_y += (ball.vel_y * 1); - ball.vel_x *= -1; - ball.vel_y *= -1; + if check_for_collision(&paddle, &ball.sprite) && x_ball == 50{ + if ball.vel_y < i32::MAX - 1 + { + ball.vel_y += ball.vel_y * 1; + ball.vel_x *= -1; + ball.vel_y *= -1; + } } - if check_for_collision(&paddle_enemy, &ball.sprite) { - ball.vel_y += (ball.vel_y * 1); - ball.vel_x *= -1; - ball.vel_y *= -1; + if check_for_collision(&paddle_enemy, &ball.sprite) && x_ball == 449 { + if ball.vel_y < i32::MAX - 1 + { + ball.vel_y += ball.vel_y * 1; + ball.vel_x *= -1; + ball.vel_y *= -1; + } } if y_ball < 0 || y_ball > 500 { ball.vel_y *= -1; } - if x_ball < 0 || x_ball > 500 { + if x_ball < 0 + { + ball.sprite.set_position((250,250)); + ball::Ball::rand_angle(&mut ball); + score_enemy += 1; + } + else if x_ball > 500 { ball.sprite.set_position((250, 250)); ball::Ball::rand_angle(&mut ball); + score_player += 1; } ball.sprite.translate((ball.vel_x, ball.vel_y)); @@ -113,10 +138,10 @@ fn main() { if held { match dir { Direction::Up => { - paddle.translate((0, 2)); + paddle.translate((0, 3)); } Direction::Down => { - paddle.translate((0, -2)); + paddle.translate((0, -3)); } _ => (), }; @@ -124,9 +149,17 @@ fn main() { now = Instant::now(); } + draw_text(ctx, format!("{score_player}"), "fira.ttf", 50, (90, 100), mode).unwrap(); + draw_text(ctx, format!("{score_enemy}"), "fira.ttf", 50, (500-90, 100), mode).unwrap(); + + ball.sprite.draw(ctx).unwrap(); paddle.draw(ctx).unwrap(); paddle_enemy.draw(ctx).unwrap(); }) .unwrap(); } + +/* fn is_pressed(e: &sdl2::EventPump, k: Scancode) -> bool { + e.keyboard_state().is_scancode_pressed(k) +} */