[Algorytmy][C++] Warcaby czlowiek-komputer

dav123
Użytkownik
Użytkownik
Posty: 20
Rejestracja: 3 lip 2013, o 18:22
Płeć: Mężczyzna
Lokalizacja: Lokalizacja
Podziękował: 16 razy

[Algorytmy][C++] Warcaby czlowiek-komputer

Post autor: dav123 »

Piszę właśnie grę w warcaby człowiek vs. człowiek, większość kodu już mam. Chcę też żeby program zawierał opcję gry człowiek-komputer. Nie wiem jak się pisze taki kod, żeby komp wykonywał ruch, takich informacji szukałem trochę w necie, ale nie znalazłem.
Mógłby ktoś napisać trochę o tym, co i jak? Pewnie im trudniejszy poziom kompa tym bardziej skomplikowany kod, dlatego niech poziom kompa będzie łatwy. Czy w związku z tym dużo będzie musiał się zmienić mój kod, ten co teraz mam napisany?

PS. Jak już napisałem na początku, większość kodu mam napisanego. Kod ma kilka funkcji, rzecz jasna, ale nie ma struktur, klas itp. Chcę, żeby program zawierał takie rzeczy jak: kapsułkowanie, dziedziczenie, szablony funkcji/klas, polimorfizm. No, może nie wszystkie, ale chociaż trzy z nich. I teraz pytanie jak wyżej, czy dużo będę musiał nazmieniać w moim obecnym kodzie, żeby te rzeczy zastosować?
Ostatnio zmieniony 31 sie 2013, o 08:31 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Gouranga
Użytkownik
Użytkownik
Posty: 1588
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 245 razy

[Algorytmy][C++] Warcaby czlowiek-komputer

Post autor: Gouranga »

jeśli używasz funkcji ale nie używasz klas to de facto nie używasz obiektowości tylko stawiasz na programowanie proceduralne. Więc zamiana na obiektowe będzie w sumie polegała na pisaniu od zera.
Co do kodu komputera to proste, po wykonaniu ruchu gracza musisz odpalić funkcję ruchu komputera. Samą jej algorytmikę musisz sam wymyślić. Podstawowy algorytm do warcabów może wyglądać np. tak:
-sprawdź czy możesz zbić graczowi pionek
--jeśli tak, to:
---jeśli jeden to zbij go
---jeśli więcej sprawdź każdy, którą drogą zbijesz najwięcej na raz
----jeśli jest jedna droga z max. liczbą, zbij je
----jeśli jest kilka wybierz taką, żeby ostateczne położenie twojego piona nie umożliwiło zbicia go
-----jeśli to niemożliwe idź losową drogą zbijając piony
--jeśli nie możesz zbić:
---wybierz ruch, po którym twojego piona nie da się zbić (nie podkładaj się)
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[Algorytmy][C++] Warcaby czlowiek-komputer

Post autor: Afish »

... y/warcaby/
dav123
Użytkownik
Użytkownik
Posty: 20
Rejestracja: 3 lip 2013, o 18:22
Płeć: Mężczyzna
Lokalizacja: Lokalizacja
Podziękował: 16 razy

[Algorytmy][C++] Warcaby czlowiek-komputer

Post autor: dav123 »

jeśli chodzi o ruch kompa to może być funkcja rand?? komp losuje z pośród możliwych ruchów jeden ruch i tam się rusza
bartek118
Użytkownik
Użytkownik
Posty: 5974
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[Algorytmy][C++] Warcaby czlowiek-komputer

Post autor: bartek118 »

Jak najbardziej
Gouranga
Użytkownik
Użytkownik
Posty: 1588
Rejestracja: 16 maja 2013, o 17:56
Płeć: Mężczyzna
Lokalizacja: Trójmiasto
Podziękował: 11 razy
Pomógł: 245 razy

[Algorytmy][C++] Warcaby czlowiek-komputer

Post autor: Gouranga »

komputer losujący dowolny ruch będzie grał jak debil, przeczytaj mój post powyżej
bartek118
Użytkownik
Użytkownik
Posty: 5974
Rejestracja: 28 lut 2010, o 19:45
Płeć: Mężczyzna
Lokalizacja: Toruń
Podziękował: 15 razy
Pomógł: 1251 razy

[Algorytmy][C++] Warcaby czlowiek-komputer

Post autor: bartek118 »

Oczywiście, że będzie grał jak debil, ale z tego co zauważyłem, autorowi chodzi o to, aby po prostu grał.
dav123
Użytkownik
Użytkownik
Posty: 20
Rejestracja: 3 lip 2013, o 18:22
Płeć: Mężczyzna
Lokalizacja: Lokalizacja
Podziękował: 16 razy

[Algorytmy][C++] Warcaby czlowiek-komputer

Post autor: dav123 »

Gouranga, czytałem Twój post i wolałbym zastosować taki właśnie algorytm, żeby komp trochę myślał, jednak nie miałem na to czasu i tak jak napisał bartek118, w tamtym momencie zależało mi, żeby tylko była opcja grania z kompem, a funkcja rand była najprostsza.

dzięki za odpowiedzi
ksisquare
Użytkownik
Użytkownik
Posty: 132
Rejestracja: 1 cze 2012, o 07:04
Płeć: Mężczyzna
Lokalizacja: Polska
Pomógł: 15 razy

[Algorytmy][C++] Warcaby czlowiek-komputer

Post autor: ksisquare »

ODPOWIEDZ