Пример #1
0
 /// <summary>
 /// Moves the creature in a given direction if that is possible and drains energy as needed
 /// </summary>
 /// <param name="dir">The direction to move in</param>
 private void move(Direction dir)
 {
     int energyDiv = speed / 2;
     if (energyDiv < 1)
     {
         energyDiv = 1;
     }
     int energyCost = 20 / energyDiv;
     if (isStealthy())
     {
         energyCost *= 2;
     }
     int[] newLoc = getLocationFromDirection(dir);
     if (world.tileIsClear(newLoc[1], newLoc[0]))
     {
         if(canAct(energyCost)) //if it can afford the energy cost
         {
             world.clearTile(getLocationXY()[0], getLocationXY()[1]);
             this.setLocation(newLoc[0], newLoc[1]); //update location
             world.addCreature(newLoc[0], newLoc[1], this);
             this.drainEnergy(energyCost); //drain energy
         }
     }
     else if (world.creatureAt(getLocationXY()[1], getLocationXY()[0]))
     {
         world.getCreatureAt(getLocationXY()[1], getLocationXY()[0]).spotted();
     }
     else
     {
         if (!surrounded())
         {
             if (random.Next(2) > 0)
             {
                 move(dir.right());
             }
             else
             {
                 move(dir.left());
             }
         }
     }
 }