• 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

+4 głosów
798 wizyt
pytanie zadane 23 września 2016 w Nasze projekty przez pietrzakacper Mądrala (7,470 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,470 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 (44,960 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,470 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 (44,960 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,470 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,940 p.)

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

komentarz 24 września 2016 przez pietrzakacper Mądrala (7,470 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,470 p.)
Podbijam

Podobne pytania

+1 głos
0 odpowiedzi 904 wizyt
+1 głos
1 odpowiedź 1,193 wizyt
0 głosów
1 odpowiedź 188 wizyt
pytanie zadane 26 lipca 2016 w C i C++ przez Gracjan Pasik Obywatel (1,810 p.)
Porady nie od parady
Publikując kody źródłowe korzystaj ze specjalnego bloczku koloryzującego składnię (przycisk z napisem code w edytorze). Nie zapomnij o ustawieniu odpowiedniego języka z rozwijanego menu oraz czytelnym formatowaniu kodu.Przycisk code

67,159 zapytań

114,107 odpowiedzi

241,853 komentarzy

47,047 pasjonatów

Przeglądających: 314
Pasjonatów: 15 Gości: 299

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...