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.