We hebben aangetoond dat je een dobbelsteen kan maken met random(), we hebben aangetoond hoe je het getal kan weergeven op een 7 segment display. Nu tonen we een andere manier om aan het getal te komen.
De millis() functie
Deze manier werkt met millis(). De instructie millis() geeft je ook een redelijk random getal. Dit is namelijk de tijd tussen het begin van het programma en het moment dat millis() werd opgeroepen in milliseconden. Aangezien het in milliseconden is kan je uiteraard niet makkelijk meetellen.
int randomnummer = millis();
Dit getal is uiteraard veel groter dan 1, je moet ervoor zorgen dat het niet groter kan worden dan 6 en tegelijkertijd niet gelijk aan 0. Dit kan door er een formule op los te laten. De formule die namelijk de rest van de deling door 6 zal berekenen.
dit is mogelijk door volgende code.
unsigned int getal = randomnummer%6;
Als je iets deelt door zes kan je geen rest hebben en de maximale rest die je kan hebben is gelijk aan 5.
Je krijgt dus een getal van 0 tot en met 5 en dit moet een getal van 1 tot en met 6 worden. De oplossing is dus eenvoudig, je moet er gewoon 1 bij optellen.
getal++;
Nu heb je dus ook een random getal gemaakt en de rest van de code van je dobbelsteen blijft identiek.
willekeurig getal met een counter
Een laatste methode is de methode van het optellen. Hierbij laat je het getal telkens het programma opnieuw aan de loop begint eentje toenemen en controleer je of hij het maximum al bereikt heeft. Op die manier krijg je de meest voorspelbare dobbelsteen (toch als de tijd dat de loop duurt lang is zodat je kan meetellen)
Je kan dit getal als volgt genereren.
randomnummer++;
if (randomnummer > 6){
randomnummer = 1;
}
Volgende les : reactiesnelheid game probleemstelling
We bespreken nog eens de volledige uitwerking van een probleemstelling van A tot Z, deze keer voor het te realiseren van een reactiesnelheid game die je zegt hoe snel je reactie is via de serial monitor.
Vorige les : random()
Vorige keer besproken we het genereren van een willekeurig nummer via de random() functie.