Nisheeth

Error in Enemy Class

Aug 21st, 2011
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.25 KB | None | 0 0
  1. void Enemy::Move(PCHARACTER A, DungeonC* D, bool& cond, bool& win)
  2. {
  3.     Trap* trap = new Trap;
  4.     Treasure* treasure = new Treasure;
  5.     Player* player = new Player;
  6.  
  7.     char cell;
  8.  
  9.     if (D->ShowCell(Offset(X-1,Y,D->rWidth())) == player->rPeg())
  10.     {
  11.         win = cond = false;
  12.         D->AddPeg(this,X-1,Y);
  13.         D->RemovePeg(X,Y);
  14.        
  15.         delete trap;
  16.         delete treasure;
  17.         delete player;
  18.        
  19.         return;
  20.     }
  21.  
  22.     if (D->ShowCell(Offset(X+1,Y,D->rWidth())) == player->rPeg())
  23.     {
  24.         win = cond = false;
  25.         D->AddPeg(this,X+1,Y);
  26.         D->RemovePeg(X,Y);     
  27.        
  28.         delete trap;
  29.         delete treasure;
  30.         delete player;
  31.  
  32.         return;
  33.     }
  34.  
  35.     if ( D->ShowCell(Offset(X,Y+1,D->rWidth())) == player->rPeg())
  36.     {
  37.         win = cond = false;
  38.         D->AddPeg(this,X,Y+1);
  39.         D->RemovePeg(X,Y);     
  40.        
  41.         delete trap;
  42.         delete treasure;
  43.         delete player;
  44.        
  45.         return;
  46.     }
  47.  
  48.     if (D->ShowCell(Offset(X,Y-1,D->rWidth())) == player->rPeg())
  49.     {
  50.         win = cond = false;
  51.         D->AddPeg(this,X,Y-1);
  52.         D->RemovePeg(X,Y);     
  53.        
  54.         delete trap;
  55.         delete treasure;
  56.         delete player;
  57.        
  58.         return;
  59.     }
  60.  
  61.     int Xdif, Ydif;
  62.     Xdif = A->GetX() - X;
  63.     Ydif = A->GetY()-Y;
  64.     int Diff = Xdif-Ydif;
  65.  
  66.     if (Diff == 0)
  67.     {
  68.         if (rand()%2)
  69.             Diff -= 1;
  70.         else
  71.             Diff += 1;
  72.     }
  73.  
  74.     if ((A->GetX() < X) && Diff > 0)
  75.     {
  76.         cell = D->ShowCell(Offset(X-1,Y,D->rWidth()));
  77.        
  78.         if (cell == player->rPeg())
  79.         {
  80.             cond = false;
  81.             win = false;
  82.         }
  83.         if (cell != trap->rPeg() && cell != treasure->rPeg())
  84.         {
  85.             D->AddPeg(this,X-1,Y);
  86.             D->RemovePeg(X,Y);
  87.  
  88.             X -= 1;
  89.         }      
  90.     }
  91.  
  92.    
  93.     else if ((A->GetX() < Y) && Diff < 0)
  94.     {
  95.         cell = D->ShowCell(Offset(X,Y-1,D->rWidth()));
  96.         if (cell != trap->rPeg() && cell != treasure->rPeg())
  97.         {
  98.             D->AddPeg(this,X,Y-1);
  99.             D->RemovePeg(X,Y);
  100.  
  101.             Y -= 1;
  102.         }
  103.     }
  104.  
  105.     else if ((A->GetX() > X) && Diff > 0)
  106.     {
  107.         cell = D->ShowCell(Offset(X+1,Y,D->rWidth()));
  108.         if (cell != trap->rPeg() && cell != treasure->rPeg())
  109.         {
  110.             D->AddPeg(this,X+1,Y);
  111.             D->RemovePeg(X,Y);
  112.  
  113.             X += 1;
  114.         }
  115.     }
  116.  
  117.     else if ((A->GetX() > Y) && Diff < 0)
  118.     {
  119.         cell = D->ShowCell(Offset(X,Y+1,D->rWidth()));
  120.         if (cell != trap->rPeg() && cell != treasure->rPeg())
  121.         {
  122.             D->AddPeg(this,X,Y+1);
  123.             D->RemovePeg(X,Y);
  124.  
  125.             Y += 1;
  126.         }
  127.     }
  128.  
  129.     delete trap;
  130.     delete treasure;
  131.     delete player;
  132.  
  133.     return;
  134. }
Advertisement
Add Comment
Please, Sign In to add comment