moim projektem na zajęcie tak jak w tytule tematu są warcaby, które muszą zawierać 2 tryby: Gracz vs Gracz oraz Gracz vs AI. Problem, którego nie mogę rozwiązać to jest poruszanie pionkami przy wielokrotnym biciu oraz poruszanie damką. Operacje wykonuje na tablicy 10x10.
Nie chcę, żadnych gotowców. Proszę o jakąś podpowiedź ;).
Ale z czym dokładnie masz problem? To jest problem z gatunku tych, które rozwiązuje się na kartce papieru. Programowanie tego - w tym, czy innym języku - to wisienka na torcie.
Bardziej chodziło mi jak powiedzieć użytkownikowi, że musi dokonać skoku (bicia) jeśli jest możliwe. Wydaje mi się jest to najtrudniejszy element, z którym sobie nie radzę :(.
@drobok: “pionek powinien mieć swój status”, chodzi Tobie o to czy jest to zwykły pionek czy damka ? Czy o jego położenie?
położenie w wypadku warcabów to przerost formy nad treścią, ja bym zrobił tablicę dwuwymiarową w formie mapy na której znajdowały by się struktury pole, z zmiennymi:czy_cos_zajmuje, typ_zajmującego i kolor (wtedy masz 2 zmienne bool, więc krótsze warunki)
Jeśli wokół swojego zajętego pola masz inne zajęte pole z innym kolorem przez które możesz przeskoczyć (następne pole po przekątnej jest puste) to wtedy dodajesz ruch do wymuszonych, po ostatnim polu każesz użytkownikowi wybrać któryś z wymuszonych
Jest tutaj dobra szkoła. Sam jakiś czas temu z niej korzystałem bo potrzebowałem takich podstaw. Wszystko jest łądnie wyjąścnione tak wiec naprawdę można to ogarnąć.
Natrafiłem jednak na problemy. Jak mam rozwiązać taką sytuację:
gracz ma jednego pionka, który może bić i pionka, który nie ma takiej sytuacji. Jak zrobić by gracz ruszył pionkiem, który ma bicie? Czy jedynym rozwiązaniem jest przechowywanie informacji o pozycji wszystkich pionków i ich sąsiadów, i pokarz dym ruchu aktualizowanie danych graczy?
Drugi problem to jak poradzić sobie z damką, która porusza się o dowolną ilość pól i może na jednej linii zbić parę pionków (dokładnie jeśli damka zaczyna z jednego rogu i “idzie” na drugi koniec może zbić max. 3 pionki) ? Chodzi dokładnie o tą nie regularność ruchu, który jest problematyczny.
W jaki sposób działają komputerowe systemy grające w tego typu gry?
Zakładając brak AI, następuje przeszukiwanie wszystkich możliwych ruchów w kilku kolejnych ruchach, oraz ocena korzystności owych. W warcabach można szeregować korzyści poprzez stosunek własnych pozostałych pionków do tych przeciwnika. Wystarczy teraz znaleźć najlepsze ruchy dla gracza, komputera, gracza, komputera, itd, aż do przekroczenia pożądanego czasu myślenia lub oczekiwanej liczby iteracji.
Pole do gry można interpretować jako graf i zastosować w nim DFS (deep-first search0.