summaryrefslogtreecommitdiff
path: root/src/character.rs
blob: 2f2289f032590eddaf83e1f1ae53da46af460bb0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
extern crate rand;
use character::rand::Rng;

use location::Location;

pub struct Character{
    pub symbol : char,
    pub 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 action(&mut self, free_spaces : Vec<Location>){
        self.wander(free_spaces);
    }

    fn wander(&mut self, free_spaces : Vec<Location>){
        let direction = rand::thread_rng().gen_range(0,free_spaces.len());
        self.location = free_spaces[direction];
    }
}