Stap 6: maken
Deze stap beschouwt de oprichting van de initiële configuratie. Als u van C ++ 11 gebruikmaakt, ik denk dat de makkelijkste manier om te slaan de automaat vectoren. Op deze manier de grootte van de automaat is aangepast. Aangezien de opgeslagen gegevens een 2-dimensionale vorm onderhoudt, is het best om op te slaan van de automaat als een 2-dimensionale vector (dwz vectoren binnen een vector). Met deze opstelling, wordt de automaat gezien als een raster. Elke rij van het raster wordt opgeslagen als een vector. Elke rij vector is op zijn beurt opgeslagen in de belangrijkste vector. Stel dat we willen beginnen met een 10 cel door 10 raster met cellen. De vector verklaring zou ongeveer als volgt uit:
vector < vector > Raster (10, vector(10, 0));
Deze verklaring niet alleen maakt u een raster van 10 x 10, maar ook initieert elke celwaarde op 0 (of dode). Nu kunt u het implementeren van welke code overstappen op de waarden van de cellen in eerste instantie leeft. Bijvoorbeeld, dat ik wil de cellen aanvankelijk levend te vormen van een effen vierkantje op de grid (uit hun kleuring verschillen zoals eerder opgemerkt), dan zou ik de uitvoering van een lus lijkt op het volgende:
for (int i = 2; ik < 8; i ++)
{
voor (int k = 2; k < 8; k ++)
raster [i] [k] = 1;
}
Hiermee maakt u de gewenste vector genoemd raster, die ik vervolgens gebruiken kunt voor het opslaan van de cellulaire automaat. Merk op dat ik de twee buitenste lagen van cellen in een dode staat hebben verlaten. Deze lagen zijn essentieel voor de automaat. Deze zal ik uitleggen in stap 7. Als een aparte functie genaamd newAutomaton() dit segment van het programma zou ongeveer als volgt uit:
vector < vector > newAutomaton()
{
vector < vector > Raster (10, vector(10, 0));
for (int i = 2; ik < 8; i ++)
{
voor (int k = 2; k < 8; k ++)
raster [i] [k] = 1;
}
retourneren van raster;
}
Dit segment kan gemakkelijk worden aangepast om te voldoen aan de eisen van de taak, maar het dient als basis voor het onderdeel van de schepping van de simulatie.