Vecka 2

Det här veckan har jag gjort lite allt möjligt, lite här och lite där. Programmeringen har handlat mest om att fixa buggar och rätta till saker som inte funkar som de ska helt och hållet. En sak som vi inte haft tidigare som vi lagt till dock är ytterligare en ”sektor”. Vårt spel går ut på att skepp som ”spawnar” längst upp på skärmen anfaller planeten som är längst ner på skärmen. Från början har man bara en sektor vilket bilden till höger nedan representerar. Under spelets gång låser man dock upp fler sektorer och då spawnar det även skepp på de andra sektorerna. Även fast skeppen rör sig mot planeten på alla sektorerna samtidigt kan man bara se en sektor åt gången. 

Innan veckan började hade vi  som sagt bara en sektor och vi hade som mål att ha två sektorer av fyra klara till alphan eftersom sektorerna ändå var en kärnmekanik i spelet. Bilden till vänster nedan representerar vår nya sektor. För att skapa den skapade vi olika så kallade ”views”, där vi fick ange vart (med koordinater) synfältet skulle vara och hur stort det skulle vara. Sedan använde vi if-satser som kollar om respektive tangent är nedtryckt. Om 1 är nedtryckt visas view[1] t.ex. och om 2 är nedtryckt visas view[2]. När 2 är nedtryckt sätter vi bakgrundspritens position och huvudkanonens båda sprites position till koordinaterna för view[2] och så gör vi likadant för view[1]. Ett litet problem som uppstod då var att uträkningen för vinkeln dit man siktade och positionen där projektilerna spawnade när man sköt inte stämde för den andra sektorn. Vi hade hårdkodat dom värdena i prototyperna så vi fick helt enkelt ändra dem och använda getPosition()-funktionen som finns tillgänglig i smfl så funkade det bra.

Ett annat problem som uppstod var livstiden för projektilerna. Vi förstör nämligen dom när dom försvinner utanför skärmen för att dom inte ska ta upp onödigt minne. När vi bara hade en sektor hade vi en if-sats kollade om dom var inom koordinaterna för skärmen – 60, då våra projektiler är 60 pixlar stora, annars förstördes dom. Så nästa steg var att lägga till livstid för raketerna som var på sektor2. Istället för att ha massa if-satser men massa ”conditions” för vilka koordinater raketerna var tvungna att befinna sig inom för att inte förstöras så valde vi istället att göra en rektangel för varje sektor som var 60 pixlar större än själva bakgrunden och view:en. Sen istället för if-satserna så kollade vi om raketerna befann sig inom dom rektanglarna med hjälp av ”getGlobalBounds.contains.”. Då det började bli lite rörigt med alla koordinater och man fick dubbelkolla dom hela tiden gjorde jag en ”koordinat karta” i libreoffice calc så man bara snabbt kunde kolla där för att få reda på dom som man kan se på bilden längst ner.

Allt detta gick relativt snabbt att göra och det var en av många saker som programmerarna i vår grupp jobbat med gemensamt denna veckan men detta var det jag skrev om för denna veckan.

 

About Mathias Henningsson

2015 Programming