From e373442901064d07791c9739daa380acb1dfbb8c Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 18 Apr 2011 01:43:28 +0200 Subject: few bot improvements --- pacman-c++/server.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'pacman-c++/server.cpp') diff --git a/pacman-c++/server.cpp b/pacman-c++/server.cpp index 02055b7..65a8f8b 100644 --- a/pacman-c++/server.cpp +++ b/pacman-c++/server.cpp @@ -56,7 +56,7 @@ void Server::tick() { //qDebug() << "[Tick] Doing server update"; foreach(Color::Color color, m_bots) - aiCalculate(m_actors[color]); + botCalculate(m_actors[color]); Transmission::map_t map = calculateUpdates(); updateMap(map); @@ -340,16 +340,27 @@ void Server::sendUpdate(Transmission::map_t map) } } -void Server::aiCalculate(Actor *actor) +void Server::botCalculate(Actor *actor) { /* move as long as possible in one direction */ //if (m_actorMovements[actor->color()] != Actor::None) // return; QPoint actorpos = CoordToMapPosition(actor->pos().toPoint()); + + /* first make list of possible directions based on current actor position */ QList directions; - directions << Actor::Left << Actor::Right << Actor::Up << Actor::Down; - QList directions2(directions); // used if directions got empty + if (actorpos.x() > 0) + directions.append(Actor::Left); + if (actorpos.x() < visualMap.size() - 1) + directions.append(Actor::Right); + if (actorpos.y() > 0) + directions.append(Actor::Up); + if (actorpos.y() < visualMap[actorpos.x()].size() - 1) + directions.append(Actor::Down); + + /* copy of directions: used if there's no good direction based on rules */ + QList directions2(directions); QMutableListIterator i(directions); while(i.hasNext()) -- cgit v1.2.3