Uppdatering Extrablogg.

Till extrabloggen ar jag valt att berätta om vår komet i spelet ”Flight of the giraffa”. Till detta projekt skapade jag en komet som skulle röra sig över skärmen från höger till vänster och den skulle kunna kollidera med enbart spelaren för att göra skada samt att den skulle vid kollisionen, explodera och en power-up skulle skapas bakom explosionen.

Till en början så skapade jag ett tile-system i programmet ”Paint”, i det programmet skriver man in hur många kolunmer och hur många rader man behöver. Detta måste överensstämma med hur ”långt” in i spelet kometer ska fortsätta skapas. Eftersom att alla våra fiender är skapade på samma sätt så var det enkelt att beräkna det antalet. När den filen var gjord gick jag över till själva sprogrammerandet.

Först och främst så skapar jag ett objekt som får en sprite, denna sprite kommer sedan bytas ut till en animation. Jag använder spritens storlek för att bestämma hur stor kollisions-cirkel den ska få. För att besämma dennes storlek så finns det en enkel funktion i SFML som spårar kanterna av spriten. Med den slipper jag ta ut arean och beräkna det med matematik. Detta betyder att när bilden byts ut i min animation så håller sig kollisions-cirkeln alltid samma storlek.

För att varje komet som skapas ska vara identisk, men inte vara densamma så blev jag tvungen att göra en for-loop som säger att ”Varje gång siffran 1 dyker upp i tilesystemet ska en ny komet skapas” För att kollisionerna ska fungera på varje ny komet så blev jag även tvungen att göra en for-loop som säger ”varje gång en kollisions-cirkel av dethär slaget, träffar spelarens kollisionsbox, så ska spelaren ta skada” Det möjliggjorde att varje komet kunde bete sig lika.

Jag skulle senare få spriten att flytta på sig, för att få det att hända så gav jag Kometens klass en update funktion. I den funktionen så säger jag till den att flytta sig. Jag använder mig av det ända sättet som jag kunde vid det tillfället. Vilket vara att säga till spriten att flytta sig X-antal pixlar åt det ena eller andra hållet. Så jag sa åt den att flytta sig nedåt genom hela kartan. När jag väl hade lyckats med det så ville jag få kometen att byta färdbana succesivt genom hela kartan. Det simplaste jag kom att tänka på då var att dela upp spelskärmen i olika delar, jag tror det blev 5st samanlagt. Så när kometen tagit sig förbi Punkt 1, så kröktes färdbanan lite. Likadant för de andra 4 Punkterna. Detta gav kometen lite ”liv” åtminstone. Allt detta med byte av riktningar och användning av tid var fortfaranade nytt och skrämande för mig så dettta blev lösningen jag gick efter.

 

Namnlös
Kometens Rörelse

Jag gav mig senare på hur jag skulle få power-ups att skapas efter en komet exploderade. Först vill jag att en power-up ska skapas när en komet exploderade. Där kan vi kolla tillbaka på kollissionssystemet.

I min kollisionshantering för kometen och spelaren stod det redan att spelaren ska kunna ta skada, i samma påstående kunde jag enkelt skriva in att kometen i fråga skulle explodera och det skulle skapas en power-up. Jag ville även att det skulle vara slumpmässigt vilken slags powerup jag skulle få ut. Här fick jag äntligen använda mig av Random funktionen i sfml. Jag gjorde denna funktion inuti kollisionen och sade till den att ”hitta ett nummer mellan 1 och 6” beroende på vilket nummer som kom ur den skapade jag rätt power-up. Siffrorna 4-6 var inte kopplade till någon power-up och fick agera som otur.

Komet.png

Såhär i efterhand så hade jag nog istället för att använda mig av tile-system så hade jag nog gömt alla kometer i en Array och ritat ut dem när jag behövde, det hade sparat på tid då jag inte hade behövt rita ut på en ”karta (paint)” vars alla kometer skulle vara.

About Christoffer Tornstråle

2015 Programming