we got jumping

This commit is contained in:
2014-12-10 20:40:07 +01:00
parent 4afcc799ec
commit 8d76577515

View File

@@ -3,7 +3,7 @@ extern crate sdl2;
use sdl2::video::{Window, WindowPos, OPENGL}; use sdl2::video::{Window, WindowPos, OPENGL};
use sdl2::event::{poll_event, Event}; use sdl2::event::{poll_event, Event};
use sdl2::timer::{get_ticks, delay}; use sdl2::timer::{get_ticks};
use sdl2::rect::{Rect}; use sdl2::rect::{Rect};
@@ -29,7 +29,13 @@ fn main() {
let mut player = Rect::new(0, 290, 10, 10); let mut player = Rect::new(0, 290, 10, 10);
let mut x : f32 = 390.0; let mut x : f32 = 390.0;
let mut y : f32 = 290.0;
let mut v_x : f32 = 0.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 current : uint = 0;
let mut elapsed : uint = 0; let mut elapsed : uint = 0;
@@ -49,9 +55,15 @@ fn main() {
if key == sdl2::keycode::KeyCode::Escape { if key == sdl2::keycode::KeyCode::Escape {
break 'event; break 'event;
} else if key == sdl2::keycode::KeyCode::Right { } else if key == sdl2::keycode::KeyCode::Right {
v_x = 1.0; v_x = 4.0;
} else if key == sdl2::keycode::KeyCode::Left { } 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, _, _, _) => { Event::KeyUp(_, _, key, _, _, _) => {
@@ -59,13 +71,27 @@ fn main() {
v_x = 0.0; v_x = 0.0;
} else if key == sdl2::keycode::KeyCode::Left { } else if key == sdl2::keycode::KeyCode::Left {
v_x = 0.0; 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 { while lag >= MS_PER_UPDATE {
v_y += gravity;
x += v_x; x += v_x;
y += v_y;
if y > 290.0 {
y = 290.0;
v_y = 0.0;
on_ground = true;
}
lag -= MS_PER_UPDATE; lag -= MS_PER_UPDATE;
} }
@@ -74,6 +100,7 @@ fn main() {
let _ = renderer.clear(); let _ = renderer.clear();
player.x = x as i32; player.x = x as i32;
player.y = y as i32;
let _ = renderer.set_draw_color(sdl2::pixels::Color::RGB(0, 255, 0)); let _ = renderer.set_draw_color(sdl2::pixels::Color::RGB(0, 255, 0));
let _ = renderer.fill_rect(&player); let _ = renderer.fill_rect(&player);