0105 fånga pumpa

Efter kapitel 4 är du redo för att skriva detta spel.

Det är viktigt att testa ofta. Det är lättare att hitta eventuella fel om man bara har lagt till lite kod sedan man testade senast.

Klassen Pumpkin

Bilden pumpkin.png finns under food.

Egenskaper

Lägg till objektvariabeln speed. Låt den vara 0 från början.

Metoden act

Öka objektvariabeln speed med 1.

Flytta pumpan nedåt, så många pixlar som speed anger. Tips: metoderna setLocation, getX, och getY i Actor.

Om pumpans y-koordinat är större än 380, så anropas följande rad för att ta bort pumpan.

  getWorld().removeObject(this);

Kan du förklara raden ovan?

Klassen MyWorld

Välj en bakgrundsbild.

Egenskaper

Lägg till två objektvariabler. Dessa är timeLeft och timeToNewPumpkin. Låt den få startvärdena 500 och 0. Den första variabeln ska användas för att räkna ner tiden i spelet. Den andra variabeln används för att ange hur lång tid det är tills de kommer en ny pumpa.

Metoden act

Minska objektvariabeln timeLeft med ett.

Minska även objektvariabeln timeToNewPumkin med ett.

Visa hur lång tid det är kvar uppe till höger. Tips:

  showText("" + variabelnamn, 100, 200); 

Om objektvariabeln timeLeft är mindre än 1 så:

  • Visa texten well done i mitten.
  • Stoppa spelet.

Om objektvariabeln timeToNewPumpkin är mindre eller lika med 0 så:

  • Gör en lokal variabel myPumpkin.
  • Skapa ett objekt av klassen Pumpkin och lägg i variabeln myPumpkin.
  • Skapa en lokal variabel x som kan innehålla heltal.
  • Ge x ett slumpmässigt värde mellan 0 och 599.
  • Lägg till pumpan i världen på ovanstående x-koordinat och på y-koordinaten 0. Tips: se metoden prepare i samma klass.
  • Ge objektvariabeln timeToNewPumpkin ett slumpmässigt värde mellan 10 och 19.

TESTA

Klassen Aligator

Lägg till objektvariabeln score. De ska kunna innehålla heltal samt vara noll från start.

Metoden move

Om vänster piltangent trycks ned flyttas krokodilen 10 pixlar åt vänster. På samma sätt flyttas den 10 pixlar åt höger med hjälp av höger piltangent. Tips: metoderna setLocation, getX, och getY.

Se till att metoden move anropas i act-metoden.

Metoden handleTouchingPumpkin

Om krokodilen vidrör en pumpa så:

  • Ta bort pumpan.
  • Öka poängen med ett, objektvariabeln score.
  • Visa poäng uppe till vänster. Tips koden nedan.

    getWorld().showText("score" + score, 200, 100);

Se till att metoden handleTouchingPumpkin anropas i act-metoden.

Metoden act

Anropa metoden move och handleTouchingPumpkin.

Extra

Krokodilen backar

Krokodile ska alltid gå med nosen först.

Inga poäng visas från start

Flytta koden som visar poängen i klassen Aligator till en metod som du döper till showScore. Anropa metoden där du tog bort metoden.

Poängen kan visas från start i klassen MyWorld på följande vis. I metoden prepare finns variabeln aligator. Lägg till följande kod efter att krokodilen lagts till i världen.

  aligator.showScore();

Vad händer ovan? Jämför med

  Greenfoot.stop();

Flytta krokodilen med acceleration

Nu ska vi göra så att det tar ett tag för krokodilen att få upp farten samt att stanna.

All kod skrivs i klassen Aligator.

Lägg till en objektvariabel speed och låt den vara noll från start.

metoden changeSpeed

Metoden tar en parameter delta som anger hur mycket som objektvariabeln speed ska ändras.

Ändra på objektvariabeln speed.

Se till att den håller sig i intervallet -30 och 30.

metoden move

Ändra så att krokodilen flyttas speed pixlar i sidled.

Om vänster piltangent trycks in anropas metoden changeSpeed med parametern -10.

Om höger piltangent trycks in anropas metoden changeSpeed med parametern 10 istället.

Om ingen av knapparna tryckts in minskas farten, speed ska komma 10 närmare 0. Tänk på att speed kan vara både negativ och positiv.