we got jumping
This commit is contained in:
35
src/main.rs
35
src/main.rs
@@ -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};
|
||||||
|
|
||||||
|
|
||||||
@@ -27,9 +27,15 @@ 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);
|
||||||
|
|||||||
Reference in New Issue
Block a user