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