Esempio n. 1
0
  public void setupPortrayals() {
    PacMan pacman = (PacMan) state;

    // Create the agent portrayal
    agentPortrayal.setField(pacman.agents);

    // The Pac.  Note that you can have multiple pacs, each with different tags, and set it up like
    // below to display them with different colors.  For now we've got it set to one pac.
    agentPortrayal.setPortrayalForClass(
        Pac.class,
        new PacPortrayal(pacman, Color.yellow) {
          public void draw(Object object, Graphics2D graphics, DrawInfo2D info) {
            if (((Pac) object).tag == 0) color = Color.yellow;
            else color = Color.green;
            super.draw(object, graphics, info);
          }
        });

    // Blinky is a red ghos unless he's scared, then he's a blue ghost.
    agentPortrayal.setPortrayalForClass(
        Blinky.class,
        new FacetedPortrayal2D(
            new SimplePortrayal2D[] {
              new ImagePortrayal2D(this.getClass(), "images/blinkyu.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/blinkyl.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/blinkyd.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/blinkyr.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/frightened.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/frightened2.png", 2),
            }));

    // Pinky is a pink ghost unless he's scared, then he's a blue ghost.
    agentPortrayal.setPortrayalForClass(
        Pinky.class,
        new FacetedPortrayal2D(
            new SimplePortrayal2D[] {
              new ImagePortrayal2D(this.getClass(), "images/pinkyu.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/pinkyl.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/pinkyd.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/pinkyr.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/frightened.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/frightened2.png", 2),
            }));

    // Inky is a cyan ghost unless he's scared, then he's a blue ghost.
    agentPortrayal.setPortrayalForClass(
        Inky.class,
        new FacetedPortrayal2D(
            new SimplePortrayal2D[] {
              new ImagePortrayal2D(this.getClass(), "images/inkyu.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/inkyl.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/inkyd.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/inkyr.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/frightened.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/frightened2.png", 2),
            }));

    // Clyde is a orange ghost unless he's scared, then he's a ghost rectangle.
    agentPortrayal.setPortrayalForClass(
        Clyde.class,
        new FacetedPortrayal2D(
            new SimplePortrayal2D[] {
              new ImagePortrayal2D(this.getClass(), "images/clydeu.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/clydel.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/clyded.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/clyder.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/frightened.png", 2),
              new ImagePortrayal2D(this.getClass(), "images/frightened2.png", 2),
            }));

    // Create the dot portrayal (also the energizers)
    dotPortrayal.setField(pacman.dots);

    // Energizers are big
    dotPortrayal.setPortrayalForClass(Energizer.class, new OvalPortrayal2D(Color.white, 1));

    // dots are small
    dotPortrayal.setPortrayalForClass(Dot.class, new OvalPortrayal2D(Color.white, 0.4));

    // set up the maze portrayal
    mazePortrayal.setPortrayalForAll(new MazeCellPortrayal(pacman.maze));
    mazePortrayal.setField(pacman.maze);

    // add the RateAdjuster
    scheduleRepeatingImmediatelyAfter(new RateAdjuster(FRAMES_PER_SECOND));

    // reschedule the displayer
    display.reset();

    // redraw the display
    display.repaint();
  }