kgoldrunner
kgrobject.cpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
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;
00039 bool KGrObject::bugFixed = false;
00040 bool KGrObject::logging = false;
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;
00078 }
00079
00080 void KGrFree::setNugget (bool nug)
00081 {
00082
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
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
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
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
00186 {
00187 theRealMe = HLADDER;
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"