1 Commits

Author SHA1 Message Date
82cc11b55a Draft 01/29/2024
Draft of the code as of the date described above.
2024-01-29 20:00:22 -05:00
4 changed files with 89 additions and 43 deletions

View File

@@ -41,10 +41,10 @@ impl Caster {
self.projection_plane.set_draw_color(Color::RGB(0, 0, 0));
self.projection_plane.clear();
self.projection_plane.filled_circle(
gamestate.player().x,
gamestate.player().y,
gamestate.player().position().x,
gamestate.player().position().y,
10,
gamestate.p_color,
gamestate.player().get_color().to_owned(),
)?;
self.projection_plane.present();

View File

@@ -1,15 +1,10 @@
use sdl2::pixels::Color;
use rand::prelude::*;
use crate::Point;
mod player;
use self::player::Player;
pub struct GameState {
player: Point,
pub p_dx: i16,
pub p_dy: i16,
pub p_rot: f32,
pub p_color: Color,
player: Player,
running: bool,
pub rng: ThreadRng,
}
@@ -19,66 +14,61 @@ impl GameState {
let mut new_rng = rand::thread_rng();
Self {
player: Point {
x: new_rng.gen_range(0..800),
y: new_rng.gen_range(0..600),
},
p_dx: new_rng.gen_range(1..=5),
p_dy: new_rng.gen_range(1..=5),
p_rot: 90.0,
p_color: Color::RGB(
new_rng.gen_range(0..=255),
new_rng.gen_range(0..=255),
new_rng.gen_range(0..=255),
),
player: Player::init(new_rng.gen_range(0..800), new_rng.gen_range(0..600), 0.0),
running: true,
rng: new_rng,
}
}
pub fn update(&mut self) {
self.player.x += self.p_dx;
self.player.set_position(
self.player.position().x + self.player.dx(),
self.player.position().y,
);
if self.player.x < 0 {
self.player.x = 0;
self.p_color = Color::RGB(
if self.player.position().x < 0 {
self.player.set_position(0, self.player.position().y);
self.player.set_color(
self.rng.gen_range(0..=255),
self.rng.gen_range(0..=255),
self.rng.gen_range(0..=255),
);
self.p_dx = self.rng.gen_range(1..=5);
} else if self.player.x > 800 {
self.player.x = 800;
self.p_color = Color::RGB(
self.player.set_dx(self.rng.gen_range(1..=5));
} else if self.player.position().x > 800 {
self.player.set_position(800, self.player.position().y);
self.player.set_color(
self.rng.gen_range(0..=255),
self.rng.gen_range(0..=255),
self.rng.gen_range(0..=255),
);
self.p_dx = self.rng.gen_range(-5..=-1);
self.player.set_dx(self.rng.gen_range(-5..=-1));
}
self.player.y += self.p_dy;
self.player.set_position(
self.player.position().x,
self.player.position().y + self.player.dy(),
);
if self.player.y < 0 {
self.player.y = 0;
self.p_color = Color::RGB(
if self.player.position().y < 0 {
self.player.set_position(self.player.position().x, 0);
self.player.set_color(
self.rng.gen_range(0..=255),
self.rng.gen_range(0..=255),
self.rng.gen_range(0..=255),
);
self.p_dy = self.rng.gen_range(1..=5);
} else if self.player.y > 600 {
self.player.y = 600;
self.p_color = Color::RGB(
self.player.set_dy(self.rng.gen_range(1..=5));
} else if self.player.position().y > 600 {
self.player.set_position(self.player.position().x, 600);
self.player.set_color(
self.rng.gen_range(0..=255),
self.rng.gen_range(0..=255),
self.rng.gen_range(0..=255),
);
self.p_dy = self.rng.gen_range(-5..=-1);
self.player.set_dy(self.rng.gen_range(-5..=-1));
}
}
pub fn player(&self) -> &Point {
pub fn player(&self) -> &Player {
&self.player
}

View File

@@ -0,0 +1,56 @@
use sdl2::pixels::Color;
use crate::Position;
pub struct Player {
pos: Position,
dx: i16,
dy: i16,
_rot: f32,
color: Color,
}
impl Player {
pub fn init(x_pos: i16, y_pos: i16, rotation: f32) -> Self {
Self {
pos: Position { x: x_pos, y: y_pos },
dx: 1,
dy: 1,
_rot: rotation,
color: Color::RGB(255, 0, 0),
}
}
pub fn position(&self) -> &Position {
&self.pos
}
pub fn get_color(&self) -> &Color {
&self.color
}
pub fn set_position(&mut self, new_x: i16, new_y: i16) {
self.pos.x = new_x;
self.pos.y = new_y;
}
pub fn set_color(&mut self, r: u8, g: u8, b: u8) {
self.color = Color::RGB(r, g, b);
}
pub fn set_dx(&mut self, new_dx: i16) {
self.dx = new_dx;
}
pub fn set_dy(&mut self, new_dy: i16) {
self.dy = new_dy;
}
pub fn dx(&self) -> i16 {
self.dx
}
pub fn dy(&self) -> i16 {
self.dy
}
}

View File

@@ -31,7 +31,7 @@ pub fn run() -> Result<(), Box<dyn Error>> {
Ok(())
}
struct Point {
struct Position {
x: i16,
y: i16,
}