Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

board.h

Go to the documentation of this file.
00001 #ifndef BOARD_H
00002 #define BOARD_H
00003 
00004 #include <qarray.h>
00005 #include <qstring.h>
00006 #include <qlist.h>
00007 #include <qrect.h>
00008 
00009 #define OUT -1
00010 
00011 enum Square {out = OUT, empty, brick, prison, gate, tunnel, prisonentry, prisonexit,
00012              Point, energizer, fruit, pacman, monster,
00013              fruithome, pacmanhome, monsterhome};
00014 
00015 enum Image { None, Intro, Demo, Level, File };
00016 
00017 #define X -1
00018 #define N  0
00019 #define S  1
00020 #define E  2
00021 #define W  3
00022 #define NE 4
00023 #define SE 5
00024 #define NW 6
00025 #define SW 7
00026 
00027 #define BoardWidth 59
00028 #define BoardHeight 65
00029 
00030 #define fixBits      0x0007
00031 #define varBits      0xFFF8
00032 #define monsterBits  0xFF00
00033 
00034 #define pointBit     0x0008
00035 #define energizerBit 0x0010
00036 #define fruitBit     0x0020
00037 #define pacmanBit    0x0040
00038 #define monsterBit   0x0100
00039 
00040 class Board : public QArray<int>
00041 {
00042 public:
00043   Board  (int size);
00044   ~Board() {};
00045   void   init(Image image, QString levelName=0);
00046   void   setup(const uchar *buf);
00047 
00048   void   set(int pos, Square sq, int m = 0);
00049   void   reset(int pos, Square sq, int m = 0);
00050   int    position(Square sq, int m = 0);
00051 
00052   bool   isOut(int pos);
00053   bool   isEmpty(int pos);
00054   bool   isBrick(int pos);
00055   bool   isPrison(int pos);
00056   bool   isGate(int pos);
00057   bool   isTunnel(int pos);
00058   bool   isPoint(int pos);
00059   bool   isEnergizer(int pos);
00060   bool   isFruit(int pos);
00061   bool   isPacman(int pos);
00062   bool   isMonster(int pos);
00063   bool   isWay(int pos, int dir, Square sq);
00064   bool   isJump(int pos, int dir);
00065 
00066   int    move(int pos, int dir, int steps = 1);
00067   int    closeup(int pos, int dir, int target);
00068   int    x(int pos);
00069   int    y(int pos);
00070   int    turn(int dir);
00071 
00072   int    points();
00073   int    energizers();
00074   int    monsters();
00075   int    tunnels();
00076 
00077 private:
00078     bool inBounds(int pos);
00079     int  sz;                            // size of board
00080 
00081     QString map;
00082     QString mapName;                    // Filename of the latest loaded map
00083 
00084     int  prisonEntry;                   // position of prisonentry
00085     int  prisonExit;                    // position of prisonexit
00086     int  pacmanHome;                    // startposition of pacman
00087     int  monsterHome[8];                // startposition of monsters
00088     int  fruitHome;                     // startposition of fruit
00089 
00090     int  pacmanPosition;                // actual position of pacman
00091     int  monsterPosition[8];            // actual position of monsters
00092     int  fruitPosition;                 // actual position of fruit
00093     int  energizerPosition[8];          // actual position of energizers
00094     int  tunnelPosition[8];             // position of tunnels
00095 
00096     int  numMonsters;                   // number of monsters on the board
00097     int  numPoints;                     // number of points (left) on the board
00098     int  numEnergizers;                 // number of energizers (left)
00099     int  numTunnels;                    // number of tunnels on the board
00100 };
00101 
00102 #endif // BOARD_H

Generated on Sat Nov 5 16:17:20 2005 for OPIE by  doxygen 1.4.2