summaryrefslogtreecommitdiff
path: root/src/character.rs
diff options
context:
space:
mode:
authorTom Barrett <tombarrett@siu.edu>2017-10-23 11:57:59 -0500
committerTom Barrett <tombarrett@siu.edu>2017-10-23 11:57:59 -0500
commit1e77601579065df48a9b1d9daa9dba46522842ca (patch)
treeb6ad932cd3fb9c838c85b6c918c16769f00d7139 /src/character.rs
-decent starting point, but centering does not seem to be working
Diffstat (limited to 'src/character.rs')
-rw-r--r--src/character.rs55
1 files changed, 55 insertions, 0 deletions
diff --git a/src/character.rs b/src/character.rs
new file mode 100644
index 0000000..7d5e951
--- /dev/null
+++ b/src/character.rs
@@ -0,0 +1,55 @@
+extern crate pancurses;
+use pancurses::ColorPair;
+
+extern crate rand;
+use character::rand::Rng;
+
+use location::Location;
+
+pub struct Character{
+ symbol : char,
+ color : u8,
+ pub location : Location,
+}
+
+impl Copy for Character {}
+impl Clone for Character {
+ fn clone(&self) -> Character {
+ *self
+ }
+}
+
+impl Character {
+ pub fn new(symbol : char, color : u8, location : Location) -> Character {
+ Character {
+ symbol : symbol,
+ color : color,
+ location : location,
+ }
+ }
+
+ pub fn draw(self, window : &pancurses::Window) {
+ window.attron(ColorPair(self.color));
+ window.mvaddch(self.location.x, self.location.y, self.symbol);
+ }
+
+ pub fn action(self, men : Vec<Character>, impassable : Vec<Location>){
+ self.wander(men, impassable);
+ }
+
+ fn wander(mut self, men : Vec<Character>, impassable : Vec<Location>){
+ let direction = rand::thread_rng().gen_range(0,9);
+ let mut desired_location = self.location;
+ if direction == 0 {
+ desired_location.x = desired_location.x+1;
+ }
+
+ if self.free_space(desired_location, men, impassable) {
+ self.location = desired_location;
+ }
+ }
+
+ fn free_space(self, location : Location, men : Vec<Character>, impassable : Vec<Location>) -> bool {
+ true
+ }
+}