| Classes - Annotated - Tree - Functions - Home - Structure Qte

# Source code for tutorial 14: cannon.h

    /****************************************************************
    **
    ** 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