From 8d76577515d92596a469ced3b08934ae4fe905cd Mon Sep 17 00:00:00 2001 From: logaritmisk Date: Wed, 10 Dec 2014 20:40:07 +0100 Subject: [PATCH] we got jumping --- src/main.rs | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/src/main.rs b/src/main.rs index d995120..f8bc075 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,7 @@ extern crate sdl2; use sdl2::video::{Window, WindowPos, OPENGL}; use sdl2::event::{poll_event, Event}; -use sdl2::timer::{get_ticks, delay}; +use sdl2::timer::{get_ticks}; use sdl2::rect::{Rect}; @@ -27,9 +27,15 @@ fn main() { }; let mut player = Rect::new(0, 290, 10, 10); - + let mut x : f32 = 390.0; + let mut y : f32 = 290.0; + let mut v_x : f32 = 0.0; + let mut v_y : f32 = 0.0; + + let mut on_ground = true; + let mut gravity : f32 = 0.3; let mut current : uint = 0; let mut elapsed : uint = 0; @@ -49,9 +55,15 @@ fn main() { if key == sdl2::keycode::KeyCode::Escape { break 'event; } else if key == sdl2::keycode::KeyCode::Right { - v_x = 1.0; + v_x = 4.0; } else if key == sdl2::keycode::KeyCode::Left { - v_x = -1.0; + v_x = -4.0; + } else if key == sdl2::keycode::KeyCode::Up { + if on_ground { + v_y = -8.0; + + on_ground = false; + } } }, Event::KeyUp(_, _, key, _, _, _) => { @@ -59,13 +71,27 @@ fn main() { v_x = 0.0; } else if key == sdl2::keycode::KeyCode::Left { v_x = 0.0; + } else if key == sdl2::keycode::KeyCode::Up { + if v_y < -4.0 { + v_y = -4.0; + } } }, _ => (), } while lag >= MS_PER_UPDATE { + v_y += gravity; + x += v_x; + y += v_y; + + if y > 290.0 { + y = 290.0; + v_y = 0.0; + + on_ground = true; + } lag -= MS_PER_UPDATE; } @@ -74,6 +100,7 @@ fn main() { let _ = renderer.clear(); player.x = x as i32; + player.y = y as i32; let _ = renderer.set_draw_color(sdl2::pixels::Color::RGB(0, 255, 0)); let _ = renderer.fill_rect(&player);