• Skip to content
  • Skip to link menu
KDE 4.0 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) {holeFrozen = true; return;}
00141 
00142     // When the hole is complete, we need a longer delay.
00143     if (dig_counter == 5) {
00144     hole_counter--;
00145     if (hole_counter > 0) {
00146             timer->setSingleShot(true);
00147         timer->start ((DIGDELAY * NSPEED) / speed);
00148         return;
00149     }
00150     }
00151     if (dig_counter < 9) {
00152     dig_counter++;
00153         timer->setSingleShot(true);
00154     timer->start ((DIGDELAY * NSPEED) / speed);
00155     if (dig_counter >= 8)
00156         iamA = BRICK;
00157     }
00158     else
00159     dig_counter = 0;
00160 
00161     // Brick pix:- 0 normal, 1-4 crumbling, 5 hole complete, 6-9 re-growing.
00162     objectView->paintCell (xpos, ypos, BRICK, dig_counter);
00163 }
00164 
00165 void KGrBrick::useHole() {
00166     if (iamA == HOLE)
00167     iamA = USEDHOLE;
00168 }
00169 
00170 void KGrBrick::unUseHole() {
00171     if (iamA == USEDHOLE)
00172     iamA = HOLE;
00173 }
00174 
00175 KGrBrick :: ~KGrBrick ()
00176 {
00177     delete timer;
00178 }
00179 
00180 KGrHladder::KGrHladder (char objType, int i, int j, KGrCanvas * view)
00181                 : KGrFree (objType, i, j, view)
00182   // Must inherit "setNugget()" from "KGrFree".
00183 {
00184   theRealMe = HLADDER;      // But remember we are a hidden ladder ...
00185 }
00186 
00187 void KGrHladder::showLadder()
00188 {
00189     iamA = LADDER;
00190     objectView->paintCell (xpos, ypos, LADDER);
00191 }
00192 
00193 KGrHladder :: ~KGrHladder ()
00194 {
00195 }
00196 
00197 #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