Algorytm ”problem skoczka” – implementacja dla planszy dla trzech graczy

0

Witam,
potrzebuję napisać szachownicę dla 3 osób w C, jakieś pomysły jak to zaimplementować?

0

O co konkretnie chciałbyś zapytać? Czego nie wiesz i z czym potrzebowałbyś pomocy?


Konsolowe szachy to trochę masochizm, głównie jeśli chodzi o wizualny aspekt projektu. Chyba że przestawisz kodowanie znaków w konsoli i poszukasz jakichś unikodowych figurek, ale nie wiem czy takie są.

Jeśli chodzi o samą szachownicę i kolory to można skorzystać z tego co konsola obsługuje – można ustalić zarówno kolor tekstu, jak i tła. Wykonywanie ruchów najprościej zaimplementować jako komendy tekstowe – użytkownik podaje współrzędne bierki i miejsca, gdzie chce ją przesunąć. Oczywiście nic nie stoi na przeszkodzie, aby przesuwanie bierek odbywało się za pomocą przesuwania zaznaczenia strzałkami (potrzebny trzeci kolor) oraz akceptowania ruchu np. enterem.

0

Hmm głównie chodzi mi o problem skoczków szachowych na podanej planszy w konsoli, nie o grę ;)
Jednak trzeba zacząć od implementacji planszy, ale nie mam pomysłu, dla 2 graczy jest do zrobienia, ale dla 3? Jak ma to wyglądać?

0
Czarny Lew napisał(a):

Hmm głównie chodzi mi o problem skoczków szachowych na podanej planszy w konsoli, nie o grę ;)

„Skoczków szachowych”? Skoczek to potocznie konik – tylko o niego chodzi?

Jednak trzeba zacząć od implementacji planszy […]

Możesz od tego zacząć, ale nie musisz. To co ostatecznie wyląduje na ekranie możesz zaimplementować na samym końcu, jak już będziesz miał oprogramowaną całą logikę. Jeśli to martwi Cię najbardziej to możesz od tego zacząć.

[…] ale nie mam pomysłu, dla 2 graczy jest do zrobienia, ale dla 3? Jak ma to wyglądać?

Szachy to gra dla dwóch graczy – dla trzech i czterech też są, ale to inne wersje. O ile dla czterech graczy można wykorzystać klockowatość konsoli, to dla trzech już nie bardzo. ;)

Zadaj konkretne pytanie, a dostaniesz konkretną odpowiedź.

0

Mniej więcej chodzi o coś takiego
http://www.algorytm.org/inne/problem-skoczka-konika-szachowego.html
Jest mi to potrzebne na zajęcia. Jedyne co usłyszałem od wykładowcy to "problem skoczka szachowego dla szachownicy 3 osobowej w C"
Ja nwm czy dobrze, ale rozumiem to jako napisanie programu/algorytmu wyświetlającego w konsoli listę przejść i możliwości skoczka tak jak na powyższym przykładzie.
Pierwszy problem to jak się do tego zabrać, bo tak jak powiedziałeś, dla 4 już by było łatwiej ;)

0

Problem w tym, że Ty nie potrzebujesz napisać gry w szachy, a rozwiązać ”problem skoczka” i zaimplementować algorytm odwiedzania wszystkich pól szachownicy przez tę bierkę. Dlatego też to co napisałem wcześniej, zbytnio się nie przyda.


Szachownica dla trzech graczy wygląda np. tak:

chess

Jak chesz takie coś przedstawić w konsoli?

Wcześniej napisałem, że dla dwóch i czterech graczy nie było by problemu – owszem, dlatego że obie te plansze mają strukturę siatki z kwadratowymi polami, czego o wersji dla trzech graczy powiedzieć nie można.

Na Twoim miejscu skontaktowałbym się z pomysłodawcą tego zadania i dopytał o szczegóły. Coś mi się nie chce wierzyć, że takie zadanie dostaliście do zrobienia. ;)

0

Konsola jak ktoś chce koniecznie grafikę to idzie to sklepać w ASCIIART, pytanie jakie to ma mieć wymiary. :P
Pytanie też o który wariant szachownicy chodzi, bo tych istnieje co najmniej trzy - w tym z trójkątnymi polami. :P
Struktura danych? Hmm albo graf, albo gimnastyka z podziałem na kilka wycinków za pomocą tablic albo jeszcze inne wynalzaki. Piszę tu co mi ślina na język przyniesi bez głębszego zastanowienia..
Ogólnie pewnie ktoś to już implementował i gdzieś hulają na necie jeśli nie gotowe implementacje to przynajmniej jakieś opisujące je "papiery".

0
furious programming napisał(a):

Problem w tym, że Ty nie potrzebujesz napisać gry w szachy, a rozwiązać ”problem skoczka” i zaimplementować algorytm odwiedzania wszystkich pól szachownicy przez tę bierkę. Dlatego też to co napisałem wcześniej, zbytnio się nie przyda.


Szachownica dla trzech graczy wygląda np. tak:

chess

Jak chesz takie coś przedstawić w konsoli?

Wcześniej napisałem, że dla dwóch i czterech graczy nie było by problemu – owszem, dlatego że obie te plansze mają strukturę siatki z kwadratowymi polami, czego o wersji dla trzech graczy powiedzieć nie można.

Na Twoim miejscu skontaktowałbym się z pomysłodawcą tego zadania i dopytał o szczegóły. Coś mi się nie chce wierzyć, że takie zadanie dostaliście do zrobienia. ;)

Dokładnie to, zaimplementowac algorytm odwiedzania wszystkich pól. A jedyną.podpowiedź jaką udało mi się uzyskać to to iż potrzebne będzie 4 lub 6 tablic.

0

Można wykorzystać trzy prostokątne tablice i wyjdzie na to samo co z sześcioma. ;)

Gdybym sam miał coś takiego zaimplementować to nie użyłbym do tego celu tablic, a swojego kontenera, bazującego na mechanizmach list. Każde pole planszy było by węzłem "listy czterokierunkowej" – bo i cztery pola są z każdej strony. Utworzyłbym trzy mniejsze listy, a następnie pozpinał je w jedną całość.

Tak przygotowana ”lista” zapewniałaby mi swobodne chodzenie po planszy, nie martwiąc się o to gdzie bierka ma skoczyć. Rozkaz dwa pola w górę, jedno w bok i gotowe – połączenia węzłów pól odwalałyby całą robotę za mnie.


Nie podpuszczam Cię, jednak taki sposób jest łatwy w implementacji (tak samo jak i lista dwukierunkowa), sama struktura kontenera wykluczy konieczność późniejszych kombinacji, bo sprowadzi obliczenia do postaci znanej z szachów dla dwóch graczy (wymiarowość nie będzie miała znaczenia), a także wykluczy późniejsze drabinki if-ów i cuda na kiju z obliczaniem tego, do której tablicy skoczek ma przejść.

1 użytkowników online, w tym zalogowanych: 0, gości: 1