private void shoot()
    {
        if(shotsRemaining > 0) {
            shotsRemaining--;
            // Find all locations to be hit by bullet
            List<Location> adjacent = field.adjacentLocations(location);
            List<Location> locationsHit = new LinkedList<Location>();
            locationsHit.add(adjacent.get(0));
            Location startLoc = locationsHit.get(0);
            int roffset = (location.getRow() - startLoc.getRow());
            int coffset = (location.getCol() - startLoc.getCol());
            for(int i = 1; i < SHOT_RANGE; i++) {
               int nextRow = startLoc.getRow() + roffset;
               int nextCol = startLoc.getCol() + coffset;
               if ((nextRow >= 0 && nextRow < field.getDepth()) && (nextCol >= 0 && nextCol < field.getWidth())) {
                   locationsHit.add(new Location(nextRow, nextCol));
                   startLoc = locationsHit.get(i);
               }
               else {
                   break;
               }
            }
            
            // Shoot all deer in the locations to be hit
            Iterator<Location> it = locationsHit.iterator();
            while(it.hasNext()) {
                Location where = it.next();
                Object animal = field.getObjectAt(where);
                if(animal instanceof Deer) {
                    Deer deer = (Deer) animal;
                    if(deer.isActive()) {
                        deer.setDead();
                    }
                }
            }
        }
        else {
            // Start reloading
            reloadStep = MAX_SHELLS;
        }
    }