0140 genomgång kap 7

Programmet gör

Nyckelpigan (Walker) kan flyttas med piltangenterna. Om nyckelpigan puttar på ett körsbär underifrån, flyttas samtliga körsbär uppåt.

Nyheter

  • Anrop av metod på annat objekt.

  • Datastrukturer i form av lista, klassen List.

  • Använda biblioteksklasser, i detta exemplet klassen List. Görs med import.

  • for-each-slinga

  • null

Koden följer nedan

Klassen Walker

  import greenfoot.*;
  import java.util.List;

  /**
   * En nyckelpiga som kan flyttas med piltangenterna.
   * 
   * @author Rikard Karlsson
   * @version 2016-02-07
   */
  public class Walker extends Actor
  {
      /**
       * Anropas av Greenfoot varje gång som en ny filmruta 
       * ska ritas.
       */
      public void act() 
      {
          checkKeys();
      }
      /**
       * Kontrollera om någon piltangent är intryckt. 
       * Flytta i så fall i given riktning.
       */
      private void checkKeys()
      {
          if (Greenfoot.isKeyDown("up"))
          {
              setLocation(getX(), getY() - 5);
              checkIntersectionUp();
          }
          else if (Greenfoot.isKeyDown("down"))
          {
              setLocation(getX(), getY() + 5);
          }
          else if (Greenfoot.isKeyDown("left"))
          {
              setLocation(getX() - 5, getY());
          }
          else if (Greenfoot.isKeyDown("right"))
          {
              setLocation(getX() + 5, getY());
          }
      }
      /**
       * Flytta på alla körsbär uppåt, om nyckelpigan går på dem 
       * underifrån.
       */
      private void checkIntersectionUp()
      {
          if (isTouching(Cherry.class))
          {
              World theWorld = getWorld();
              List<Cherry> cherryList;
              cherryList = theWorld.getObjects(Cherry.class);
              if (cherryList != null)
              {
                  for (Cherry currentCherry: cherryList)
                  {
                      currentCherry.moveUp(5);
                  }
              }
          }
      }

}

Klassen Cherry

  import greenfoot.*;

  /**
   * Ett körsbär.
   * 
   * @author Rikard Karlsson
   * @version 2016-02-07
   */
  public class Cherry extends Actor
  {
      public void moveUp(int amount)
      {
          setLocation(getX(), getY() - amount);
      }
  }