HUD

I veckan hade jag som uppgift att göra en grundläggande ”heads up display” för vår alpha deadline. Jag insåg snabbt att man inte kan omvandla en integer till en string bara sådär. Det var lätt nog att bara skriva ut en string med sf::Text klassen, men problemet kom när jag skulle skriva ut poängen och livsmätaren som inte bara var integer variabler men som också skulle uppdateras varje frame.

Så det första problemet var att göra om integer variablerna till string variabler och då kollade jag omkring på internet och hittade först stringstream metoden. Denna metod kan både läsa och skriva från en string variabel som om den läser från en text fil. Den kan också läsa in värden från en integer variabel för att sedan skriva ut det i en string. Detta löste ett av mina problem vilket var att jag kunde skriva ut en integer som en string. Men när jag uppdaterade texten adderades siffrorna som separata strings istället för att de adderades i värdet på integern. Så när spelet hade gått i 5 sekunder såg poängen ut såhär: 12345. Istället för såhär: 5.

Så jag var tvungen att använda en annan metod. Då hittade jag sprintf metoden. Denna metod använder sig av en array av characters för att ladda in integer värdet, en så kallad ”buffer” och en definition av vilken sorts variabel man vill ändra till string, i detta tillfälle var det ”%i”. Sedan skrev jag in vilken integer jag ville ta värdet från och skrev ut ”buffer” arrayen i sf::Text objektet som jag hade skapat. Sprintf metoden är inte bara användbar för att skriva ut integer variabler men egentligen för många olika slags variabler som såklart integer men också float points, doubles, pointer adresser, strings, characters. Allt som allt en väldigt användbar metod för att omvandla alla möjliga variabler till string.

Denna metod fungerade som bäst för att den löste båda problemen som jag hade i början. Stringstream metoden skulle jag kunna se vara användbar till andra tillfällen än den här. Till exempel om man vill skriva ut en sekvens av siffror istället för att uppdatera värdet på en integer.  Man kan också skriva ut en integers hexadecimal och octal värde med hjälp av stringstream metoden.

Senare upptäckte jag att det fanns en annan metod som jag kunde ha använt som jag också kanske använder i framtiden istället för stringstream och sprintf metoderna. Den metoden var to_string metoden. Denna metod var lättast av alla och fungerade lika bra som sprintf metoden.

About Gustav Björkman

2015 Programming