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 (ctrl + space).
  • 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örelseoperatorer

  • < 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