Ogur’s Game of Life [UPDATE 2]
Tagi: game of life, gry, nerd, programy, projekty, zabawki 7 komentarzy »Przeglądałem sobie ostatnio Kwakowe programiki i zatrzymałem się nad Grą w życie (wiki). Jestem prawie pewien, że kiedyś też sobie to zakodziłem, też w konsoli i nawet chyba działało. Tylko że nigdzie na dysku nie mogę znaleźć ani jednego kawałka kodu, który by mi to potwierdził. Więc albo mam deja vu, albo jednak wyszło mi to źle i chciałem ukryć bolesną prawdę. Nie ma tego złego co by jednak nie można było napisać od nowa.
Jako że w miedzy czasie przyuczyłem się biblioteki Allegro (nie ma nic wspólnego z aukcjami, serio) to mogłem od razu zrobić nową wersję w oszałamiającej szacie graficznej (no dobra, po prostu graficznej). Siadłem sobie rano, trochę popisałem, dowiedziałem się przy okazji kilku rzeczy (np że w C++ działanie modulo % zwraca również ujemną resztę, co oczywiście ma sens matematyczny, jednak spowodowało kilka minut guglania i robienia wielkich oczu przy czytaniu dlaczego mi program nie bangla).
Pierwsza wersja która wyświetlała po prostu graficzną reprezentację programu powstała raczej szybko, potem zacząłem kombinować z kolorkami i innymi duperelami. Póki co wygląda to tak:

Normalna symulacja
Włączanie/wyłączanie śmierci powoduje jak się można domyślić przełączanie reguły umierania punktów. Punkty z wiekiem zmieniają kolor od zielonego, przez żółty, do czerwonego. Wybrałem ten schemat kolorystyczny, bo przy wyłączonej śmierci wychodzi coś jak mapa hipsometryczna.

Tryb bez śmierci
Na razie lewym przyciskiem myszy wstawia się Glidery, prawym takie bardziej chaotyczne śmieci, jak będzie mi się jeszcze chciało z tym bawić to dodam jakieś inne gotowe układy.
Tryb z wyłączoną śmiercią przypomina bakterie na pożywce, ale też wychodzą ciekawe wzory typu, jak to nazwałem, Wąż Orobos, bo po zawinięciu się przez ścianę gryzie sam siebie i rozlewa się krew :P

Waż Orobos
Cóż szału nie ma, jeszcze chodzi dość opornie, w końcu w każdym obrocie pętli przegląda każdy piksel, sumując mu otoczenie 8 sąsiadów, potem jeszcze przepisuje ten bufor, 250 000 jest pikseli w tej ustawionej rozdziałce to trochę liczy :P
Na deser oczywiście link do programiku.
To jeszcze kod źródłowy na dokładkę.
UPDATE (3 kwietnia)
W wielkich bólach postało TO (źródła główny i edytor). W paczce jest główny program, edytor, instrukcja jak to ogarnać i przykładowe wzorki.
Nie zdziwiłbym się, gdyby jedna coś nie działało, ale mam nadzieję że już nie będzie wierzgać.
UPDATE (7 kwietnia)
Miałem już nic przy tym nie robić, ale nie mogłem się powstrzymać :P w 3 dodatkowych plikach jest zmieniony sposob kolorowania, na zasadzie mieszania z sąsiadującymi komórkami. Najładniej wygląda to w wersji z wyłączoną śmiercią. Można za pomocą tego ciekawe rzeczy robić :P (źródło)

Ha, nie potrzebuje już render clouds w PSie :P



pr0
podoba mi sie koncepcja kolorków
btw
chyba się bardzo nudzisz
Ładnie, ładnie. Myślałem kiedyś o takim koncepcie, żeby były bakterie (takie jak np w dr. Mario) i żeby były ładne animacje znikania i pojawiania się. Co prawda nie dałoby się robić tak dużych populacji, ale graficznie by to mogło ciekawie wyglądać.
@Brainer
Nudzę się? Wolę to nazywać rozwijanie różnorodnych zainteresowań :]
@Kwako
No postanowiłem pojść w ilość :)
Po prostu się przechwalasz :P
zawalisty królik :D
Ok, potestowałem toto sobie i albo mój komp ma jakieś dziwne ustawienia albo cokolwiek, albo znowu pojawia się odwieczny problem z prędkością wykonywania jakichśtam operacji / pobierania sygnałów od urządzeń we/wy / cośtam.
W każdym razie jak kliknę sobie LPM to nie za każdym razem wychodzi z tego glider, w sensie.. zamiast tego pojedynczego układu robi się jakieś niewiadomo co co w końcu ewoluuje albo w glider albo w jakiś stabilny układ. To samo jeśli ustawie żeby ten glider odpalał się nie od ppm ale od naciśnięcia jakiegoś przycisku na klawiaturze.
Jedyna metoda, która sprawiła, że w końcu udało mi się zrobić ten glider tak jak powinien działać to wrzucenie kodu od jego tworzenia do tego ifa od wciśnięcia ‘X’a.
http://pastebin.com/iUvVUWWE
Albo po prostu nie rozumiem jak te I/O funkcje w allegro działają, w sumie pierwszy raz na oczy toto widzę.
Poprawki w drodze, miedzy innymi te interwały miedzy kliknieciami :)