0080 genomgång kap 3

Lärandemål

  • Känna till skillnaden på objektmetod och klassmetod
  • Kunna anropa klassmetoder.
  • Kunna slå upp fakta i dokumentationen för klassen Greenfoot.
  • Kunna slumpa tal, styra objekt via tangentbordet, spela ljud och stoppa spelet.
  • Känna till hur man gör code completion.
  • Kunna ta bort objekt ur världen.
  • Kunna använda jämförelseoperatorer
  • Kunna använda operatorn icke.

Genomgång

Öppna little-crab i Greenfoot.

Repetition

Metodhuvud

I klassen Actor finns följande metodhuvud:

  public void turn(int angle)

Metodanrop

Anrop av metod som finns i samma klass eller någon överklass.

  turn(90);

Detta anrop kan till exempel göras i act-metoden i klassen Crab. Då kan det se ut som:

  public void act()
  {
      turn(90);
  }

Nytt

Slumptal

  //ger något av talen 0, 1, 2, 3, 4 eller 5
  Greenfoot.getRandomNumber(6) 

  //metodhuvud för getRandomNumber
  public static int getRandomNumber(int limit)

punktnotation

Anrop av metod i annan klass sker med punktnotation, se exempel ovan.

  Klassnamn.metodnamn(parametrar)

klassmetoder

exempel

  getRandomNumber

objektmetoder

exempel

  turn

Binära jämförelse operatorer

  • < mindre än
  • > större än
  • <= mindre eller lika med
  • >= större eller lika med
  • == lika (förväxlas lätt med =, som används vid tilldelning av värde)
  • != inte lika

Unär operator

! betyder inte

8 procents chans

  if (Greenfoot.getRandomNumber(100) < 8)
  {
      //8% chans att komma hit
  }

Exempel i Crab:

  /**
   * 8% chans för sväng 90 grader. 
   * Alltid sväng åt samma håll.
   */
  public void randomTurn()
  {
      if (Greenfoot.getRandomNumber(100) < 8)
      {
          //8% chans att komma hit
          turn(90);
      }
  }

Slumptalen -1, 0, 1

  Greenfoot.getRandomNumber(3) //blir 0, 1, eller 2

  Greenfoot.getRandomNumber(3) - 1 //blir -1, 0, eller 1

Exempel från Crab:

  /**
   * 8% chans för sväng.
   * Svänger mellan -45 och +45 grader.
   */
  public void randomTurn()
  {
      if (Greenfoot.getRandomNumber(100) < 8)
      {
          //8% chans att komma hit
          int angle = Greenfoot.getRandomNumber(90) - 45;
          turn(angle);
      }
  }

Metoddeklaration (eng. method definition)

Metoddeklarationen består av metodhuvud (eng. method signature) och metodkropp. Metodkroppen är det block kod som kommer efter metodhuvudet.

  /**
   * Undersök om vi har stött på en mask.
   * I så fall ät den, annars gör inget.
   */
  public void lookForWorm()
  {
      if (isTouching(Worm.class))
      {
          removeTouching(Worm.class);
      }
  }

Inmatning från tangentbordet

I klassen Greenfoot finns bland annat följande metodhuvud.

  public static boolean isKeyDown(String key)

Anrop av ovanstående metod i ett sammanhang

  if (Greenfoot.isKeyDown("up"))
  {
      // metoden finns definierad någon annan stans 
      // i klassen eller i en överklass
      moveUp();   
  }

Stoppa spelet

  Greenfoot.stop();

Ljud i spelet

  Greenfoot.playsound("filename.wav");

Code completion

  CTRL + Space