Qt Reference Documentation

# sprites.h Example File

graphicsview/portedasteroids/sprites.h

     /****************************************************************************
     **
     ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
     ** All rights reserved.
     ** Contact: Nokia Corporation (qt-info@nokia.com)
     **
     ** This file is part of the examples of the Qt Toolkit.
     **
     ** $QT_BEGIN_LICENSE:BSD$
     ** You may use this file under the terms of the BSD license as follows:
     **
     ** "Redistribution and use in source and binary forms, with or without
     ** modification, are permitted provided that the following conditions are
     ** met:
     **   * Redistributions of source code must retain the above copyright
     **     notice, this list of conditions and the following disclaimer.
     **   * Redistributions in binary form must reproduce the above copyright
     **     notice, this list of conditions and the following disclaimer in
     **     the documentation and/or other materials provided with the
     **     distribution.
     **   * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
     **     the names of its contributors may be used to endorse or promote
     **     products derived from this software without specific prior written
     **     permission.
     **
     ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
     ** $QT_END_LICENSE$
     **
     ****************************************************************************/

     /*
      * KAsteroids - Copyright (c) Martin R. Jones 1997
      *
      * Part of the KDE project
      */

     #ifndef __SPRITES_H__
     #define __SPRITES_H__

     #include "animateditem.h"

     #define ID_ROCK_LARGE           1024
     #define ID_ROCK_MEDIUM          1025
     #define ID_ROCK_SMALL           1026

     #define ID_MISSILE              1030

     #define ID_BIT                  1040
     #define ID_EXHAUST              1041

     #define ID_ENERGY_POWERUP       1310
     #define ID_TELEPORT_POWERUP     1311
     #define ID_BRAKE_POWERUP        1312
     #define ID_SHIELD_POWERUP       1313
     #define ID_SHOOT_POWERUP        1314

     #define ID_SHIP                 1350
     #define ID_SHIELD               1351

     #define MAX_SHIELD_AGE          350
     #define MAX_POWERUP_AGE         500
     #define MAX_MISSILE_AGE         40

     class KMissile : public AnimatedPixmapItem
     {
     public:
         KMissile( const QList<QPixmap> &s, QGraphicsScene *c ) : AnimatedPixmapItem( s, c )
             { myAge = 0; }

         virtual int type() const { return ID_MISSILE; }

         void growOlder() { myAge++; }
         bool expired() { return myAge > MAX_MISSILE_AGE; }

     private:
         int myAge;
     };

     class KBit : public AnimatedPixmapItem
     {
     public:
         KBit( const QList<QPixmap> &s, QGraphicsScene *c ) : AnimatedPixmapItem( s, c )
             {  death = 7; }

         virtual int type() const {  return ID_BIT; }

         void setDeath( int d ) { death = d; }
         void growOlder() { death--; }
         bool expired() { return death <= 0; }

     private:
         int death;
     };

     class KExhaust : public AnimatedPixmapItem
     {
     public:
         KExhaust( const QList<QPixmap> &s, QGraphicsScene *c ) : AnimatedPixmapItem( s, c )
             {  death = 1; }

         virtual int type() const {  return ID_EXHAUST; }

         void setDeath( int d ) { death = d; }
         void growOlder() { death--; }
         bool expired() { return death <= 0; }

     private:
         int death;
     };

     class KPowerup : public AnimatedPixmapItem
     {
     public:
       KPowerup( const QList<QPixmap> &s, QGraphicsScene *c, int t ) : AnimatedPixmapItem( s, c ),
             myAge( 0 ), _type(t) { }

       virtual int type() const { return _type; }

       void growOlder() { myAge++; }
       bool expired() const { return myAge > MAX_POWERUP_AGE; }

     protected:
       int myAge;
       int _type;
     };

     class KRock : public AnimatedPixmapItem
     {
     public:
         KRock (const QList<QPixmap> &s, QGraphicsScene *c, int t, int sk, int st) : AnimatedPixmapItem( s, c )
             { _type = t; skip = cskip = sk; step = st; }

         void nextFrame()
             {
                 if (cskip-- <= 0) {
                     setFrame( (frame()+step+frameCount())%frameCount() );
                     cskip = qAbs(skip);
                 }
             }

         virtual int type() const { return _type; }

     private:
         int _type;
         int skip;
         int cskip;
         int step;
     };

     class KShield : public AnimatedPixmapItem
     {
     public:
       KShield( QList<QPixmap> &s, QGraphicsScene *c )
           : AnimatedPixmapItem( s, c ) {}

       virtual int type() const { return ID_SHIELD; }
     };

     #endif