0160 Mouse Precision
Spelet i korthet följer. Klicka på grön rektangel. Därefter följer den musens rörelser. Målet är att komma till den röda roterande kvadraten utan att vidröra en vägg. Vidrör den gröna rektangeln en vägg får man börja om.
Teori
Klasserna Goal
, Obstacle
och Player
är alla rektanglar och har en del gemensamt. Det som är gemensamt ligger i klassen Rectangle
.
Förberedelse - utmaning
1
Studera dokumentationen för metoden getMouseInfo
i klassen Greenfoot
.
Skriv kod för att anropa getMouseInfo
på giltigt vis och spara resultatet i en variabel.
2
Studera också dokumentationen för metoderna getX
och getY
i klassen MouseInfo
.
Skriv kod för att metoden getX
på giltigt vis med hjälp av variabeln från föregående uppgift.
introduktion
Gör klasserna enligt instruktionerna nedan och placera ut dem som i bilden ovan.
Klassen Rectangle ärver från Actor
Konstruktor
Konstruktorn tar två parametrar width och height.
Lokal variabel image av typen GreenfootImage
Hämta objektets bild med metoden getImage
skala bilden till storleken width, height
sätt färgen till R=100, G=200 och B=100
fyll bilden med denna färg
Metoden setColor
Metoden tar en parameter som anger färgen.
hämta bilden ...
sätt färgen på ritverktyget
fyll bilden med denna färg
Klassen Obstacle ärver från Rectangle
Konstruktor
Konstruktorn tar två parametrar width och height.
super(width, height); // anropa Rectangles konstruktor
anropa metoden setColor (ärvs från Rektangel)
för att sätta färgen till R=150, G=150, B=150
Klassen Goal ärver från Rectangle
Konstruktor
super(50, 50); // anropa Rectangles konstruktor
anropa metoden setColor (ärvs från Rektangel)
för att sätta färgen till R=200, G=100 och B=100
Metoden act
sväng 9 grader
Klassen Player ärver från Rectangle
Objektvariablen isMoving
isMoving får startvärdet false
Konstruktorn
super(50, 50); // anropar Rectangles konstruktor
Metoden act
om isMoving
sätt positionen till musens
tips: getMouseInfo i Greenfoot
annars
om mus intryckt på detta objekt
tips: mouseClicked i Greenfoot
isMoving sätts till true
om vidrör ett hinder
visa texten Game over i mitten
stoppa spelet
// (**) Senare byts dessa mot
// sätt världen till ett nytt objekt av MyWorld
om vidrör mål
visa texten You made it i mitten
Klassen MyWorld
Lägg till alla objekt på rätt plats.
Ändra sedan i klassen Player vid (**) så att banan börjar om ifall grön rektangel vidrör en vägg.