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 datatypenGreenfootImage
. - Gör ett objekt av klassen
GreenfootImage
. Låt objektet ha breddenwidth
och höjdenheight
. Lägg objektet iimage
.
Lägg till följande kod:
image.setColor(new Color(240, 90, 60));
image.fill();
- Anropa metoden
setImage
och bifogaimage
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.