• Skip to content
  • Skip to link menu
KDE 4.2 API Reference
  • KDE API Reference
  • API Reference
  • Sitemap
  • Contact Us
 

kgoldrunner

kgrobject.cpp

Go to the documentation of this file.
00001 /***************************************************************************
00002  *                      kgrobject.cpp  -  description                      *
00003  *                           -------------------                           *
00004  *  begin                : Wed Jan 23 2002                                 *
00005  *  Copyright 2002 Marco Krüger <grisuji@gmx.de>                           *
00006  *  Copyright 2002 Ian Wadham <ianw2@optusnet.com.au>                      *
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the GNU General Public License as published by  *
00013  *   the Free Software Foundation; either version 2 of the License, or     *
00014  *   (at your option) any later version.                                   *
00015  *                                                                         *
00016  ***************************************************************************/
00017 
00018 #include "kgrobject.h"
00019 
00020 #include "kgrconsts.h"
00021 #include "kgrcanvas.h"
00022 
00023 #include <stdio.h>
00024 
00025 KGrObject::KGrObject (char objType)
00026 {
00027     iamA = objType;
00028     searchValue = 0;
00029     blocker = false;
00030     if ((objType == BRICK) || (objType == BETON) || (objType == FBRICK)) {
00031         blocker = true;
00032     }
00033     xpos = 0;
00034     ypos = 0;
00035     objectView = NULL;
00036 }
00037 
00038 bool KGrObject::frozen = false; // Initialise game as running, not halted.
00039 bool KGrObject::bugFixed = false;// Initialise game with dynamic bug-fix OFF.
00040 bool KGrObject::logging = false;// Initialise game with log printing OFF.
00041 
00042 char KGrObject::whatIam()
00043 {
00044     return iamA;
00045 }
00046 
00047 void KGrObject::showState (int i, int j)
00048 {
00049     printf ("(%02d,%02d) - Object [%c] search %d", i, j, iamA, searchValue);
00050     if (blocker) printf (" blocker");
00051     printf ("\n");
00052 }
00053 
00054 KGrObject::~KGrObject()
00055 {
00056 }
00057 
00058 KGrEditable::KGrEditable (char editType) : KGrObject (editType)
00059 {
00060 }
00061 
00062 void KGrEditable::setType (char editType)
00063 {
00064     iamA = editType;
00065 }
00066 
00067 KGrEditable::~KGrEditable()
00068 {
00069 }
00070 
00071 KGrFree::KGrFree (char objType, int i, int j, KGrCanvas * view)
00072                                 : KGrObject (objType)
00073 {
00074     xpos        = i;
00075     ypos        = j;
00076     objectView  = view;
00077     theRealMe   = FREE;     // Remember what we are, even "iamA == NUGGET".
00078 }
00079 
00080 void KGrFree::setNugget (bool nug)
00081 {
00082     // This code must work over a hidden ladder as well as a free cell.
00083     if (! nug) {
00084         iamA = theRealMe;
00085         objectView->paintCell (xpos, ypos, FREE);
00086     }
00087     else {
00088         iamA = NUGGET;
00089         objectView->paintCell (xpos, ypos, NUGGET);
00090     }
00091 }
00092 
00093 KGrFree::~KGrFree()
00094 {
00095 }
00096 
00097 /* +++++++++++++++ BRICK ++++++++++++++++ */
00098 
00099 KGrBrick::KGrBrick (char objType, int i, int j, KGrCanvas * view)
00100                                 : KGrObject (objType)
00101 {
00102     xpos        = i;
00103     ypos        = j;
00104     objectView  = view;
00105     dig_counter = 0;
00106     holeFrozen = false;
00107     iamA = BRICK;
00108     timer = new QTimer (this);
00109     connect (timer, SIGNAL (timeout()), SLOT (timeDone()));
00110 }
00111 
00112 void KGrBrick::dig (void)
00113 {
00114     dig_counter = 1;
00115     hole_counter = HOLETIME;
00116     iamA = HOLE;
00117     objectView->paintCell (xpos, ypos, BRICK, dig_counter);
00118     timer->setSingleShot (true);
00119     timer->start ((DIGDELAY * NSPEED) / speed);
00120 }
00121 
00122 void KGrBrick::doStep() {
00123     if (holeFrozen) {
00124         holeFrozen = false;
00125         timeDone();
00126     }
00127 }
00128 
00129 void KGrBrick::showState (int i, int j)
00130 {
00131     printf ("(%02d,%02d) - Brick  [%c] search %d dig-counter %d",
00132         i, j, iamA, searchValue, dig_counter);
00133     if (blocker)
00134         printf (" blocker");
00135     printf ("\n");
00136 }
00137 
00138 void KGrBrick::timeDone()
00139 {
00140     if (KGrObject::frozen) {
00141         holeFrozen = true;
00142         return;
00143     }
00144 
00145     // When the hole is complete, we need a longer delay.
00146     if (dig_counter == 5) {
00147         hole_counter--;
00148         if (hole_counter > 0) {
00149             timer->setSingleShot (true);
00150             timer->start ((DIGDELAY * NSPEED) / speed);
00151             return;
00152         }
00153     }
00154     if (dig_counter < 9) {
00155         dig_counter++;
00156         timer->setSingleShot (true);
00157         timer->start ((DIGDELAY * NSPEED) / speed);
00158         if (dig_counter >= 8)
00159             iamA = BRICK;
00160     }
00161     else
00162         dig_counter = 0;
00163 
00164     // Brick pix:- 0 normal, 1-4 crumbling, 5 hole complete, 6-9 re-growing.
00165     objectView->paintCell (xpos, ypos, BRICK, dig_counter);
00166 }
00167 
00168 void KGrBrick::useHole() {
00169     if (iamA == HOLE)
00170         iamA = USEDHOLE;
00171 }
00172 
00173 void KGrBrick::unUseHole() {
00174     if (iamA == USEDHOLE)
00175         iamA = HOLE;
00176 }
00177 
00178 KGrBrick::~KGrBrick()
00179 {
00180     delete timer;
00181 }
00182 
00183 KGrHladder::KGrHladder (char objType, int i, int j, KGrCanvas * view)
00184                             : KGrFree (objType, i, j, view)
00185     // Must inherit "setNugget()" from "KGrFree".
00186 {
00187     theRealMe = HLADDER;    // But remember we are a hidden ladder ...
00188 }
00189 
00190 void KGrHladder::showLadder()
00191 {
00192     iamA = LADDER;
00193     objectView->paintCell (xpos, ypos, LADDER);
00194 }
00195 
00196 KGrHladder::~KGrHladder()
00197 {
00198 }
00199 
00200 #include "kgrobject.moc"

kgoldrunner

Skip menu "kgoldrunner"
  • Main Page
  • Class Hierarchy
  • Alphabetical List
  • Class List
  • File List
  • Class Members

API Reference

Skip menu "API Reference"
  • kblackbox
  • kgoldrunner
  • kmahjongg
  • ksquares
  • libkdegames
  •   highscore
  •   kgame
  •   kggzgames
  •   kggzmod
  •   kggznet
  • libkmahjongg
Generated for API Reference by doxygen 1.5.4
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal