0124 får som hoppar

Spara föregående övning far_i_trappa som far_som_hoppar.

Nedan följer instruktioner för hur du får fåret att hoppa. Det är ett enkelt sätt, som har vissa brister. Du kanske kan upptäcka dessa.

Placera fåret på en tegelsten.

Ta bort innehållet i act-metoden.

Kommer du ihåg rörelse från fysiken

Gravitationen nedåt är 10 meter per sekund varje sekund.

Säg att hastigheten uppåt är 50 m/s vid tiden noll.

Varje sekund kommer hastigheten uppåt att minska med 10 m/s.

Tid (s) Hastighet uppåt (m/s)
0 50
1 40
2 30
3 20
4 10
5 0
6 -10
7 -20

Vad innebär det att hastigheten är negativ efter 6 sekunder? Hur rör sig föremålet nu?

Idé

Man kan hoppa med mellanslag om man står på marken. Hastigheten uppåt får då ett positivt värde till exempel 50 som ovan.

Varje filmruta minskas sedan hastigheten med gravitationen. För enkelhet skull tänker vi oss att en filmruta är en sekund. Förflyttningen blir då lika stor som hastigheten. Tänk på att om hastigheten är positiv uppåt så blir den negativ nedåt.

Förslag på implementation i klassen Sheep följer nedan.

Klassen Sheep

objektvariabler eller instansvariabler

Lägg till följande objektvariabler

  • speedVertical som kan innehålla heltal och har startvärdet 0

  • gravity som har värdet 1

  • isFalling som har värdet false

metoden isOnGround

Returnerar true om fåret är i kontakt med en tegelsten, annars false.

metoden checkJump

Om space är intryckt och fåret är på marken så sätts speedVertical till 12 och isFalling får värdet true.

metoden move

Om isFalling har värdet true

  • flyttas fåret speedVertical. Minska fårets y-koordinat med speedVertical.

  • speedVertical minskas med gravity

metoden checkOnGround

Om fåret rör vid en tegelsten så får isFalling värdet false annars får isFalling värdet true.

metoden act

Anropa metoden checkJump.

Anropa därefter metoden move.

Anropa därefter metoden checkOnGround.