Podstawowym elementem gry jest „baza danych” ruchów. Jest ona oparta na aktualnym stanie planszy i informacji o tym, który gracz zaczął jako pierwszy (człowiek czy maszyna). Mając te informacje, wyszukiwana jest właściwa dana w pamięci EPROM/EEPROM. Jest to liczba informująca grę o tym, na którym kafelku powinien być położony żeton w następnym ruchu.
Potrzebujemy więc prawidłowych danych w pamięci EPROM/EEPROM, aby maszyna mogła poprawnie grać i zawsze wygrywać lub remisować, co jest zależne od umiejętności człowieka. W jaki sposób możemy wygenerować te dane?
Decyzje dotyczące rozgrywki
Dwa z pytań sformułowanych na początku pracy dotyczyły tego, ile reakcji maszyny jest wymaganych w grze, w której pierwszy ruch wykonuje człowiek, oraz w grze, w której grę rozpoczyna maszyna. Zacząłem od zbadania przypadku, w którym zaczyna człowiek (X), ignorując symetrię planszy oraz lustrzane i obrotowe odbicia.
Gra ma dziewięć różnych możliwości rozpoczęcia. Załóżmy, że X zaczyna na polu 1. Wtedy O ma do wyboru osiem pozostałych pól. Moglibyśmy ograniczyć odpowiedź do zajęcia środkowego pola, jeśli X nie zajął go początkowo, lub w przypadku, gdy X zajmuje początkowo środkowe pole, O może zająć to samo początkowe pole narożne.
Sekwencja gry zależy wtedy w dużej mierze od drugiego ruchu X. Pierwszą odpowiedź O można nazwać „początkiem ogólnym”, ponieważ można ją stereotypowo przypisać do jednego z dwóch możliwych kwadratów.
Następnie możemy posortować sekwencję gry na grupy rozwiązań w postaci X1,2 i X1,3 do X1,9, gdzie pierwsza liczba reprezentuje początkową lokalizację ruchu X, a druga liczba reprezentuje drugi ruch X po pierwszej odpowiedzi maszyny.
W powyższym przykładzie, jeśli pierwszym ruchem X jest pole 1 (pole narożne), nie ma sekwencji gry X1,5, ponieważ pierwszą reakcją O jest zajęcie środkowego pola, więc nie jest to już opcja dla X.
Po początkowej odpowiedzi O, siedem pól pozostaje do wyboru dla X. Oznacza to, że dla każdej sekwencji uruchamiania gry, początkowo pojawia się siedem wzorów planszy. W tym momencie przychodzi kolej na ruch O. Analiza w tym momencie pokazuje, że aby uwzględnić wszystkie błędy, które X może popełnić przy wyborze pola do ukończenia gry, wymagane jest dziewięć odpowiedzi dla każdego z początkowych siedmiu wzorów planszy.
Dziewięć stanów początkowych i siedem początkowych wzorów planszy wymaga 63 plansz (9×7). Każda z tych 63 możliwości zawiera dziewięć punktów danych (lub odpowiedzi maszyny), pozwalających na kontynuowanie gry. Liczba odpowiedzi wymaganych przez maszynę może teoretycznie wynosić łącznie 569 początkowych odpowiedzi (9×63+2).
Jednak po rozpoczęciu gry zduplikowane wzory graczy X i O pojawiają się w różnych sekwencjach początkowych. Pojawiają się one na początku gry, gdy dwa X i jedno O znajdują się w tych samych miejscach. Następnie cała grupa 9 odpowiedzi zostaje zduplikowana. W późniejszej fazie gry powielanie wzorów na planszy występuje również w ostatnich ruchach.
Wymagana liczba odpowiedzi komputera po usunięciu duplikatów dla przypadku „X zaczyna pierwszy” wynosi 285.
Przykładowy wykres pokazano na rysunku, jednym z 63 wykresów pomocniczych w przypadku „X zaczyna pierwszy”. Stworzyłem je ręcznie, aby przeanalizować każdy możliwy ruch człowieka i wybrać odpowiednie reakcje maszyny.
Liczby w kolorze cyjanowym to adresy dziesiętne wygenerowane przez wzór elementów X i O na planszy. Przekształciłem te liczby dziesiętne na liczby szesnastkowe, aby zaprogramować pamięć EPROM/EEPROM. Liczby w kolorze czerwonym to wartości bajtów zaprogramowane w pamięci EPROM/EEPROM w tych lokalizacjach adresowych.
Gdy człowiek X zaczyna jako pierwszy, drugi gracz, niezależnie od tego, czy jest to maszyna, czy człowiek grający O, jest „popychany” przez strategię gry X. Wiele reakcji maszyny O w tym przypadku ma na celu uniknięcie pokonania poprzez zablokowanie zwycięskiego ruchu człowieka. Jak wspomniano wcześniej, gracz rozpoczynający ma znaczną przewagę.
Rozważmy człowieka X zaczynającego na pozycji 7 (na powyższym przykładzie wykresu) i wykonującego drugi ruch na pole 4. Wykres (górny i jego ścieżka) jest oznaczony jako X7,4. Chociaż człowiek może wykonać następny ruch w inny sposób, na pozycje 1, 2, 3, 6, 8 lub 9, wszystkie te kombinacje są uwzględnione na innych wykresach X7.
Początkowy ruch gracza X powoduje wygenerowanie adresu dziesiętnego 64. Następnie przychodzi kolej na O, więc komputer aktywuje się i zajmuje centralne pole. Następnie X zagrywa na kwadrat 4 jako swój drugi ruch (w tym przykładzie sekwencji X7,4). Generuje to adres dziesiętny 8264, a maszyna w odpowiedzi zajmuje kwadrat 1, ponieważ „01” jest zaprogramowane pod tym adresem w pamięci EPROM/EEPROM.
Pomijając ogólne ruchy startowe, istnieje dziewięć odpowiedzi z sekwencji X7,4, podobnie jak w przypadku sekwencji X7,1.
Jak widać na wykresach, istnieje wiele możliwości popełnienia błędu przez gracza X, w którym maszyna wygrywa, i tylko jedna ścieżka do remisu z maszyną. Jeśli człowiek popełni błąd, maszyna zajmie odpowiednie pole, aby wygrać.
Dlatego większość punktów danych pozwala na wiele wariantów błędów, które może popełnić człowiek, aby maszyna (która nigdy nie popełnia błędu) mogła je wykorzystać.