Exemple #1
0
  // get the object as a byte array
  public synchronized byte[] getAsByteArray() {
    ByteBuffer buffer = ByteBuffer.allocate(packet_size);
    buffer.order(Constants.NETWORK_BYTEORDER);

    buffer.put(Constants.STRUCT_HEADER.getBytes(), 0, 4);
    buffer.putInt(Constants.STRUCT_VERSION);

    buffer.put(numPlayers);
    buffer.put(gameState);
    buffer.put(firstHalf);
    buffer.put(kickOffTeam);

    buffer.put(secGameState);
    buffer.put(dropInTeam);
    buffer.putShort(dropInTime);

    buffer.putInt(estimatedSecs);

    for (byte team = 0; team < Constants.NUM_TEAMS; team++) {
      buffer.put(getTeamNumber(team));
      buffer.put(team);
      buffer.put(getGoalColour(team));
      buffer.put(getScore(team));

      for (byte i = 0; i < Constants.MAX_NUM_PLAYERS; i++) {
        RobotInfo robot = teams[team].getPlayer(i);
        buffer.putShort(robot.getPenalty());
        buffer.putShort(robot.getSecsTillUnpenalised());
      }
    }

    return buffer.array();
  }
  public SimpleKeyController() {
    super();

    robot = RobotInfo.getRobot();
    robot.connect();
    wheels = robot.requestResource(WheelsController.class, this);

    drawableFrame =
        new DrawableFrame() {
          private static final long serialVersionUID = 1L;

          @Override
          public void dispose() {
            super.dispose();
            robot.freeResource(wheels, this);
            Phybots.getInstance().dispose();
          }

          public void paint2D(Graphics2D g) {
            g.setColor(getBackground());
            g.fillRect(0, 0, getWidth(), getHeight());
            g.setColor(getForeground());
            g.drawString("Status: " + wheels.getStatus().toString(), 10, 20);
          }
        };
    drawableFrame.setFrameSize(320, 240);
    drawableFrame.addKeyListener(
        new KeyAdapter() {

          @Override
          public void keyPressed(KeyEvent e) {
            switch (e.getKeyCode()) {
              case KeyEvent.VK_UP:
              case KeyEvent.VK_KP_UP:
                goForward();
                break;
              case KeyEvent.VK_LEFT:
              case KeyEvent.VK_KP_LEFT:
                spinLeft();
                break;
              case KeyEvent.VK_RIGHT:
              case KeyEvent.VK_KP_RIGHT:
                spinRight();
                break;
              case KeyEvent.VK_DOWN:
              case KeyEvent.VK_KP_DOWN:
                goBackward();
                break;
              case KeyEvent.VK_ESCAPE:
              default:
                stop();
                break;
            }
            drawableFrame.repaint();
          }
        });
  }