RandomGenerator
|
Hejsan! Mitt namn är Stam, jag ingår i grupp 1 som gör sin variation av konceptetet Planet Suburbia. En av de uppgifterna jag hade att jobba med första veckan var att programmera fiendernas skapelseplats. Fienderna är rymdskepp som rör sig uppifrån och ner, fienderna ska alltid börja längst upp på skärmen men de ska ha en slumpmässig skapelseplats vågrätt längst skärmen. För att lycka med det här så behövde jag skapa en slumpgenerator. Jag visste inte riktigt exakt hur jag skulle gå till väg i början men stötte på en väldigt bra youtube kanal (https://www.youtube.com/user/BlueVideoGame) om spelkodning, där jag refererar de mesta av min slumpgenerators kod . De visade sig att c++ har en include fil( )som har en funktion som heter rand() som ger ut en slumpmässigt nummer. Jag börjar med att göra en random.h fil där jag deklarerar int generateRandom variabeln samtidigt som jag deklarerar ett int max värde i generateRandom för att sedan kunna använda int max värdet i generateRandom funktion som sedan kommer ingå i random.cpp filen. ”int generateRandom(int max);” Jag gör en header file för slumpgeneratorn därför att jag tycker personligen att det blir lättare att kunna komma åt funktionen från andra filer och även lättare att återanvända funktionen. Efter det gör jag en random.cpp file som kommer innehålla slump funktionen. ” int generateRandom(int max) { int randomNumber = rand(); float random = (randomNumber % max)+1; return random; } ” I random.cpp börjar jag med att deklarera funktionen rand() som en int randomNumber detta gör jag mest för att göra det lättare för mig själv att komma ihåg vad rand() gör. Efter det deklarerade jag en float random med ett värde (randomNumber % max) +1. Vad som händer här är att randomNumber kommer först ge ut ett slumpmässigt värde eftersom jag deklarerade randomNumber lika med rand() efter det kommer modulus operatorn att dividera det värdet med max och lämna kvar vad som blir över efter dividerandet t.ex. 5/2 = 2.5 men om man kör det i en modulus så går värdet 2, två hela gånger i värdet 5 men då återstår värdet 1, 5%2 = 1. Efter att modulus har gjort sitt kommer det värdet som återstår att adderas på med värdet 1, att addera slutgiltiga värdet med värdet 1 är egentligen helt onödigt men vad det gör att att det slutgiltiga värdet kommer att vara 1 värde större. Varför jag använder av int max när jag hanterade modulus i funktionen är p.g.a. att ifall jag skulle sätta ett fast värde som t.ex. 1, 5 eller 6 så kommer jag bara kunna få ett begränsat antal utfall som ”slumpas” därför används int max värde för att kunna få ett ”obegränsat” antal utfall i funktionen. Vad detta kommer göra angående spelupplevelsen är att fienderna kommer inte skapas på samma plats, flera utfall desto fler olika platser kan fienderna skapas på. Första bilden ni ser är när jag använder mig av int max i funktionen andra bilden använder jag mig av ett fast värde som 6 i funktionen.
|

