#include #include #include #include #include #include #define MAPSIZE 52 #define BLOCKSIZE 6 #define TRAILSIZE 30 class SFCave : public QMainWindow { Q_OBJECT public: int sWidth; int sHeight; int segSize; int blockWidth; int blockHeight; int gapHeight; int state; int prevState; int speed; int crashLineLength; int gateDistance; int nextGate; int lastGateBottomY; static QString menuOptions[2][5]; int currentMenuNr; int nrMenuOptions[2]; int currentMenuOption[2]; static QString dificultyOption[3]; static QString gameTypes[3]; int currentGameType; int currentGameDifficulty; QPixmap *offscreen; QTimer *gameTimer; int score; int highestScore[3]; int mapTop[MAPSIZE]; int mapBottom[MAPSIZE]; QRect blocks[BLOCKSIZE]; QRect user; QPoint trail[TRAILSIZE]; int offset; int maxHeight; int nrFrames; int dir; bool bossMode; bool press; double thrust; bool running; SFCave( int speed = 3, QWidget *p = 0, char *name = 0 ); ~SFCave(); void start(); int nextInt( int range ); void setUp(); bool checkCollision(); void moveLandscape(); void addBlock(); void addGate(); void setPoint( int point ); void drawBoss(); void draw(); void handleKeys(); void displayMenu(); void dealWithMenuSelection(); void keyPressEvent( QKeyEvent *e ); void keyReleaseEvent( QKeyEvent *e ); private slots: void run(); };