remove font, and create a player struct

This commit is contained in:
2014-12-10 21:32:23 +01:00
parent 1bc1b6a4c6
commit 36dc4e62cd
3 changed files with 38 additions and 40 deletions

9
Cargo.lock generated
View File

@@ -3,7 +3,6 @@ name = "smb"
version = "0.0.1" version = "0.0.1"
dependencies = [ dependencies = [
"sdl2 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)", "sdl2 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
"sdl2_ttf 0.0.3 (git+https://github.com/andelf/rust-sdl2_ttf)",
] ]
[[package]] [[package]]
@@ -11,11 +10,3 @@ name = "sdl2"
version = "0.0.7" version = "0.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
[[package]]
name = "sdl2_ttf"
version = "0.0.3"
source = "git+https://github.com/andelf/rust-sdl2_ttf#614fdbed9f07208d280a41abf02cc91a401d6cb5"
dependencies = [
"sdl2 0.0.7 (registry+https://github.com/rust-lang/crates.io-index)",
]

View File

@@ -6,7 +6,3 @@ authors = ["logaritmisk <anders.e.olsson@gmail.com>"]
[dependencies] [dependencies]
sdl2 = "0.0.7" sdl2 = "0.0.7"
[dependencies.sdl2_ttf]
git = "https://github.com/andelf/rust-sdl2_ttf"

View File

@@ -13,6 +13,27 @@ const SCREEN_HEIGHT : int = 600;
const MS_PER_UPDATE : uint = 10; const MS_PER_UPDATE : uint = 10;
struct Player {
x: f32,
y: f32,
vel_x: f32,
vel_y: f32,
}
impl Player {
fn new(x: f32, y: f32) -> Player {
Player { x: x, y: y, vel_x: 0.0, vel_y: 0.0 }
}
pub fn render(&self, renderer: &sdl2::render::Renderer) {
let player = Rect::new(self.x as i32, self.y as i32, 10, 10);
let _ = renderer.set_draw_color(sdl2::pixels::Color::RGB(0, 255, 0));
let _ = renderer.fill_rect(&player);
}
}
fn main() { fn main() {
sdl2::init(sdl2::INIT_EVERYTHING); sdl2::init(sdl2::INIT_EVERYTHING);
@@ -26,13 +47,7 @@ fn main() {
Err(err) => panic!("failed to create renderer: {}", err) Err(err) => panic!("failed to create renderer: {}", err)
}; };
let mut player = Rect::new(0, 290, 10, 10); let mut player = Player::new(390.0, 290.0);
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 on_ground = true;
let mut gravity : f32 = 0.3; let mut gravity : f32 = 0.3;
@@ -55,12 +70,12 @@ 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 = 4.0; player.vel_x = 4.0;
} else if key == sdl2::keycode::KeyCode::Left { } else if key == sdl2::keycode::KeyCode::Left {
v_x = -4.0; player.vel_x = -4.0;
} else if key == sdl2::keycode::KeyCode::Up { } else if key == sdl2::keycode::KeyCode::Up {
if on_ground { if on_ground {
v_y = -8.0; player.vel_y = -8.0;
on_ground = false; on_ground = false;
} }
@@ -68,12 +83,12 @@ fn main() {
}, },
Event::KeyUp(_, _, key, _, _, _) => { Event::KeyUp(_, _, key, _, _, _) => {
if key == sdl2::keycode::KeyCode::Right { if key == sdl2::keycode::KeyCode::Right {
v_x = 0.0; player.vel_x = 0.0;
} else if key == sdl2::keycode::KeyCode::Left { } else if key == sdl2::keycode::KeyCode::Left {
v_x = 0.0; player.vel_x = 0.0;
} else if key == sdl2::keycode::KeyCode::Up { } else if key == sdl2::keycode::KeyCode::Up {
if v_y < -4.0 { if player.vel_y < -4.0 {
v_y = -4.0; player.vel_y = -4.0;
} }
} }
}, },
@@ -81,14 +96,14 @@ fn main() {
} }
while lag >= MS_PER_UPDATE { while lag >= MS_PER_UPDATE {
v_y += gravity; player.vel_y += gravity;
x += v_x; player.x += player.vel_x;
y += v_y; player.y += player.vel_y;
if y > 290.0 { if player.y > 290.0 {
y = 290.0; player.y = 290.0;
v_y = 0.0; player.vel_y = 0.0;
on_ground = true; on_ground = true;
} }
@@ -99,11 +114,7 @@ fn main() {
let _ = renderer.set_draw_color(sdl2::pixels::Color::RGB(0, 0, 0)); let _ = renderer.set_draw_color(sdl2::pixels::Color::RGB(0, 0, 0));
let _ = renderer.clear(); let _ = renderer.clear();
player.x = x as i32; player.render(&renderer);
player.y = y as i32;
let _ = renderer.set_draw_color(sdl2::pixels::Color::RGB(0, 255, 0));
let _ = renderer.fill_rect(&player);
renderer.present(); renderer.present();
} }