Autor Wątek: SI w grach planszowych typu Monopol  (Przeczytany 2255 razy)

Offline heavyadam

  • Użytkownik

# Grudzień 22, 2009, 22:30:49
Witam!! Piszę włąsnie grę planszową typu monopol. Chcę żeby gra dawała mozliwość gry z "inteligentnym" graczem komputerowym.

Znacie jakieś biblioteki AI które mógłbym wykożystać, albo jakieś info o inteligencji w tego rodzaju grach.....

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Kos

  • Użytkownik
    • kos.gd

# Grudzień 22, 2009, 22:56:40
W monopolu? rand() :)

Offline Kamma

  • Użytkownik

# Grudzień 22, 2009, 22:57:30
Do tego typu gry nie opłaca się stosować żadnej gotowej biblioteki AI - proste zasady rozgrywki. Wystarczy troszkę pogłówkować i napisać swoje mechanizmy symulujące myślącego przeciwnika ( troszkę if-ów i else-ów i gra muzyka ). Dzięki temu zaoszczędzisz czas: nie będziesz zgłębiał dokumentacji biblioteki, nie będziesz musiał dostosować architektury gry (kodu) do tej biblioteki. Sądzę, że samodzielne oprogramowanie zajmie mniej czasu, niż wdrożenie gotowego, nieznanego systemu AI.

Offline Esidar

  • Użytkownik

# Grudzień 22, 2009, 23:19:11
albo jakieś info o inteligencji w tego rodzaju grach.....
W takich grach implementuje się kilka z góry znanych zachowań gracza. Pograj kilka razy z prawdziwymi graczami. Spisz pewne "oczywiste" zasady które każdy z graczy stosuje typu "If mam_trochę_kasy && stoje_na_tanim_polu && moim_zdaniem_budynek_jest_atrakcyjny[ budynek_id ] then buy;". Im więcej takich if'ów tym bardziej różnorodne zachowanie komputera i bardziej losowe (ale losowe z sensem).
Ponieważ if'y są liniowe (zawsze któryś jest sprawdzany jako pierwszy, drugi, itd), to możesz też losować ich kolejność (wrzucić do jakichś funkcji, funkcje stablicować i losowo sortować przy każdej kolejce).

W monopolu? rand() :)
Czyli komputer przez 20 kolejek nic nie kupi bo akurat mu wychodzi cały czas rand(0,100) > 50 ? :) Z pewnością będzie to pasjonująca rozgrywka :)

Offline NewDev

  • Użytkownik

# Marzec 06, 2010, 15:21:21
użyj kilku właściwości które mogą przyjąć liczbę punktów od x do y, dodaj je do siebie i użyj if punty>iles wtedy ma kupić.

o co chodzi? np. pole w monopolu ma własności: cena, przydatność; gracz ma też ileś kasy;

teraz np. za cenę pola w stosunku do saldo gracza (musisz napisać jakiś wzór) można otrzymać od 0 do 50 pkt. Każdy budynek ma też zdefiniowaną przez ciebie przydatność np. od 0 do 60. Jak już obliczysz te własności do dodajesz je do siebie i robisz (przykłądowo) if(suma>65) wtedy kup pole...

ale to będzie bardzo dużo pracy z napisaniem wzoru i dostosowaniem max ilości punktów i min. do kupienia żeby było jak najbardziej podobne do normalnego gracza...

Offline Asmodeusz

  • Użytkownik
    • Bogumił Wiatrowski: Blog

# Marzec 08, 2010, 00:15:16
Też kiedyś nad tym myślałem i, moim zdaniem, najlepiej sprawdzi się tu jakiś system oceny wartości pola. Z czego: nie tylko od wartości samego pola jako takiego, ale też od sytuacji na planszy. Jeśli gracz komputerowy posiada już 2 pola z zestawu, zakup trzeciego jest bardzo opłacalny (większe zyski), natomiast jeśli dowolny inny gracz posiada co najmniej jedno pole z tego zestawu, zakup staje się znacznie mniej opłacalny (no, chyba że celem zablokowania konkurenta). Po prostu zastanów się, na czym opierasz swoje decyzje grając w taką grę i to przepisz w kod.

Offline Xirdus

  • Redaktor

# Maj 14, 2010, 16:54:10
Podczepię się trochę do tematu, jak rozwiązać problem z domkami? Kiedy ma kupować? (właśnie wpadłem na rozwiązanie) Jeśli masz już zakupione trzy pola i saldo po kupnie domku będzie większe od średniej ceny pól pozostałych do kupienia, to wtedy kupuj. Jeśli na 1. polu masz domek, a na 2. nie masz, to kup na drugim. Jeśli masz kilka państw/miast/whateva, kup tam, gdzie przeciwnikowi jest najbardziej po drodze. To taki ogólny zarys.