Game of Life/Gra w życie
październik 2011
projekt uczelniany
Najpierw krótki wstęp teoretyczny:
Gra w życie (Life, The game of life) – jeden z pierwszych i najbardziej znanych przykładów automatu komórkowego, wymyślony w roku 1970 przez brytyjskiego matematyka Johna Conwaya.
Gra toczy się na planszy podzielonej na komórki. Każda komórka ma ośmiu "sąsiadów" i może znajdować się w jednym z dwóch stanów: może być albo "żywa", albo "martwa". Stany komórek zmieniają się w pewnych jednostkach czasu. Stan wszystkich komórek w pewnej jednostce czasu jest używany do obliczenia stanu wszystkich komórek w następnej jednostce. Po obliczeniu wszystkie komórki zmieniają swój stan dokładnie w tym samym momencie. Udział człowieka sprowadza się jedynie do ustalenia stanu początkowego komórek.
Zdefiniowano kilka wzorców reguł generowania, najbardziej rozpowszechnione są reguły wymyślone przez Conwaya:
- martwa komórka mająca dokładnie 3 żywych sąsiadów, staje się żywa w następnej jednostce czasu,
- żywa komórka z 2-3 żywymi sąsiadami pozostaje żywa; przy innej liczbie umiera (z samotności albo zatłoczenia).
http://pl.wikipedia.org/wiki/Gra_w_%C5%BCycie
A teraz kilka słów o samym projekcie:
- został napisany za pomocą ActionScript 3,
- umożliwia manulane rozłożenie komórek żywych i martwych,
- jak i również wczytanie z plików XML ustawień w nich zdefiniowanych,
- istnieje opcja zmiany zasad gry (więcej na ten temat - wiki) oraz ich walidację.
Przykładowy fragment kodu ukazujący podstawową obsługę plików XML w AS3:
<?xml version="1.0" encoding="UTF-8"?>
<cells>
<size>2</size>
<cell>
<xpos>12</xpos>
<ypos>9</ypos>
</cell>
<cell>
<xpos>13</xpos>
<ypos>9</ypos>
</cell>
</cells>
var xmlCells:XML;
var xmlLoader:URLLoader = new URLLoader();
xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
xmlLoader.load(new URLRequest("xml/glider.xml"));
function xmlLoaded(event:Event):void
{
xmlCells = new XML(xmlLoader.data);
for (var i:int=0; i<xmlCells.size; i++)
{
var yPos:int = xmlCells.cell[i].yPos;
var xPos:int = xmlCells.cell[i].xPos;
//obsługa danych
}
}


