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 medimport
.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);
}
}