Program do gry w szachy

0

Hej ludziska,

Pomożecie mi zacząć pisać program do gry w szachy?

Szczegóły i założenia:

  • nie jestem profesjonalistą

  • miałem jedynie nieco do czynienia z c++

  • program ma umożliwiać grę na dwie osoby; wiem, że nie dam rady napisać czegoś, co umożliwi grę z komputerem :)

  • program ma być skutecznym narzędziem (zaraz napiszę do czego); treść ważniejsza niż wygląd; minimum kodu

  • ma służyć do tego, aby początkujący szachiści nauczyli się nazw pól, zatem:

    • wokół szachownicy ma nie być cyfr ani liter
    • sterowanie ma być jedynie za pomocą klawiatury
  • ...jeśli mi będzie dobrze szło, może rzucę się na umożliwienie gry w sieci (każdy na swoim laptopie). może.


Mam w związku z tym kilka pytań:
Windows czy Linux? Jak bardzo różni się kompilacja na tych systemach?
Próbuję sobie rozplanować program:

szachownica, bierki, posunięcie/zbicie, gracz "akywny" i zmiana po posunięciu, zasady gry - implementacja

To są elementy, które sobie wypisałem na szybko. Zdaję sobie sprawę, że musi ich być więcej, jak chociażby sterowanie, grafika, itd.
Jakiś czas temu zacząłem pracę nad tym (zrobiłem szachownice na tablicach i bierki) ale się zaciąłem w pewnym momencie i sam już nie wiem, czy w ogóle szedłem w dobrym kierunku.
Pomożecie mi to ogarnąć? :)

0

albo windows albo linuks... to zależy od Ciebie. Ściągnij sobie Code::Blocks albo Qtcreator to różnicy wielkiej nie zauważysz.
Szachownica to może być zwykła tablica 2 wymiarowa.
Co do bierek, to napisz sobie klasy (czy jak tam wolisz) dla każdej z nich na "nieskończenie wielkiej" szachownicy i tam zaimplementuj poruszanie się. Następnie ogranicz tablicę do 8x8 i będziesz miał już dużo.

0

Wydaje mi się że musisz do tego użyć biblioteki graficznej, grafika jest według Twojej rozpiski nie ważna no ale jakaś chyba musi być.
Poza tym mozna by było zrobić tak żeby każde pole było osobnym obiektem np jakiejś klasy tak żeby można było badać zależności pionków tzn czy się jakiś nie skół innego itd.

0

Skoro ruch ma być tylko przy pomocy klawiatury to ja bym nie męczył się z GUI tylko cały program zrobił z TUI przez co jeśli dobrze to napiszesz to jaki to będzie OS nie będzie miało najmniejszego wpływu.

0

Co to są nazwy pól, skoro nie ma być cyfr i liter?

0

Dzięki wszystkim za wpisy.

Spróbuję TUI. Może potem uda mi się zrobić jakąś przeróbkę QTCreatorem, bo kiedyś nad tym trochę siedziałem i bardzo mi się spodobała praca z widgetami i w ogóle:)

Co do nazw pól, to gdy spojrzysz na szachownicę, to masz naokoło oznaczenia. Czytasz wiersz i kolumnę na których przecięciu znajduje się interesujące Cię pole i masz oznaczenie. Gdy chcesz się uczyć gry w szachy, jednym z Twoich celów powinno być nauczenie się rozgrywania partii bez patrzenia na szachownicę. Przydaje się do tego znajomość nazw pól.
Pomyślałem, że jeśli napiszę program, w którym musisz używać klawiatury i nie widzisz oznaczeń pól. Wydaje mi się, że dzięki temu już po rozegraniu jednej partii każdy będzie miał w głowie wyryte nazwy pól.

Spróbuję znaleźć kod, który napisałem wcześniej. Wrzucę go i poproszę Was o opinię. Niestety zajmie mi to trochę czasu, bo nie mam dostępu do starego laptopa.
Macie może jakieś inne porady?

0

http://i.imgur.com/frvHI.png - glChess z gier GNOME. Możesz sobie przełączać numerowanie. Więc jakaś wielka innowacja to nie jest...

Poza tym to jest QtCreator, a nie QTCreator.

Na Twoim miejscu dobrałbym się do kodu gry, chociażby tej którą pokazałem i dodałbym np. pole tekstowe, w którym się wpisuje jaki ruch chcesz wykonać.

1

Spine, dzięki za Twe komentarze. QtCreator, racja. Co do oznaczeń, to zdaję sobie sprawę, że świata nie odkrywam. Po prostu wymyśliłem sobie, że napiszę program, który będzie tak właśnie wyglądał. Lubię szachy, chcę polubić pisanie programów :)

0

Mógłbyś skorzystać z gotowego silnika do szachów np houduni i zaimplementować tylko GUI oraz zdarzenia przeciągania figur. Sądze ,że to działa tak: podajesz do tego programu ustawienia wszystkich figur na planszy a ten program zwraca ci figury w jak najlepszym położeniu dla danego gracza. Musiałbyś poczytać dokładnie dokumentację od tego silnika. Zrób coś podobnego do Arena Chess GUI. Ten program sam w sobie nie posiada algorytmów inteligencji tylko można mu podać z jakiego silnika szachowego chcemy korzystać i on generuje figury w odpowiednim położeniu na podstawie danych zwracanych przez silnik szachowy. Chyba ,że chcesz się bawić w pisanie własnego algorytmu sztucznej inteligencji. Wtedy musiałbyś się zainteresować algorytmem mini-maks z obcinaniem alpha beta żeby osiągnąć zadowalające rezultaty.

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