update to sdl2 0.0.8, and move code to modules

This commit is contained in:
2014-12-13 16:32:13 +01:00
parent f950e01002
commit 0176bb2987
5 changed files with 79 additions and 58 deletions

6
Cargo.lock generated
View File

@@ -1,12 +1,12 @@
[root] [root]
name = "smb" name = "super-matte-bros"
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.8 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
name = "sdl2" name = "sdl2"
version = "0.0.7" version = "0.0.8"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"

View File

@@ -1,8 +1,10 @@
[package] [package]
name = "smb" name = "super-matte-bros"
version = "0.0.1" version = "0.0.1"
authors = ["logaritmisk <anders.e.olsson@gmail.com>"] authors = ["logaritmisk <anders.e.olsson@gmail.com>"]
[dependencies] [dependencies]
sdl2 = "0.0.7" sdl2 = "0.0.8"
[[bin]]
name = "super-matte-bros"

View File

@@ -1,10 +1,15 @@
extern crate sdl2; 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}; use sdl2::timer::get_ticks;
use sdl2::rect::{Rect}; use sdl2::rect::Rect;
use sdl2::keycode::KeyCode;
use sdl2::pixels::Color;
mod vec;
mod player;
const SCREEN_WIDTH : int = 800; const SCREEN_WIDTH : int = 800;
@@ -13,35 +18,6 @@ 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,
gravity: f32,
}
impl Player {
fn new(x: f32, y: f32) -> Player {
Player { x: x, y: y, vel_x: 0.0, vel_y: 0.0, gravity: 0.3 }
}
pub fn update(&mut self) {
self.vel_y += self.gravity;
self.x += self.vel_x;
self.y += self.vel_y;
}
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);
@@ -55,10 +31,11 @@ fn main() {
Err(err) => panic!("failed to create renderer: {}", err) Err(err) => panic!("failed to create renderer: {}", err)
}; };
let mut player = Player::new(390.0, 390.0); let mut player = player::Player::new(390.0, 390.0);
let mut on_ground = true; let mut on_ground = true;
let ground = Rect::new(0, 400, SCREEN_WIDTH as i32, 5);
let mut current : uint; let mut current : uint;
let mut elapsed : uint; let mut elapsed : uint;
let mut previous : uint = get_ticks(); let mut previous : uint = get_ticks();
@@ -73,28 +50,28 @@ fn main() {
match poll_event() { match poll_event() {
Event::Quit(_) => break, Event::Quit(_) => break,
Event::KeyDown(_, _, key, _, _, _) => { Event::KeyDown(_, _, key, _, _, _) => {
if key == sdl2::keycode::KeyCode::Escape { if key == KeyCode::Escape {
break; break;
} else if key == sdl2::keycode::KeyCode::Right { } else if key == KeyCode::Right {
player.vel_x = 4.0; player.velocity.x = 4.0;
} else if key == sdl2::keycode::KeyCode::Left { } else if key == KeyCode::Left {
player.vel_x = -4.0; player.velocity.x = -4.0;
} else if key == sdl2::keycode::KeyCode::Up { } else if key == KeyCode::Up {
if on_ground { if on_ground {
player.vel_y = -8.0; player.velocity.y = -8.0;
on_ground = false; on_ground = false;
} }
} }
}, },
Event::KeyUp(_, _, key, _, _, _) => { Event::KeyUp(_, _, key, _, _, _) => {
if key == sdl2::keycode::KeyCode::Right { if key == KeyCode::Right {
player.vel_x = 0.0; player.velocity.x = 0.0;
} else if key == sdl2::keycode::KeyCode::Left { } else if key == KeyCode::Left {
player.vel_x = 0.0; player.velocity.x = 0.0;
} else if key == sdl2::keycode::KeyCode::Up { } else if key == KeyCode::Up {
if player.vel_y < -4.0 { if player.velocity.y < -4.0 {
player.vel_y = -4.0; player.velocity.y = -4.0;
} }
} }
}, },
@@ -104,9 +81,9 @@ fn main() {
while lag >= MS_PER_UPDATE { while lag >= MS_PER_UPDATE {
player.update(); player.update();
if player.y > 390.0 { if player.position.y >= 390.0 {
player.y = 390.0; player.position.y = 390.0;
player.vel_y = 0.0; player.velocity.y = 0.0;
on_ground = true; on_ground = true;
} }
@@ -114,9 +91,12 @@ fn main() {
lag -= MS_PER_UPDATE; lag -= MS_PER_UPDATE;
} }
let _ = renderer.set_draw_color(sdl2::pixels::Color::RGB(0, 0, 0)); let _ = renderer.set_draw_color(Color::RGB(0, 0, 0));
let _ = renderer.clear(); let _ = renderer.clear();
let _ = renderer.set_draw_color(Color::RGB(0, 0, 255));
let _ = renderer.fill_rect(&ground);
player.render(&renderer); player.render(&renderer);
renderer.present(); renderer.present();

35
src/player.rs Normal file
View File

@@ -0,0 +1,35 @@
extern crate sdl2;
use sdl2::render::Renderer;
use sdl2::pixels::Color;
use sdl2::rect::Rect;
use vec;
pub struct Player {
pub position: vec::Vec2,
pub velocity: vec::Vec2,
pub gravity: f32,
}
impl Player {
pub fn new(x: f32, y: f32) -> Player {
Player { position: vec::Vec2 { x: x, y: y }, velocity: vec::Vec2 { x: 0.0, y: 0.0 }, gravity: 0.3 }
}
pub fn update(&mut self) {
self.velocity.y += self.gravity;
self.position.x += self.velocity.x;
self.position.y += self.velocity.y;
}
pub fn render(&self, renderer: &Renderer) {
let player = Rect::new(self.position.x as i32, self.position.y as i32, 10, 10);
let _ = renderer.set_draw_color(Color::RGB(0, 255, 0));
let _ = renderer.fill_rect(&player);
}
}

4
src/vec.rs Normal file
View File

@@ -0,0 +1,4 @@
pub struct Vec2 {
pub x: f32,
pub y: f32,
}