Lineaire functies¶
Een zeer veel voorkomende situatie bij het programmeren van games is het omzetten van het ene lineaire relatie naar het andere.
Voorbeelden¶
Voorbeeld: Health-bar
De health van de player loopt van 0 tot 100 HP. De health van de player wordt weergegeven als een groene balk met een breedte van 0 bij 0 health en een breedte van 700 bij 100 health.
Wat is de breedte van de health-bar als functie van de health van de Player?
Voorbeeld: Objecten plaatsen
Teken een rij van 10 invaders over de gehele breedte van het scherm van 500 pixels breed.
Wat is de x-positie van iedere invader als functie van het volgnummer?
Voorbeeld: Tint faden
Een Shield om de player heen word in 400 frames steeds een beetje transparanter. De maximale transparantiewaarde (geheel ondoorzichtig) is 255. De waarde voor geheel transparant is 0.
Wat is de waarde van de transparantie als functie van het aantal verstreken frames?
Voorbeeld: Tijdsindicatie
Een bepaald level in je spel gaat op tijd. De tijd die nog rest wordt weergegeven als een verticale streep op een tijdlijn. De tijdlijn loopt van 100 tot 600 pixels in de breedte van het scherm. De positie van de tijdsindicator loopt terug, van 7600 naar 100. De tijd die je over het level mag doen is 60 seconden.
Wat is de de positie van de tijdsindicator als functie van de tijd?
Generieke methode¶
Bovenstaande voorbeelden lijken op elkaar. In elk voorbeeld is er sprake van een input waarde waarvan de minimum en maximum waarden bekend zijn. Tevens is er een output waarde met eveneens een minimale en een maximale waarde Bij bovenstaande voorbeelden zijn deze:
Voorbeeld | Input | input minimaal | input maximaal | output | output minimaal | output maximaal |
---|---|---|---|---|---|---|
HealthBar | Player health | 0 HP | 100 HP | Breedte health-bar | 0 pixels | 700 pixels |
Objecten plaatsen | Object volgnummer | 0 | 9 | x-positie | 0 pixels | 500 pixels |
Tint faden | verstreken tijd | 0 frames | 400 frames | Transparantie | 255 | 0 |
Tijdsindicatie | Verstreken tijd | 0 seconden | x-positie | 60 seconden | 600 pixels | 100 pixels |
Formule¶
Kan worden iomgeschreven naar:
In p5.js¶
Deze functie wordt zo veel gebruikt dat deze in p5.js is ingebouwd als de functie map()
:
Ingevuld in de voorbeelden¶
Healthbar¶
Formule¶
Voorbeeld¶
De health wordt omgezet naar de breedte van de healthbar |
Code¶
Objecten plaatsen¶
Formule¶
Voorbeeld¶
Het object volgnummer wordt omgezet naar een x-positie van een object. |
code¶
Fade-out¶
Formule¶
Voorbeeld¶
De tijd in frames wordt omgezet naar de transparantiewaarde van de cirkel |
Code¶
Tijdsindicator¶
Formule¶
Voorbeeld¶
De tijd in seconden wordt omgezet naar de x positie van de blauwe indicator |