population counter is updating, ninja dude walking on the world
This commit is contained in:
parent
ea3bd65bc7
commit
49d1ffb0c4
@ -6,5 +6,5 @@
|
||||
extern "C" void think(Action *action, char *memory, const Info *info)
|
||||
{
|
||||
action->type = Action::MOVE; // the Dude will move
|
||||
action->dir = Dir( std::rand() % 4 ); // the direction of the movement will be random
|
||||
action->dir = Dir(0);//std::rand() % 4 ); // the direction of the movement will be random
|
||||
}
|
||||
|
Binary file not shown.
@ -42,6 +42,7 @@ void MainWindow::updateSimu()
|
||||
{
|
||||
p_simu->update();
|
||||
ui->dateLabel->setText(QString::number(++m_date));
|
||||
ui->populationLabel->setText(QString::number(p_simu->getPopulation()));
|
||||
ui->drawWidget->updateDudesBehavior();
|
||||
ui->drawWidget->repaint();
|
||||
}
|
||||
|
@ -35,22 +35,33 @@ void Simulation::update()
|
||||
{
|
||||
//TODO: check if target pixel is walkable and has no dude
|
||||
Coord spawnPos = p_map->team(i) + Coord(Dir(rand()%4));
|
||||
m_dudes.push_back(new Dude(spawnPos,p_map,i));
|
||||
Dude *dude = new Dude(spawnPos,p_map,i);
|
||||
(*p_map)[spawnPos].data.dudePtr = dude;
|
||||
p_map->updatePixel(spawnPos);
|
||||
m_dudes.push_back(dude);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO finish conversion of handleAction()
|
||||
void Simulation::handleAction(Action *action, Dude *dude){
|
||||
Coord targetPos(dude->getPos() + Coord(action->dir));
|
||||
Pixel target = p_map->getPixel(targetPos);
|
||||
Coord currentPos(dude->getPos());
|
||||
Coord targetPos(currentPos + Coord(action->dir));
|
||||
Pixel source = (*p_map)[currentPos];
|
||||
Pixel target = (*p_map)[targetPos];
|
||||
Dude* targetDude;
|
||||
dude->setSuccess(false);
|
||||
if(action == NULL) return;
|
||||
switch(action->type){
|
||||
case Action::MOVE:
|
||||
if (isWalkable(target.type))
|
||||
NULL; // TODO: move action
|
||||
if (isWalkable(target.type) && target.data.dudePtr == NULL){
|
||||
source.data.dudePtr = NULL;
|
||||
target.data.dudePtr = dude;
|
||||
dude->move(action->dir);
|
||||
p_map->updatePixel(currentPos);
|
||||
p_map->updatePixel(targetPos);
|
||||
std::cout << "Moving to [" << targetPos.x << "," << targetPos.y << "]"<< std::endl;
|
||||
}
|
||||
break;
|
||||
case Action::ATTACK:
|
||||
if (isDestroyable(target.type))
|
||||
|
@ -16,6 +16,7 @@ private:
|
||||
public:
|
||||
Simulation(MapScene *_map, std::vector<BehaviorFunction> &_behaviors);
|
||||
MapScene* getMap() { return (MapScene*) p_map; }
|
||||
int getPopulation(){return m_dudes.size();}
|
||||
|
||||
/**
|
||||
* @brief update runs one step of simulation
|
||||
|
@ -32,7 +32,7 @@ void Team::destroySpawn(){
|
||||
|
||||
Action* Team::update(Dude *dude)
|
||||
{
|
||||
Action* action;
|
||||
Action* action = new Action();
|
||||
m_behavior(action, dude->getMemory(),(Info*) dude);
|
||||
return action;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user