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 pixelsToObstacle ä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.