|
|
@ -1,8 +1,8 @@ |
|
|
|
use antf::lib::screen::init_screen; |
|
|
|
use antf::lib::screen::{Screen, init_screen}; |
|
|
|
use antf::lib::point::Point; |
|
|
|
use antf::lib::point::Point; |
|
|
|
use antf::lib::ai::AIGoal; |
|
|
|
use antf::lib::ai::AIGoal; |
|
|
|
use antf::lib::world::{World, simulate, render}; |
|
|
|
use antf::lib::world::{World, simulate, render}; |
|
|
|
use antf::lib::entity::{Entities, Ant}; |
|
|
|
use antf::lib::entity::{Entities, Ant, Food, FoodGenerator}; |
|
|
|
|
|
|
|
|
|
|
|
use ncurses::*; |
|
|
|
use ncurses::*; |
|
|
|
use std::thread::sleep; |
|
|
|
use std::thread::sleep; |
|
|
@ -12,7 +12,7 @@ use std::time; |
|
|
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
#[test] |
|
|
|
fn test_reach_astar() { |
|
|
|
fn test_reach_astar() { |
|
|
|
let mut board = init_screen();
|
|
|
|
let mut board = init_screen();//Screen::new(40,40);
|
|
|
|
let mut world = World::new(); |
|
|
|
let mut world = World::new(); |
|
|
|
|
|
|
|
|
|
|
|
let mut entities = Entities::new(); |
|
|
|
let mut entities = Entities::new(); |
|
|
@ -22,9 +22,13 @@ fn test_reach_astar() { |
|
|
|
|
|
|
|
|
|
|
|
let a = entities.data.get_mut(&id).unwrap(); |
|
|
|
let a = entities.data.get_mut(&id).unwrap(); |
|
|
|
let ant: &mut Ant = a.downcast_mut::<Ant>().unwrap();
|
|
|
|
let ant: &mut Ant = a.downcast_mut::<Ant>().unwrap();
|
|
|
|
ant.goal = AIGoal::Reach(Point(10,10)); |
|
|
|
ant.plan.push(AIGoal::Reach(Point(10,10))); |
|
|
|
|
|
|
|
ant.plan.push(AIGoal::Reach(Point(-10,-10))); |
|
|
|
|
|
|
|
ant.plan.push(AIGoal::Reach(Point(10,-10))); |
|
|
|
|
|
|
|
ant.plan.push(AIGoal::Reach(Point(-10,10))); |
|
|
|
|
|
|
|
|
|
|
|
for _ in 0..60 { |
|
|
|
// craps out... need to make sure unwrap() is safe
|
|
|
|
|
|
|
|
for _ in 0..420 { |
|
|
|
// TODO: add way to break out of the loop by hitting a random key
|
|
|
|
// TODO: add way to break out of the loop by hitting a random key
|
|
|
|
simulate(&mut entities, &mut world, &mut board); |
|
|
|
simulate(&mut entities, &mut world, &mut board); |
|
|
|
render(&entities, &world, &board); |
|
|
|
render(&entities, &world, &board); |
|
|
@ -34,3 +38,31 @@ fn test_reach_astar() { |
|
|
|
clear(); |
|
|
|
clear(); |
|
|
|
endwin(); |
|
|
|
endwin(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*#[test]
|
|
|
|
|
|
|
|
fn test_drag() { |
|
|
|
|
|
|
|
let mut board = init_screen();
|
|
|
|
|
|
|
|
let mut world = World::new(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let mut entities = Entities::new(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let f = Food::new(10,10); |
|
|
|
|
|
|
|
let a = Ant::new(0,0); |
|
|
|
|
|
|
|
let fid = entities.add_entity(&f); |
|
|
|
|
|
|
|
let id = entities.add_entity(&a); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let a = entities.data.get_mut(&id).unwrap(); |
|
|
|
|
|
|
|
let ant: &mut Ant = a.downcast_mut::<Ant>().unwrap(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//ant.goal =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for _ in 0..60 { |
|
|
|
|
|
|
|
// TODO: add way to break out of the loop by hitting a random key
|
|
|
|
|
|
|
|
simulate(&mut entities, &mut world, &mut board); |
|
|
|
|
|
|
|
render(&entities, &world, &board); |
|
|
|
|
|
|
|
sleep(time::Duration::from_millis(100)); |
|
|
|
|
|
|
|
refresh(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
clear(); |
|
|
|
|
|
|
|
endwin();
|
|
|
|
|
|
|
|
}*/ |
|
|
|