Zobacz pełną wersję : Jak zrobic gre w turbo pascalu??
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:
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ł :)
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..:)
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 :)
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"
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
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.
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...
Powered by vBulletin™ Version 4.2.2 Copyright © 2022 vBulletin Solutions, Inc. All rights reserved.