Del tre – Veckan efter Alpha början till Beta

Hur ska man säga, efter att gruppen inte lyckades få med alla bitar, har vi jobbat sedan i lördags med allt ifrån att fixa en HUD till att skriva om hela strukturen av fienderna.

Jag fixade så att fienden kunde skjuta, med hjälp av koden som redan på plats ifrån Avataren. Allt jag tog bort var mus-positionen men jag skapade en klass av det vi hade pratat om. Använde en bullet klass för allt, men under helgen ville vi bara få in så många funktioner som möjligt.
Efter det fick jag fixa så att Bordeclear-Power-up:en som just nu är fungerade men dåligt, vill fixa den men har inte gjort det nu. De ville ha bordeclearen ifrån mitten av skärmen och det hade en ifrån gruppen redan fixat. Men de ville ha den så att den växte och roterade då den är regnbåge. Vad jag uppfattade hade man försökt lösa det problemet under ett tag utan att lyckas, men jag vet inte hur aktivt felsökande var där.
Lyckades få det att fungera på direkten med hjälp av sfml-list på kommandon. För första gången visade det så som jag ville ha det och de hade skrivit ut vad man skulle göra istället för att säga “detta är de vanliga misstagen” men inte säga hur man löser dem, dåligt av dem på sfml om de vill ha nya att använde sig av deras saker. Lösningen blev på två rader som sa bara entiteten och rotate/scale med ett värde. “entity.rotate(10);”
Nu kan jag säga lite mer vad vi gjorde med Bordeclear:s logik, från början hade vi bara 4 fiender så enkelt sa när den dödat 4st så var den klar och stängde av. Detta slutade fungera med en senare ändring av mig.

Efter det ville de få fienderna att spawn “igen” men det kände jag att det kanske blir tråkigt, försökte få fram en annan lösning än den jag fick ta in i spelet under helgen.
Den blev i stil med om de 4 fienderna är döda räkna upp på en int timer “winTimer” +1 och sätt fienderna till isAlive = true då vår kod sätter fienderna till isAlive = false istället för att deleta dem.
Det fungerade efter 3 till 4 vågor då fick man WinState och spelomgången var klar.

Men under måndagen letade jag reda på lite hjälp ifrån folk i andra grupper för att de kunde säga vad som var fel med min kod för den riktiga fiende Spawn logiken jag tänkte mig. Alltså efter ett bra tag fick jag den att spawn fiender på koordinater från en file “tileSystem” för att lättare kunna göra mönster av fienderna sen när spelet slutar i stället för att döda alla. Men när jag försökte fixa Spawn mekaniken fick jag på mig att skriva om all kod om hur fienderna hanterades ifrån Main loopen, då den som var på plats innan var mindre “justerbar” är ordvalet jag använder. Fick lägga ner tid på att skriva om allt om vad som kan kollidera med fienden, hur fienden skjuter, vad som kan döda fienden, hur den uppdateras och ritas ut på skärm. Nu är den en iterator av fienden. Med hjälp av level-filen kan jag placera ut hur många som helst och var som helst. Nja, jag återvände kod ifrån mitt föra project med den lösningen men nåt har blivit galet.
Filen är alltså 10 i x-led och 10 i y-led, så är det i gamla projektet också där är x-led i filen från vänster till höger och y-led är uppifrån till nedåt.
Men den i grupparbetet går ifrån att rita ut fienderna i ett led längs bort i högra sidan av skärmen fyra fiender blir så här i filen.

mellan varje 1 som är fienden är det 20 st 0:or.

1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

Den ska se ut något så här (Vet inte exakt om 1:orna är placerad rätt jämförelse med ovan här skriv ihop det nu.):

0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0

Jag har försökt att lösa problemet men har lagt det åt sidan, om ni ser problemet kan ni kommentera på det 😉

Har ändrat I och J fram och tillbaka mm, men det får vara så ett tag till.

std::ifstream lvlfile(“../Level/lvl1.txt”);

if (lvlfile.is_open())

{

int x;

int y;

int index;

lvlfile >> x;

lvlfile >> y;

for (int i = 0; i < y; i++)

{

for (int j = 0; j < x; j++)

{

lvlfile >> index;

if (index == 1)

{

X_pos = j * 100;

Y_pos = i * 117;

Entitet* cep = new Entitet(sf::Vector2f(X_pos, Y_pos), enemy1Sprite);

it_Entitet.push_back(cep);

}

}

}

}

myfile.close();

Tisdagen blev också mycket till att försöka fixa spawn filen och implementeringen av rörande bakgrund med en parallax bild det skapar lite djup i det hela men själv tycker jag fortfarande att parallax bilden ska vara bakgrunden då den känns vara längre ifrån. Simpel lösning tack vare sfmls funktioner. Move och en if sats wraparound om den går helt utanför skärmen.

Mot slutet av dagen tog vi tid att verkligen låta spelet bli helt men alla vår bitar vi jobbat med för att sedan visa upp spelet under onsdagen för läraren då vår Aplha deadline blev förlängd.
På onsdagen försökte jag söka/skriva en AudioManger som kan spela upp flera ljud åtgången, det jag hittade var exempel på spela upp 1 ljud.
Har nu i dag (torsdagen 25/02) en fungerande AudioManger kanske inte den bästa som finns men det är verkligen bara den som rör ljuden för utan funktionen att Kalla på Play som finns där den behövs.

Så här ser Play funktionen ut i snabba drag.
Vi kallar på den med där ifrån vi vill ha den. (AudioManger funktionen play och med en “type”) Type som är ett ord “Coin” tar det som exempel då det var mitt exempel ljud jag hade på datorn.
Den går in i play funktionen letar reda på samma type “coin” och kör ett random nummer upp till 3.
Går in i “3” får en picth på ljudet och sätter den i SoundBuffert för “coin” att vara Sound.
Därefter trycker den in Sound med bufferten i en lista som spelas upp.

Sedan i en annan del av koden när ljudet är färdig klar deltas den ifrån listan.
Känns som det fungerar har inte hunnit att testa den helt än.

Dessa två bilder är samma bild, men ena har beskrivningar på sig och den andra är lättare att se.Capture3

Capture3_Change

About Filip Karlsson

2015 Programming