pLIFE engine v0.1 + demo
Miło mi zaprezentować już drugi silnik arytmetyczny mojego autorstwa. Tym razem jest to popularna wśród matematyków Gra w życie.Ciekawą właściwością, z pewnością będącą jakąś podstawą nawet do bardziej profesjonalnych zastosowań silnika jest całkowite wyeliminowanie dwuwymiarowej tablicy jako reprezentacji mapy komórek. Obojętnie czy plansza będzie rozmiarów 10×10 czy 10mlnx10mln- na szybkość działania silnika wpływa tylko i wyłącznie liczba aktualnie żywych komórek.
Natomiast do przechowywania ich parametrów użyłem również napisanego przez siebie pojemnika, który przetrzymuje obiekty zawsze w porządku rosnącym. Dzięki temu wyszukanie jakiegokolwiek obiektu to czas lgn.
Co jest do poprawy i co z pewnością będę starał się zrealizować
- jakaś cywilizowana obsługa błędów
- wprowadzenie obliczania kolorów żywych komórek w systemach Immigration oraz Quadlife
- daleko idąca optymalizacja kodu pod kątem wykorzystania pLIFE w bardziej naukowych celach
Jednocześnie chciałbym ogłosić, iż jest to mój ostatni projekt przed maturą. Być może na przestrzeni tych dwóch miesięcy wykonam cokolwiek z listy życzeń przedstawionej poniżej, ale na pewno nie będę brał zleceń na przeróbki i dostosowanie silnika do specyficznych wymagań.
Dodam, iż silnik jest dostępny na licencji LGPLv3.
Źródło: pLIFEv01.tar.gz
Demo w wersji na Windows: pLIFEdemo.rar
Readme: README.txt
pSHIPS engine v.0.1 + demo
Po świątecznych dniach przerwy jest mi miło zaprezentować silnik arytmetyczny, którego zadaniem jest gra… w okręty. Takie papierowe, szkolne okręty.
pSHIPS engine- bo taka jego nazwa- wylicza w które pole strzelić, aby wyeliminować jak najwięcej możliwości ułożenia aktualnie największego niezatopionego statku. Dzięki takiemu podejściu mogę śmiało powiedzieć, że pod względem matematycznym bot posługujący się tą metodą jest najlepszym- z matematycznego punktu widzenia- graczem w okręty na świecie. Oczywiście matematyka bywa przewidywalna i kiedy umieścimy wszystkie statki na obrzeżach planszy; zanim zostaną zestrzelone padnie ładnych kilka “pudeł”… ale nazwijmy to skrajnym przypadkiem.
Sam silnik jest jak na wersję 0.1 dosyć elastyczny. Możemy sami zdefiniować rozmiar planszy (na razie niestety definicja ta będzie dotyczyć wszystkich obiektów silnika), rozmiary i ilość statków. Słowem- jeżeli nagle zechcemy zagrać na planszy 20×20 ze statkami rzędu 16 pól- pSHIPS zgrabnie sobie z tym poradzi.
Jednakże wersja 0.1 to również nieco błędów. Przede wszystkim wspomniany już brak możliwości edycji rozmiarów pojedynczych obiektów silnika. Poza tym brak jest jakiegokolwiek systemu błędów, oraz analizy poprawności. Oznacza to ni mniej ni więcej, aniżeli to, iż pSHIPS nie weryfikuje nadesłanych mu danych i w razie jakiejkolwiek sprzeczności może zachowywać się wysoce niestabilnie. Jednakże kiedy dane te są w porządku; silnik powinien zająć się liczeniem a nie “krzaczeniem”.
Całość zdecydowałem się opublikować na licencji LGPLv3, tak więc czujta się wolnym pod względem modyfikacji, nanoszenia poprawek, dalszej publikacji i dystrybucji. Nie ma też większego problemu z użyciem tego kodu w zamkniętych projektach. W razie jakiegokolwiek zainteresowanie proszę tylko o kontakt- po prostu chciałbym wiedzieć.
Jakie plany z tym związałem? Myślę nad dołączeniem pSHIPS do KBattleships. Oraz do paru innych gier podobnego typu. Ale to już w razie nadmiaru czasu… a więc może na ferie zimowe.
Tymczasem zapraszam do pobierania:
Aha- no i szczęśliwego 2008!