PDA

Zobacz pełną wersję : Jak zrobic gre w turbo pascalu??



wordi
08-05-07, 19:01
Witam!!!
Jak wielu innych mam pewien problem... Jako zadanie dlugo terminowe na informatyke musze zrobic gre warcaby w programie Turbo Pascal.Tak naprawde niewiem od czego zaczac. google mi nie wiele pomoglo... trudno znalezc odpowiednie algorytmy.Prosze o jakakolwiek pomoc...(oczywiscie nie chce gotowego programu..na tyle jestem jeszcze ambitny:wink:

stilgar
09-05-07, 15:57
na początek musisz sobie wszystko dobrze rozplanować, bo inaczej bedziesz co chwila wszystko kasowac i zaczynac od nowa, albo ostateczny kod bedzie tak zagmatwany, ze sam go nie bedziesz rozumiec :)

ogólnie, to gra pewnie bedzie chodzic w petli, az do zwyciestwa jednego z graczy
petla w stylu:
begin
PobierzDaneOdUsera;
UaktualnijStanPlanszy;
NarysujPlansze;
end;

nazwy wywolywanych funkcji chyba mowia same za siebie :)

musisz wymyslic jakies struktury danych do przechowywania aktualnego stanu planszy, np. tablica dwuwymiarowa ze stanem planszy, lista pionków, czy cos innego, wymysl co chcesz :) (byleby latwo bylo to potem zaimplementowac)

procedurka do pobierania danych wtedy pobiera dane od usera i interpretuje, co user mial na mysli i to gdzies zapisuje
na podstawie tego, procedura do uaktualniania planszy aktualizuje stan planszy (np. przesuniecie pionka z jednego pola na drugie) a na koniec procedurka rysowania rysuje plansze

ja bym to tak zrobił :)

wordi
09-05-07, 16:11
A gdzie dac algorytmy???Np. bicia pionkow i damek?? A wogole zeby je gdzies dac trzeba je miec, a ja wlasnie ich nie mam:)..i nie moge znalezc .No niewiem czy te procedurki mowia same za siebie..:)

stilgar
09-05-07, 17:50
to wszystko powinno byc w uaktualnianiu planszy

a co do algorytmow - przeciez nie są trudne, sam je opracuj, podobno jestes ambitny :)

przeciez to bedzie w stylu
if pionek chce sie ruszyc na pole X then
if pole X jest wolne then przesun pionek na to pole else
if pole za X jest wolne then przesun pionek na tamto pole i zbij pionek z pola X

mogę ci podpowiadać jak coś robić, ale nie licz tutaj na jakiegokolwiek gotowca :)

wordi
09-05-07, 20:40
Hehe gotowiec nie wiele by mi pomógł... pani profesor doooglebnie sprawdza jak to jest napisane i pyta z tego co napisalismy w naszym programie...Ale chodzi mi o to ze najwieksze problemy sprawia mi zrobienie sztucznej inteligencji,czyli gry z komputerm.

jacekowski
09-05-07, 21:02
rob to tak jak robia to programy szachowe czyli przeszukiwanie wszystkich mozliwosci kilka poziomow wglab (w sumie brute force) a potem ocena kazdej mozliwosci i wybranie najlepsze
i ew. baza "otwarc"

stilgar
09-05-07, 23:17
co do sztucznej inteligencji jest to najlepiej robic tak:

robisz rekurencyjna funkcje, ktora wywoluje sama siebie dla wszystkich mozliwych ruchow, az do konca gry (w warcabach mozliwych ruchow nie jest tak duzo jak w szachach, mozna to chyba pociagnac do konca) i zwraca ilosc wygranych

komputer powinien ruszyc sie tym pionkiem, dla ktorego mozliwa ilosc wygranych byla najwieksza

Alpha
18-05-07, 19:02
dla wszystkich mozliwych ruchow, az do konca gry (w warcabach mozliwych ruchow nie jest tak duzo jak w szachach, mozna to chyba pociagnac do konca)
Nie, nie i nie!

Różnie się szacuje, ale w każdej pozycji jest rzędu 10 rozgałęzień, partia może trwać ok. 50 ruchów (100 półruchów), to daje 10^100 ścieżek drzewa gry.
W innym miejscu szacuje się, że pozycji końcowych jest ok. 10^18.
Wszystko poza zasięgiem.

Radziłbym wymyślić jakąś funkcję celu - oceniającą jakość pozycji na planszy i przewidywać kilka ruchów w przód - zresztą brutalnie (wszystkie kombinacje) jak radzi jacek. Każdą sytuację tak otrzymaną ocenić funkcją celu.

Niestety mam wrażenie, że dyskusja jest nieco jałowa, ponieważ z jej przebiegu wynika, że zainteresowany nie poradzi sobie z zastosowaniem tych rad. Zadanie nie jest banalne jak czytanie pliku czy sortowanie tablicy...


pani profesor doooglebnie sprawdza jak to jest napisane i pyta z tego co napisalismy w naszym programie...
zatem fachowo... :-)

Ostatnia uwaga:

zadanie dlugo terminowe
długoterminowe.

macol
18-05-07, 20:37
Patrzałeś w Google code search? Czasami daje ciekawe efekty... Co prawda Pascala nie znam, ale pierwsze wyniki z tąd (http://www.google.com/codesearch?as_q=checkers&as_lang=pascal)wyglądają na coś konkretnego...