public void step(SimState iModel) {
    Model aModel = (Model) iModel;
    if (!vivant()) {
      this.getStp().stop();
      aModel.getYard().remove(this);
      aModel.decNbFiremen();
    } else if (aModel.schedule.getSteps() % 5 == 0) // petite régénération
    {
      this.setResistance(getResistance() + 1);
    }

    AgentFeu aAgentFeu = null;
    int i;

    for (i = 0; i < aModel.getYard().getHeight(); i++) {
      Bag aAgents =
          aModel
              .getYard()
              .getNeighborsMaxDistance(this.getX(), this.getY(), i, false, null, null, null);
      ArrayList<AgentFeu> agentsFeu = new ArrayList<AgentFeu>();
      for (Object item : aAgents) {
        if (item instanceof AgentFeu && ((AgentFeu) item).getResistance() > 0)
          agentsFeu.add((AgentFeu) item);
      }
      if (agentsFeu.size() > 0) {
        Random random = new Random();
        int index = random.nextInt(agentsFeu.size());
        aAgentFeu = agentsFeu.get(index);
        break;
      }
    }

    if (i == 0 || i == 1) eteindreFeu(aModel, aAgentFeu);
    else if (aAgentFeu != null) deplace(aAgentFeu, aModel, i);
  }
 public boolean deplacementPossible(Model iModel, int x, int y) {
   try {
     for (Object item : iModel.getYard().getObjectsAtLocation(x, y)) {
       if (item instanceof AgentPieton) {
         return false;
       }
     }
   } catch (Exception e) {
     //			System.out.println("["+x+","+y+"]");
     //			System.exit(0);
     return false;
   }
   return true;
 }
 public void deplace(Model iModel, int x, int y) {
   this.setX(x);
   this.setY(y);
   iModel.getYard().setObjectLocation(this, x, y);
 }