📄 humanoid.java.bak4
字号:
// Copyright (C) 2002 Takeshi Morimoto <morimoto@takopen.cs.uec.ac.jp>// All rights reserved.// Edited By Saeed Ansari and Omid AmirGhiasvandpackage yab.agent.object;import java.util.*;import MRL.Utilities.SimulatorsConstants;import yab.agent.DisasterSpace;import yab.io.object.BaseHumanoid;public abstract class Humanoid extends MovingObject { public Humanoid(int id, BaseHumanoid object, DisasterSpace world) {super(id, object, world); } private BaseHumanoid obj() {return (BaseHumanoid) object; } public int hp() {return obj().hp(); } public int damage() {return obj().damage(); } public int buriedness() {return obj().buriedness(); } private int timeToDeadFromFire; private int timeToDeadFromInjury; private int deadTime = 301; private boolean inFire = false; public void setInfire(boolean c) { inFire = c; } public boolean getInFire() { return inFire; } public void setTimeToDeadFromFire(int t) { timeToDeadFromFire = t; } public void setTimeToDeadFromInjury(int t) { timeToDeadFromInjury = t; } public int getTimeToDeadFromInjury() { return timeToDeadFromInjury; } public int getTimeToDeadFromFire() { return timeToDeadFromFire; } public boolean isBuried() { return (buriedness() > 0); } public boolean needLoad() { return (hp() > 0 && buriedness() == 0 && !(position() instanceof AmbulanceTeam) && !(motionlessPosition() instanceof Refuge) && this instanceof Civilian && damage() >= SimulatorsConstants.CIVILIAN_UNACTABLE_DAMAGE); } public int lifespan() { if (damage() == 0) return Integer.MAX_VALUE; return hp() / damage(); } public boolean needRescue() { return (hp() > 0 && buriedness() > 0 && !(motionlessPosition() instanceof Refuge)); } public void updateDistance(RealObject amPositoion, List fires) { distanceToMe = (float) amPositoion.distance(this.motionlessPosition()); calDistanceToNearestFire(fires); } /** * updateValue */ public void updateValue() { if (timeToDeadFromFire < timeToDeadFromInjury) deadTime = timeToDeadFromFire; else deadTime = timeToDeadFromInjury; if (deadTime > buriedness() / 3) value = 100000; else value = deadTime + distanceToMe / 100 + 3 * buriedness(); if (this instanceof PoliceForce) value = value / 120; else if (this instanceof FireBrigade) value = value / 100; else if (this instanceof AmbulanceTeam) value = value / 90; } public float getValue() { return value; } private void calDistanceToNearestFire(List fires) { if (fires.isEmpty()) { distanceToNearestFireSite = Integer.MAX_VALUE; return; } Iterator it = fires.iterator(); Building build = (Building) it.next(); distanceToNearestFireSite = (float)this.motionlessPosition().distance(build. motionlessPosition()); for (; it.hasNext(); ) { build = (Building) it.next(); float tempDistance = (float)this.motionlessPosition().distance(build. motionlessPosition()); if (tempDistance < distanceToNearestFireSite) { distanceToNearestFireSite = tempDistance; } }// distanceToNearestFireSite = motionlessPosition().getMinDist(fires); } private int myCloneSize = 1; public float distanceToNearestFireSite; private float timeToBurned; private float distanceToRefuge; public float distanceToMe; // distance to Ambulance that add this civilian to his set private float estimateLifeTime = 301; private float value = 0; private boolean accessible = true; public int notAccseesibleTime = 0; private int addTime = 0; // time that agent see the this Humanoid private int getAddTime() { return addTime; } public void setAddTime(int t) { addTime = t; } public boolean isAccessible() { return accessible; } public void setAccesible(boolean b) { accessible = b; } public boolean isRescueAble(int numOfAT) { if (lifespan() - (buriedness() / numOfAT) > 0) return true; else return false; } public int timeToRescue(int numofAT) { return (int) (java.lang.Math.ceil(buriedness() / numofAT)) + 5; }//// DEBUG: public String toString() { /* return "Huma: id=" + id + " time=" + time() + " buriedness=" + buriedness() + " damage=" + damage() + " hp=" + hp() + " position=(" + position() + ")"// + " nl=" + needLoad()// + " nr=" + needRescue()// + " vi=" + isVisible() ; // + " " + (Object) this; */ return super.toString(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -