예제 #1
0
  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);
  }