package equips; import java.io.*; import EDU.gatech.cc.is.util.Vec2; import EDU.gatech.cc.is.abstractrobot.*; import jess.*; public class javajess extends ControlSystemSS { FileInputStream clp; int primeravez = 1; Rete jess_engine; Jesp parser; NullDisplay nd; public void Configure() { try { clp=new FileInputStream("decisio.clp"); nd = new NullDisplay(); jess_engine=new Rete(nd); parser=new Jesp(clp,jess_engine); } catch (FileNotFoundException fnf) { System.out.println("error fitxer no trobat"); } catch (IOException ioe) { System.out.println("error excepcio"); } } public int TakeStep() { Vec2 result,ball,jug0=new Vec2(0,0),jug1=new Vec2(); Vec2 array[]; long curr_time = abstract_robot.getTime(); // posicio de la pilota ball = abstract_robot.getBall(curr_time); // posicio dels jugadors array=abstract_robot.getTeammates(curr_time); if (array.length>0) jug1=array[0]; try { jess_engine.store("pilotax",new Value(ball.x, RU.FLOAT)); jess_engine.store("pilotay",new Value(ball.y, RU.FLOAT)); jess_engine.store("jugador0x",new Value(jug0.x,RU.FLOAT)); jess_engine.store("jugador0y",new Value(jug0.y,RU.FLOAT)); jess_engine.store("jugador1x",new Value(jug1.x,RU.FLOAT)); jess_engine.store("jugador1y",new Value(jug1.y,RU.FLOAT)); if(primeravez==1) { do { parser.parse(false); } while (clp.available()>0); primeravez = 0; } else { jess_engine.executeCommand("(reset)"); jess_engine.executeCommand("(assert (fet obtenir_posicions))"); jess_engine.executeCommand("(run)"); } Value v=jess_engine.fetch("ir"); if (v.intValue()==0) { // fem que el robot apunti a la pilota abstract_robot.setSteerHeading(curr_time, ball.t); // que vagi corren abstract_robot.setSpeed(curr_time, 1.0); // que xuti si pot if (abstract_robot.canKick(curr_time)) abstract_robot.kick(curr_time); } else { // fem que el robot apunti a la porteria abstract_robot.setSteerHeading(curr_time, abstract_robot.getOurGoal(curr_time).t); // que vagi corren abstract_robot.setSpeed(curr_time, 1.0); } } catch (ReteException re) { re.printStackTrace(nd.stderr()); } catch (IOException ioe) { System.out.println("error excepcio a takestep"); } // tell the parent we're OK return(CSSTAT_OK); } }