|
|
|
//
|
|
|
|
//
|
|
|
|
// KBlackBox
|
|
|
|
//
|
|
|
|
// A simple game inspired by an emacs module
|
|
|
|
//
|
|
|
|
// File: kbbgame.h
|
|
|
|
//
|
|
|
|
// The definition of the KBBGame widget
|
|
|
|
//
|
|
|
|
|
|
|
|
#ifndef KBBGAME_H
|
|
|
|
#define KBBGAME_H
|
|
|
|
|
|
|
|
#include "kbbgfx.h"
|
|
|
|
#include "util.h"
|
|
|
|
|
|
|
|
#include <tdemainwindow.h>
|
|
|
|
#include <krandomsequence.h>
|
|
|
|
|
|
|
|
class TDESelectAction;
|
|
|
|
class TDEToggleAction;
|
|
|
|
|
|
|
|
/*
|
|
|
|
Types of the boxes (used f.e.g. in the traceRay() method)
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define OUTERBBT 0
|
|
|
|
#define INNERBBT 1
|
|
|
|
#define LASERBBT 2
|
|
|
|
#define BALLBBT 3
|
|
|
|
|
|
|
|
/*
|
|
|
|
Ray-tracing results.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#define WRONGSTART -1
|
|
|
|
#define DETOUR 0
|
|
|
|
#define REFLECTION 1
|
|
|
|
#define HIT 2
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Statusbar IDs.
|
|
|
|
*/
|
|
|
|
#define SSCORE 0
|
|
|
|
#define SBALLS 1
|
|
|
|
#define SRUN 2
|
|
|
|
#define SSIZE 3
|
|
|
|
|
|
|
|
class KBBGame : public TDEMainWindow
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
public:
|
|
|
|
KBBGame();
|
|
|
|
~KBBGame();
|
|
|
|
|
|
|
|
signals:
|
|
|
|
void gameRuns( bool );
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void slotSize();
|
|
|
|
void slotBalls();
|
|
|
|
|
|
|
|
void tutorialSwitch();
|
|
|
|
|
|
|
|
void newGame();
|
|
|
|
|
|
|
|
bool setSize( int w, int h );
|
|
|
|
bool setBalls( int n );
|
|
|
|
void setMinSize();
|
|
|
|
void randomBalls( int n );
|
|
|
|
void slotResize();
|
|
|
|
void gameResize();
|
|
|
|
void setScore( int n );
|
|
|
|
void updateStats();
|
|
|
|
void gameFinished();
|
|
|
|
void abortGame();
|
|
|
|
void giveUp();
|
|
|
|
void gotInputAt( int col, int row, int state );
|
|
|
|
|
|
|
|
private:
|
|
|
|
int traceRay( int startX, int startY, int *endX, int *endY );
|
|
|
|
void remap( RectOnArray *gam, RectOnArray *gra );
|
|
|
|
void getResults();
|
|
|
|
void initTDEAction();
|
|
|
|
|
|
|
|
int balls;
|
|
|
|
int detourCounter;
|
|
|
|
int ballsPlaced;
|
|
|
|
bool running;
|
|
|
|
bool tutorial;
|
|
|
|
RectOnArray *gameBoard;
|
|
|
|
KBBGraphic *gr;
|
|
|
|
|
|
|
|
int score;
|
|
|
|
/* TQLabel *scoreText;
|
|
|
|
TQLabel *statusText;*/
|
|
|
|
KRandomSequence random;
|
|
|
|
|
|
|
|
TDESelectAction *ballsAction, *sizeAction;
|
|
|
|
TDEToggleAction *tutorialAction;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif // KBBGAME_H
|