From f5c00e32e6f32ca1216c72281b547faf372f0179 Mon Sep 17 00:00:00 2001 From: manuel Date: Sun, 17 Apr 2011 21:50:32 +0200 Subject: funny ai implementation --- pacman-c++/actor.cpp | 53 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 33 insertions(+), 20 deletions(-) (limited to 'pacman-c++/actor.cpp') diff --git a/pacman-c++/actor.cpp b/pacman-c++/actor.cpp index fb4b38a..9ff51f3 100644 --- a/pacman-c++/actor.cpp +++ b/pacman-c++/actor.cpp @@ -128,25 +128,19 @@ void Actor::move(Actor::Movement direction) m_eating[m_direction]->stop(); } - QPointF endpos(0, 0); + QPointF endpos = movementToPoint(direction); switch(direction) { - case Actor::None: - break; case Actor::Left: - endpos.setX(static_cast(Constants::field_size.width) * -1); - break; case Actor::Right: - endpos.setX(Constants::field_size.width); + endpos *= Constants::field_size.width; break; case Actor::Up: - endpos.setY(static_cast(Constants::field_size.height) * -1); - break; case Actor::Down: - endpos.setY(Constants::field_size.height); + endpos *= Constants::field_size.height; break; + case Actor::None: default: - Q_ASSERT(false); break; } @@ -175,25 +169,19 @@ void Actor::move(Actor::Movement direction) void Actor::moveByServer(Actor::Movement direction) { - QPointF endpos(0, 0); + QPointF endpos = movementToPoint(direction); switch(direction) { - case Actor::None: - break; case Actor::Left: - endpos.setX(static_cast(Constants::field_size.width) * -1); - break; case Actor::Right: - endpos.setX(Constants::field_size.width); + endpos *= Constants::field_size.width; break; case Actor::Up: - endpos.setY(static_cast(Constants::field_size.height) * -1); - break; case Actor::Down: - endpos.setY(Constants::field_size.height); + endpos *= Constants::field_size.height; break; + case Actor::None: default: - Q_ASSERT(false); break; } setPos(pos() + endpos); @@ -260,3 +248,28 @@ void Actor::finishRound() m_gamePoints += m_roundPoints; m_roundPoints = 0; } + +QPoint Actor::movementToPoint(const Actor::Movement direction) +{ + QPoint endpos(0,0); + switch (direction) + { + case Actor::Up: + endpos = QPoint(0, -1); + break; + case Actor::Down: + endpos = QPoint(0, 1); + break; + case Actor::Left: + endpos = QPoint(-1, 0); + break; + case Actor::Right: + endpos = QPoint(1, 0); + break; + case Actor::None: + break; + default: + Q_ASSERT(false); + } + return endpos; +} -- cgit v1.2.3