|
- Autor, Copyright:
Zbigniew Lisiecki,
zbyszek.evot.org,
June 2003, GNU Public Licence: copy, zmieniaj i używaj, lecz
nie sprzedawaj i pozostaw tą informację.
- Jak grać:
Zacznij x File.New Game.
Kładź czarne kółka aby uzyskać pięć w jednej linii.
File.Save jest wyłączone w wersji internetowej (brak zezwolenia
na zapis).
- Menu Edit:
Przy pomocy "Edit" można położyć dowolną bierkę na planszy,
lub zmazać ją przy pomocy "Edit.empty".
Następnie użytj ""Edit.Play" aby rozpocząć grę
w utworzonej pozycji.
Przycisk: "<" to to samo co "Take back", a ">" to samo co "Move forward".
- Menu Options:
"Evaluate" oblicza wartość aktualnej pozycji. W algorytmie gry
ta wartość jest używana do obliczanie wartość poszczególnych
"liści" na drzewie możliwych pozycji.
"Accounted for" pokazuje pola brane pod uwagę podczas aktualnego
obliczania odpowiedzi.
"TTab on/off" włącza lub wyłącza tabelę transpozycji. Tabela
transpozycji jest używana do zapamiętania już wyliczonych pozycji
do ich następnego użycia.
"show TTab %" pokazuje procent tabeli transpozycji użyty częściej
niż raz. Obecnie ta wartość pokazuje, że użycie TTab ma mały
wpływ na wynik.
"show presorted %" pokazuje ilość przepiczonych pozycji jako
procent wszystkich możliwych pozycji branych pod uwagę.
To ogranicznie jest możliwe dzięki wstępnemu sortowaniu.
"show depth %" pokazuje ilu pozycji zostało przeliczonych na
każdej głębokości 1...7.
"hqueue debug" drukuje na stdout jak działa hash queue użyta
w TTab.
"compute debug" drukuje pracę głównej pętli.
"newmoves debug" drukuje pracę procedury wyliczającej nowy ruch.
"m3/4 debug" drukuje pracę procedur znajdujących trzy lub cztery
bierki w jednej linii.
- Parametry:
"max width" to maksymalna ilość ruchów, która jest brana pod uwagę
na każdej gałęzi drzewa możliwych pozycji.
"max depth" to największa ilość pięter w drzewie możliwości.
"mmax depth" to to samo co "max depth" w przypadku trzech bierek
w jednych rzędzie.
"debug depth" ogranicza lila bierki co do liczby pięter w
drzewie transpozycji.
"shown depth" ogranicza wydruki debagowe do tej liczby pięter.
"max ram" to maksymalna ilość pamięci RAM użyta do tabeli transpozycji
"hash size" Tabela transpozycji jest skonstruowana przy pomocy kolejki
hash. Hash size to ilość nagłówków tej kolejki.
alfa i beta ti początkowe wartości w głwnym algorytmie
tzw. Alpha-Beta-Search.
"add3" to parametr dodany, gdy trzy bierki stoją w jednym rzędzie.
- Źródła:
Źródła składają się z GUI w ox.java,
głównego silnika w game.java oraz kolejki hash w hqueue.java.
Użyty jest prosty algorytm alpha-beta-search znany z
programów szachowych. Na początku sprawdzamy czy już pięć
bierek stoi w jednych rzędzie lub czy cztery lub trzy są wolne.
To uwalnia bezpośrednią odpowiedź. Potem wyliczamy możliwe
nowe ruchy z konturu wokół dotychczasowej gry.
Funkcja Evaluate() wylicza ilość możliwych piątek.
Źródła:
ox.java
game.java
hqueue.java
ox.php
|
|