Package cz.cuni.mff.abacs.burglar.logics.objects.agents

Examples of cz.cuni.mff.abacs.burglar.logics.objects.agents.Burglar


  public void planningFinished(
      PlanningThread thread
  ) {
    this._mapState = MapState.PLANNED;
   
    Burglar burglar = this._map.getBurglar();
    if(
      burglar.hasInstructions() == false &&
      burglar.isSatisfied() == false
    ){
      this._mapState = MapState.LOST;
      System.out.println("- Lost");
    }
  }
View Full Code Here


    List<Integer> originalRooms 
  ) {
    List<Integer> filteredRooms = new LinkedList<Integer>(originalRooms);
   
    // remove current room:
    Burglar burglar = this._map.getBurglar();
    if(filteredRooms.contains(burglar.getRoomId()))
      filteredRooms.remove(filteredRooms.indexOf(burglar.getRoomId()));
   
    // remove aim room:
    if(filteredRooms.contains(burglar.getAimId()))
      filteredRooms.remove(filteredRooms.indexOf(burglar.getAimId()));
   
   
    // remove the rooms that can't be walked around:
    List<Integer> trapRooms = new ArrayList<Integer>(1);
    List<Integer> roomsToControl = new ArrayList<Integer>(filteredRooms);
View Full Code Here

   * @return string problem
   */
  public static String generateDiscoveringBurglarProblem(GameMap map) {
    StringBuilder builder = new StringBuilder();
   
    Burglar burglar = map.getBurglar();
   
    // generate the header:
    builder.append("(define (problem burglar)\n");
    builder.append("\t(:domain burglar)\n");
   
    // ----------------------------
    // list the objects:
    builder.append(STR_TAG_OBJECTS);
   
    // sort positions by type:
    List<Position> positions = burglar.getBeliefBase().getKnownPositions();
   
    String strPositions = PDDLGenerator.generatePositionList(positions, true);
    builder.append(strPositions);
   
    // rooms:
    List<Room> rooms = map.getRooms();
    String strRooms = PDDLGenerator.generateRoomList(rooms);
    builder.append(strRooms);
   
    // items:
    List<Item> items = map.getItems();
    String strItems = PDDLGenerator.generateItemList(items);
    builder.append(strItems);
   
    // agents:
    List<Agent> agents = new ArrayList<Agent>();
    agents.add(burglar);
    String strAgents = PDDLGenerator.generateAgentList(agents);
    builder.append(strAgents);
   
    builder.append(STR_TAG_END);
   
    // ----------------------------
    // init:
    builder.append(STR_TAG_INIT);
   
    // init position details:
    for(Position pos : positions){
      if(pos.isTypeOf(BaseObject.Type.DOOR)){
        String posName = generateObjectName(pos);
       
        if(((Lockable)pos).isClosed())
          generateInlineTag(builder, STR_TAG_CLOSED, posName);
        if(((Lockable)pos).isLocked())
          generateInlineTag(builder, STR_TAG_LOCKED, posName);
        if(((Lockable)pos).getKeyId() > 0){
          generateInlineTag(
              builder,
              STR_TAG_NEEDS_KEY,
              posName,
              generateObjectName(((Lockable)pos).getKeyId())
          );
        }
       
        Room[] connectedRooms = ((Door)pos).getRooms();
       
        generateInlineTag(
            builder,
            STR_TAG_DOOR_CONNECTS,
            posName,
            generateObjectName(connectedRooms[0]),
            generateObjectName(connectedRooms[1])
        );
       
        generateInlineTag(
            builder,
            STR_TAG_DOOR_CONNECTS,
            posName,
            generateObjectName(connectedRooms[1]),
            generateObjectName(connectedRooms[0])
        );
       
        generateInlineTag(
            builder,
            STR_TAG_POSITION_IN,
            posName,
            generateObjectName(connectedRooms[0])
        );
       
        generateInlineTag(
            builder,
            STR_TAG_POSITION_IN,
            posName,
            generateObjectName(connectedRooms[1])
        );
      }
     
    }
   
    // init agent:
   
    generateInlineTag(
        builder,
        STR_TAG_AGENT_NEAR,
        generateObjectName(burglar),
        generateDummyName(STR_TYPE_FLOOR)
    );
   
    generateInlineTag(
        builder,
        STR_TAG_POSITION_IN,
        generateDummyName(STR_TYPE_FLOOR),
        generateObjectName(burglar.getRoom())
    );
   
    generateInlineTag(
        builder,
        STR_TAG_AGENT_IN,
        generateObjectName(burglar),
        generateObjectName(burglar.getRoom())
    );
   
    generateInlineTag(
        builder,
        STR_TAG_VISITED,
        generateObjectName(burglar),
        generateObjectName(burglar.getRoom())
    );
   
    for(Item item : burglar.getItems()){
      generateInlineTag(
          builder,
          STR_TAG_CONTAINS,
          generateObjectName(burglar),
          generateObjectName(item)
      );
    }
   
    // finish init:
    builder.append(STR_TAG_END);
   
    // ----------------------------
    // define goal:
    builder.append("\t(:goal\n\t\t(and\n");
   
    generateInlineTag(
        builder,
        '\t' + STR_TAG_AGENT_IN,
        generateObjectName(burglar),
        generateObjectName(burglar.getAimId())
    );
   
    generateInlineTag(
        builder,
        '\t' + STR_TAG_CONTAINS,
        generateObjectName(burglar),
        generateObjectName(burglar.getItemIdToCollect())
    );
   
    builder.append("\t\t)\n\t)\n");
   
    // finish:
View Full Code Here

      );
    }else{
     
      switch(agent.getType()){
      case BURGLAR:
        Burglar burglar = (Burglar)agent;
        generateInlineTag(
            builder,
            '\t' + STR_TAG_AGENT_IN,
            generateObjectName(burglar.getId()),
            generateObjectName(burglar.getAimId())
        );
       
        generateInlineTag(
            builder,
            '\t' + STR_TAG_CONTAINS,
            generateObjectName(burglar),
            generateObjectName(burglar.getItemIdToCollect())
        );
     
        builder.append("\t\t");
        builder.append(STR_TAG_NOT);
        builder.append(STR_TAG_OBSERVED);
View Full Code Here

   
    Position position = map.getPosition(positionId);
    Room aim = map.getRoom(aimId);
   
    // create the object:
    Burglar burglar = new Burglar(id, position, aim, collectId, map);
   
    for(int i = 0; i < rawList.getLength(); i++){
      Node node = rawList.item(i);
     
      // fill the belief base object:
      ifnode.getNodeType() == Node.ELEMENT_NODE &&
        node.getNodeName().equals(STR_BELIEFBASE)
      ){
        Element mind = (Element)node;
        BeliefBase knowledge = burglar.getBeliefBase();
        knowledge.seenFromNear(XMLLoader.getPositions(mind, map));
      }
     
      // fill the inventory:
      ifnode.getNodeType() == Node.ELEMENT_NODE &&
        node.getNodeName().equals(STR_INVENTORY)
      ){
        Element inventory = (Element)node;
        List<Item> items = XMLLoader.getItems(inventory, map);
        map.addItems(items);
        burglar.addItems(items);
      }
    }
    return burglar;
  }
View Full Code Here

TOP

Related Classes of cz.cuni.mff.abacs.burglar.logics.objects.agents.Burglar

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.