update to sdl2 0.0.8, and move code to modules
This commit is contained in:
6
Cargo.lock
generated
6
Cargo.lock
generated
@@ -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"
|
||||||
|
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|||||||
84
src/main.rs
84
src/main.rs
@@ -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
35
src/player.rs
Normal 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
4
src/vec.rs
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
pub struct Vec2 {
|
||||||
|
pub x: f32,
|
||||||
|
pub y: f32,
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user