You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.6 KiB
80 lines
1.6 KiB
/****************************************************************
|
|
**
|
|
** Definition of CannonField class, Qt tutorial 14
|
|
**
|
|
****************************************************************/
|
|
|
|
#ifndef CANNON_H
|
|
#define CANNON_H
|
|
|
|
class QTimer;
|
|
|
|
|
|
#include <qwidget.h>
|
|
|
|
|
|
class CannonField : public QWidget
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
CannonField( QWidget *parent=0, const char *name=0 );
|
|
|
|
int angle() const { return ang; }
|
|
int force() const { return f; }
|
|
bool gameOver() const { return gameEnded; }
|
|
bool isShooting() const;
|
|
QSize sizeHint() const;
|
|
QSizePolicy sizePolicy() const;
|
|
|
|
public slots:
|
|
void setAngle( int degrees );
|
|
void setForce( int newton );
|
|
void shoot();
|
|
void newTarget();
|
|
void setGameOver();
|
|
void restartGame();
|
|
|
|
private slots:
|
|
void moveShot();
|
|
|
|
signals:
|
|
void hit();
|
|
void missed();
|
|
void angleChanged( int );
|
|
void forceChanged( int );
|
|
void canShoot( bool );
|
|
|
|
protected:
|
|
void paintEvent( QPaintEvent * );
|
|
void mousePressEvent( QMouseEvent * );
|
|
void mouseMoveEvent( QMouseEvent * );
|
|
void mouseReleaseEvent( QMouseEvent * );
|
|
|
|
private:
|
|
void paintShot( QPainter * );
|
|
void paintTarget( QPainter * );
|
|
void paintBarrier( QPainter * );
|
|
void paintCannon( QPainter * );
|
|
QRect cannonRect() const;
|
|
QRect shotRect() const;
|
|
QRect targetRect() const;
|
|
QRect barrierRect() const;
|
|
bool barrelHit( const QPoint & ) const;
|
|
|
|
int ang;
|
|
int f;
|
|
|
|
int timerCount;
|
|
QTimer * autoShootTimer;
|
|
float shoot_ang;
|
|
float shoot_f;
|
|
|
|
QPoint target;
|
|
|
|
bool gameEnded;
|
|
bool barrelPressed;
|
|
};
|
|
|
|
|
|
#endif // CANNON_H
|