Chain Game in C++

Source Code in C++

1: #include <iostream>

   2:  #include <cstdlib>
   3:  
   4:  using namespace std;
   5:  //——————————————————
   6:  class Summetexon
   7:  {
   8:  private:
   9:      int itsid;
  10:      int itsthesi;
  11:  public:
  12:      Summetexon(){;}
  13:      ~Summetexon(){;}
  14:      Summetexon *next;
  15:      void set_Summetexon(int id,int thesi);
  16:      void set_thesi(int thesi){itsthesi = thesi ;}
  17:      int get_thesi(){return itsthesi;}
  18:      int get_id(){return itsid;}
  19:  };
  20:  
  21:  class Alusida
  22:  {
  23:  private:
  24:      int itsmegethos;
  25:      int itsdiagrafon_node;
  26:      int itsdiagrafon_thesi;
  27:      int itsnode_arxis;
  28:      Summetexon *arxi;
  29:  public:
  30:      Alusida(int megethos);
  31:      ~Alusida(){;}
  32:      Summetexon *nodes;
  33:      void hit();
  34:      void stop_tune();
  35:      void resume();
  36:      void print_chain();
  37:      int game_over();
  38:      void winner();
  39:  
  40:  };
  41:  
  42:  //—————————————————-
  43:  
  44:  void Summetexon::set_Summetexon(int id,int thesi)
  45:  {
  46:      itsid=id;
  47:      itsthesi=thesi;
  48:  }
  49:  
  50:  //—————————————————–
  51:  
  52:  Alusida::Alusida(int megethos)
  53:  {
  54:      int i,id;
  55:      itsmegethos=megethos;
  56:      nodes = new Summetexon[megethos];
  57:      id=rand();
  58:      for(i=0;i<itsmegethos;i++)
  59:      {
  60:          if(i==itsmegethos -1)
  61:          {
  62:              nodes[i].set_Summetexon(id++,i+1);
  63:              break;
  64:          }
  65:          nodes[i].set_Summetexon(id++,i+1);
  66:      }
  67:      for(i=0;i<itsmegethos;i++)
  68:      {
  69:          if(i==itsmegethos -1)
  70:          {
  71:              nodes[i].next = &nodes[0];
  72:              break;
  73:          }
  74:          nodes[i].next = &nodes[i+1];
  75:      }
  76:      arxi = &nodes[0];
  77:      itsnode_arxis = 0;
  78:  }
  79:  
  80:  void Alusida::hit()
  81:  {
  82:      int i,thesi;
  83:      for(i=0;i<itsmegethos;i++)
  84:      {
  85:          if(nodes[i].get_thesi() == 1)
  86:          {
  87:              nodes[i].set_thesi(itsmegethos);
  88:              i++;
  89:          }
  90:          thesi = nodes[i].get_thesi();
  91:          nodes[i].set_thesi(–thesi);
  92:      }
  93:      for(i=0;i<itsmegethos;i++)
  94:      {
  95:          if(nodes[i].get_thesi() == 1)
  96:          {
  97:              arxi=&nodes[i];
  98:              itsnode_arxis = i;
  99:          }
 100:      }
 101:  }
 102:  
 103:  void Alusida::stop_tune()
 104:  {
 105:      itsdiagrafon_node = rand() % itsmegethos;
 106:      cout<<“Diagrafike o Summetexon me id:” << nodes[itsdiagrafon_node].get_id() << “\n\n”;
 107:      itsdiagrafon_thesi = nodes[itsdiagrafon_node].get_thesi();
 108:  
 109:      itsmegethos–;
 110:      if(itsdiagrafon_thesi == 1)
 111:      {
 112:          arxi = &nodes[itsdiagrafon_node + 1];
 113:          itsnode_arxis=itsdiagrafon_node + 1;
 114:      }
 115:  }
 116:  
 117:  void Alusida::resume()
 118:  {
 119:  
 120:      int i=0,j=0,thesi=1;
 121:      Summetexon *buf = new Summetexon[itsmegethos];
 122:      if(itsdiagrafon_thesi == 1)
 123:      {
 124:  
 125:          for(i=itsdiagrafon_node + 1;i<itsmegethos + 1;i++)
 126:          {
 127:              buf[j] = nodes[i];
 128:              buf[j].set_thesi(thesi++);
 129:              j++;
 130:          }
 131:          for(i=0;i<itsdiagrafon_node;i++)
 132:          {
 133:              buf[j] = nodes[i];
 134:              buf[j].set_thesi(thesi++);
 135:              j++;
 136:          }
 137:          for(i=0;i<itsmegethos;i++)
 138:          {
 139:              if(i == itsmegethos -1)
 140:              {
 141:                  buf[i].next = &buf[0];
 142:                  break;
 143:              }
 144:              buf[i].next = &buf[i+1];
 145:          }
 146:      }
 147:      if(itsdiagrafon_thesi == itsmegethos + 1)
 148:      {
 149:          for(i=itsdiagrafon_node + 1;i<itsmegethos+1;i++)
 150:          {
 151:              buf[j] = nodes[i];
 152:              j++;
 153:          }
 154:          for(i=0;i<itsdiagrafon_node;i++)
 155:          {
 156:              buf[j] = nodes[i];
 157:              j++;
 158:          }
 159:          for(i=0;i<itsmegethos;i++)
 160:          {
 161:              if(i == itsmegethos - 1)
 162:              {
 163:                  buf[i].next = &buf[0];
 164:                  break;
 165:              }
 166:              buf[i].next = &buf[i+1];
 167:          }
 168:      }
 169:  
 170:      if(itsdiagrafon_thesi != itsmegethos + 1 && itsdiagrafon_thesi != 1)
 171:      {
 172:          for(i=itsnode_arxis;i<itsmegethos + 1 && i<itsdiagrafon_node;i++)
 173:          {
 174:              buf[j] = nodes[i];
 175:              buf[j].set_thesi(thesi++);
 176:              j++;
 177:          }
 178:          if(i==itsnode_arxis)
 179:          {
 180:              for(i=i;i<itsmegethos + 1;i++)
 181:              {
 182:                  buf[j] = nodes[i];
 183:                  buf[j].set_thesi(thesi++);
 184:                  j++;
 185:              }
 186:              for(i=0;i<itsdiagrafon_node;i++)
 187:              {
 188:                  buf[j]=nodes[i];
 189:                  buf[j].set_thesi(thesi++);
 190:                  j++;
 191:              }
 192:              for(i=itsdiagrafon_node+1;i<itsnode_arxis;i++)
 193:              {
 194:                  buf[j]=nodes[i];
 195:                  buf[j].set_thesi(thesi++);
 196:                  j++;
 197:              }
 198:  
 199:          }
 200:          if(i==itsmegethos+1)
 201:          {
 202:              for(i=0;i<itsdiagrafon_node;i++)
 203:              {
 204:                  buf[j]=nodes[i];
 205:                  buf[j].set_thesi(thesi++);
 206:                  j++;
 207:              }
 208:              for(i=itsdiagrafon_node+1;i<itsnode_arxis;i++)
 209:              {
 210:                  buf[j]=nodes[i];
 211:                  buf[j].set_thesi(thesi++);
 212:                  j++;
 213:              }
 214:          }
 215:          else if(i==itsdiagrafon_node)
 216:          {
 217:              for(i=itsdiagrafon_node+1;i<itsmegethos +1;i++)
 218:              {
 219:                  buf[j]=nodes[i];
 220:                  buf[j].set_thesi(thesi++);
 221:                  j++;
 222:              }
 223:              for(i=0;i<itsnode_arxis;i++)
 224:              {
 225:                  buf[j]=nodes[i];
 226:                  buf[j].set_thesi(thesi++);
 227:                  j++;
 228:              }
 229:  
 230:          }
 231:          for(i=0;i<itsmegethos;i++)
 232:          {
 233:              if(i == itsmegethos -1)
 234:              {
 235:                  buf[i].next = &buf[0];
 236:                  break;
 237:              }
 238:              buf[i].next = &buf[i+1];
 239:          }
 240:      }
 241:  
 242:      for(i=0;i<itsmegethos;i++)
 243:      {
 244:          nodes[i] = buf[i];
 245:      }
 246:  
 247:      arxi = &nodes[0];
 248:      itsnode_arxis = 0;
 249:  }
 250:  
 251:  int Alusida::game_over()
 252:  {
 253:      if(itsmegethos == 1)
 254:          return 1;
 255:      else
 256:          return 0;
 257:  }
 258:  
 259:  void Alusida::print_chain()
 260:  {
 261:      int i;
 262:      for(i=0;i<itsmegethos;i++)
 263:      {
 264:          cout << “Summetexon stin thesi “<<nodes[i].get_thesi()<<” me id: “<<nodes[i].get_id()<<“\n”;
 265:      }
 266:  }
 267:  
 268:  void Alusida::winner()
 269:  {
 270:      if(game_over() == 1)
 271:          cout <<“To paixnidi teleiose!\n********************\nThe Winner is Summetexon with ID:”<<nodes[0].get_id()<<“\n********************\n\n”;
 272:      else
 273:          cout<<“To paixnidi den teleiose akoma!\n\n”;
 274:  }
 275:  
 276:  
 277:  
 278:  /********************************************************************/
 279:  
 280:  void main(void)
 281:  {
 282:      int i,k,plithos;
 283:      cout << “Doste to plithos ton summetexonton:\n”;
 284:      cin >> plithos;
 285:      Alusida myAlusida(plithos);
 286:      cout << “ARXIKH ALYSIDA.\n”;
 287:      myAlusida.print_chain();
 288:      cout << “***************\n\n”;
 289:      for(i=0;i<plithos-1;i++)
 290:      {
 291:          for(k=0;k<rand() % 10;k++)
 292:          {
 293:              cout<<“->HIT\n”;
 294:              myAlusida.hit();
 295:              myAlusida.print_chain();
 296:              cout << “\n”;
 297:          }
 298:          cout << “->STOP TUNE\n”;
 299:          myAlusida.stop_tune();
 300:          cout << “->RESUME\n”;
 301:          myAlusida.resume();
 302:          myAlusida.print_chain();
 303:          cout << “\n”;
 304:      }
 305:      myAlusida.winner();
 306:  
 307:  }

.csharpcode, .csharpcode pre { font-size: small; color: black; font-family: consolas, “Courier New”, courier, monospace; background-color: #ffffff; /*white-space: pre;*/ } .csharpcode pre { margin: 0em; } .csharpcode .rem { color: #008000; } .csharpcode .kwrd { color: #0000ff; } .csharpcode .str { color: #006080; } .csharpcode .op { color: #0000c0; } .csharpcode .preproc { color: #cc6633; } .csharpcode .asp { background-color: #ffff00; } .csharpcode .html { color: #800000; } .csharpcode .attr { color: #ff0000; } .csharpcode .alt { background-color: #f4f4f4; width: 100%; margin: 0em; } .csharpcode .lnum { color: #606060; }

Share and Enjoy: These icons link to social bookmarking sites where readers can share and discover new web pages.
  • bodytext
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google

Leave a comment

Name: (Required)

eMail: (Required)

Website:

Comment: