summaryrefslogtreecommitdiffstats
path: root/kpacman/pacman.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kpacman/pacman.cpp')
-rw-r--r--kpacman/pacman.cpp147
1 files changed, 0 insertions, 147 deletions
diff --git a/kpacman/pacman.cpp b/kpacman/pacman.cpp
deleted file mode 100644
index 40f60a8..0000000
--- a/kpacman/pacman.cpp
+++ /dev/null
@@ -1,147 +0,0 @@
-#include "pacman.h"
-#include "board.h"
-
-Pacman::Pacman(Board *b)
-{
- board = b;
- setDemo(FALSE);
- setAlive(0);
- actualPosition = lastPosition = OUT;
- mouthPosition = 0;
- lastPix = 0;
- maxPixmaps = 0;
-}
-
-void Pacman::setMaxPixmaps(int max)
-{
- if (actualDirection == X && lastPix >= 0) {
- actualDirection = lastPix / (maxPixmaps/4);
- if (max < maxPixmaps)
- mouthPosition = 0;
- else
- mouthPosition = lastPix % (maxPixmaps/4);
- maxPixmaps = max;
-
- lastPix = pix();
-
- actualDirection = X;
- } else
- maxPixmaps = max;
-}
-
-void Pacman::setAlive(int ticks)
-{
- actualState = alive;
- pauseDuration = ticks;
- pause = 0;
-}
-
-void Pacman::setPosition(int pos)
-{
- board->reset(lastPosition, pacman);
- actualPosition = lastPosition = pos;
- board->set(actualPosition, pacman);
- mouthPosition = 0;
-}
-
-void Pacman::setDirection(int dir, bool forced)
-{
- if (forced ||
- board->isWay(actualPosition, dir, empty) ||
- board->isWay(actualPosition, dir, tunnel)) {
- if (dir == X)
- lastPix = pix();
- actualDirection = dir;
- nextDirection = X;
- } else
- nextDirection = dir;
-}
-
-void Pacman::setDemo(bool yes)
-{
- demo = yes;
-}
-
-pacmanState Pacman::state()
-{
- return actualState;
-}
-
-int Pacman::position()
-{
- return actualPosition;
-}
-
-int Pacman::direction()
-{
- return actualDirection;
-}
-
-bool Pacman::move()
-{
- if (pause-- > 0)
- return FALSE;
- else
- pause = pauseDuration;
-
- if (actualDirection == X || actualPosition == OUT)
- return FALSE;
-
- lastPosition = actualPosition;
-
- if (demo) {
- int d = actualDirection;
-
- do // try new direction, but not the opposite
- d = rand() % 4; // direction, to prevent hectic movement.
- while (d == board->turn(actualDirection));
-
- while (!board->isWay(actualPosition, d, empty) &&
- !board->isWay(actualPosition, d, tunnel)) {
- if (d != actualDirection) // if new actualDirection is not possible,
- d = actualDirection; // try current actualDirection first.
- else
- d = rand() % 4;
- }
-
- actualDirection = d;
- actualPosition = board->move(actualPosition, actualDirection);
-
- } else {
-
- if (nextDirection != X)
- if (board->isWay(actualPosition, nextDirection, empty) ||
- board->isWay(actualPosition, nextDirection, tunnel)) {
- actualDirection = nextDirection;
- nextDirection = X;
- }
-
- if (board->isWay(actualPosition, actualDirection, empty) ||
- board->isWay(actualPosition, actualDirection, tunnel))
- actualPosition = board->move(actualPosition, actualDirection);
- }
-
- if (actualPosition != lastPosition) {
- board->reset(lastPosition, pacman);
- board->set(actualPosition, pacman);
-
- if (++mouthPosition >= (maxPixmaps/4))
- mouthPosition = 0;
- }
- return TRUE;
-}
-
-int Pacman::pix()
-{
- if (actualPosition != OUT && maxPixmaps > 0)
- switch (actualDirection) {
- case N : return ((maxPixmaps/4)*0)+mouthPosition;
- case E : return ((maxPixmaps/4)*1)+mouthPosition;
- case S : return ((maxPixmaps/4)*2)+mouthPosition;
- case W : return ((maxPixmaps/4)*3)+mouthPosition;
- case X : return lastPix;
- }
-
- return -1;
-}
-