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.