0118 kap 5 - flappy bird

Fågeln faller fritt. Då mellanslag trycks ned ändras fågelns fart i y-led. Fågeln rör sig aldrig i x-led. Bakgrunden och undren skrollas åt vänster. Spelet tar slut om fågeln kolliderar med ett hinder eller bildskärmens övre eller undre kant. Poäng ges för varje pixel som fågeln flugit i x-led. Mer detaljer följer nedan.

Bilder enligt

  • MyWorld ingen
  • Background: finns längst ner på sidan
  • Bird: animals/pelican.png
  • Obstacle: vi ritar den i klassen senare

Klassen MyWorld

Ändra på första raden i konstruktorn så att den blir:

  super(500, 500, 1, false);

false gör så att spelobjekt kan finnas utanför bild.

Klassen Background

Metoden act

  Flytta 2 pixlar åt vänster
  Om den är vid -250 
      så flytta den 1000 pixlar åt höger

Klassen MyWorld igen

Lägg till två objekt av klassen Background på koordinaterna (0, 250) och (500, 250). Gör det på lämpligt vis. Se gammal kod.

Testa att bakgrunden skrollar utan att man kan se skarvarna mellan de båda bakgrunderna.

Klassen Obstacle

Konstruktor

Konstruktorn tar två parametrar width och height. Båda kan innehålla heltal.

  • Deklarera en lokal variabel image av datatypen GreenfootImage.
  • Gör ett objekt av klassen GreenfootImage. Låt objektet ha bredden width och höjden height. Lägg objektet i image.

Lägg till följande kod:

  image.setColor(new Color(240, 90, 60));
  image.fill();
  • Anropa metoden setImage och bifoga image som parameter.

Metoden act

  flytta 3 pixlar åt vänster

Observera att hindren flyttar snabbare än bakgrunden. Hindren är ju närmare betraktaren. Härnäst ska hindren läggas till i världen.

Klassen MyWorld igen

Objektvariabler

Lägg till följande objektariabler som kan innehålla heltal:

  pixelsToObstacle
  scrolledPixels

Låt båda få värdet 0 från start.

Metoden act

  //poäng
  visa variabeln scrolledPixels värde längs upp till vänster
  öka scrolledPixels med 3

  //lägg till hinder
  om timeToObstacle är mindre eller lika med 0 så
      lägg till hinder med höjden 150 högst upp och på x = 550
      lägg till ett lika stort hinder fast längst ner
      båda har bredden 50
      sätt pixelsToObstacle till 400

  minska pixelsToObstacle med 3

Klassen Bird

Lägg till en fågel där x är 130 och y är 250.

Objektvariabler

Lägg till två objektvariabler speedY och timeToClickable. Låt båda få värdet 0.

speedY är fågelns hastighet i y-led. Nedåt är positiv riktning. Vid fritt fall ökar den med 1 i varje filmruta. Då mellanslag hålls ned flaxar fågeln till och hastigheten ändras med 20.

Metoden act

Gör själv lämpliga hjälpmetoder.

  //flytta
  öka speedY med 1
  flytta ner speedY pixlar

  //inmatning från tangentbord
  minska timeToClickable med 1
  om mellanslag är nedtryckt och timeToClickable är 0 eller mindre
      minska speedY med 20
      sätt timeToClickable till 10

  //game over
  om y är mindre än 0 är det slut
  om y är större än 500 är det slut
  om vidrör hinder är det slut
  om det är slut 
      visas texten game over i mitten
      spelet stoppas

Bakgrundsbild

Nedan finns en bakgrundsbild som kan användas. Den är 500 x 500 pixlar.