• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[JS] Tic Tac Toe AI - api do kółko i krzyżyk oparte na algorytmie minimax

VPS Starter Arubacloud
+4 głosów
1,607 wizyt
pytanie zadane 23 września 2016 w Nasze projekty przez pietrzakacper Mądrala (7,480 p.)
edycja 23 września 2016 przez pietrzakacper

Cześć!

Chciałbym prosić o ocenę kodu oraz wydajności mojego ostatniego projektu.

Na pomysł na ten projekt wpadłem, gdy męczyłem się z implementacją 'komputera' w kółko i krzyżyk.

Pomyślałem, że dużo łatwiej będzie mi to zrobić jeśli rozdzielę całą abstrakcję tego algorytmu i zamknę w oddzielnym module. Uznałem, że to co mi wyszło może być dla kogoś użyteczne dlatego opakowałem to w ładne API i mini-dokumentację w pliku README.

Tutaj można przetestować jak sprawuje się AI w mojej implementacji TicTacToe: link

A tutaj link do repozytorium tic-tac-toe-ai na GitHubie: link

Pozdrawiam i z góry dzięki za odpowiedź!

komentarz 23 września 2016 przez niezalogowany
Mam dziwnego laga przez chwilę gdy wybiorę kółko na początku. Taka drobna wada. Nie znam się na js, więc nie mogę więcej powiedzieć :) No może jeszcze, że ładnie schludnie wygląda.
komentarz 23 września 2016 przez pietrzakacper Mądrala (7,480 p.)
Tak, też to zauważyłem, żeby pozbyć się tego efektu muszę, napierw ładować planszę a potem liczyć ruch AI

3 odpowiedzi

+1 głos
odpowiedź 24 września 2016 przez Magicone Nałogowiec (45,100 p.)

Dlaczego zrezygnowałeś z ES6? Kod do ES5 możesz zrzucać, minifikować i przy okazji używać składni modułów ES6 przy użyciu narzędzia, jakim jest rollup. Tutaj masz książkowy przykład, jak to działa w praktyce. :P

komentarz 24 września 2016 przez pietrzakacper Mądrala (7,480 p.)

Głównie dlatego, że potrzebowałem moduł (AI) rozdzielić na parę plików z mniejszymi modułami (miniMax, Validation... )i udostępniać tylko wybrane metody. A z tego co wiem to moduły ES6 nie działają w przeglądarce. Dlatego skorzystałem z tego IMO brzydkiego pattern-a : 

var AI = (function(module){ 
  module.newProperty = ... 

  return module; 
})(AI || {});

Gdybyś zaproponował lepsze rozwiązanie byłbym bardziej niż wdzięczny ;)

komentarz 24 września 2016 przez Magicone Nałogowiec (45,100 p.)
Modularyzacja jest jak najbardziej ok, napisałem, że rollup zrzuca moduły do jednego pliku i w dodatku przy użyciu presetów/pluginów możesz mieć czysty, zminifikowany kod pod przeglądarkę (es5).
komentarz 24 września 2016 przez pietrzakacper Mądrala (7,480 p.)
Ok, nie wiedziałem co robi rollup. Dzięki, poczytam i na dniach przejdę na es6 :)
+1 głos
odpowiedź 24 września 2016 przez Mlody89 Mądrala (6,920 p.)

Jak się szybko klika to AI nie ma szans :D

komentarz 24 września 2016 przez pietrzakacper Mądrala (7,480 p.)
xD Dzieje się tak, bo event kliknięcia  mimo tego, że zostaje przechwycony w trakcie "procesu myślowego" AI to jest obsłużony dopiero gdy AI skończy liczyć.

Zwykła flaga wskazująca czyja kolei teraz jest powinna rozwiązać sprawę :)
–1 głos
odpowiedź 24 września 2016 przez pietrzakacper Mądrala (7,480 p.)
Podbijam

Podobne pytania

0 głosów
0 odpowiedzi 223 wizyt
pytanie zadane 16 czerwca 2021 w Systemy operacyjne, programy przez Maren Nowicjusz (120 p.)
+1 głos
0 odpowiedzi 2,255 wizyt
+4 głosów
1 odpowiedź 2,493 wizyt

93,005 zapytań

141,971 odpowiedzi

321,251 komentarzy

62,344 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...