[ reiser @ 28.11.2011. 04:25 ] @
Pisem AI koji ce biti u stanju da igra 2x2 soccer, koji je turn-based (http://bubblecup.org/bubblebot.php) Imam jednu glavnu klasu u kojoj se nalaze sledece podklase: Ball : TBall - podaci o lopti Players : Array[0..PLAYER_PER_TEAM * 2 - 1] of TSoccerPlayer - array TSoccerPlayer klasa, sadrzi podatke o igracima Napisao sam finite state design pattern na kome je TSoccerPlayer klasa zasnovana. Dakle, TSoccerPlayer nasledjuje TMovingEntity, ona nasledjuje TBaseGameEntity, a ona nasledjuje TAIEntity klasu, koja je u stvari finite state machine. Cela poenta ovoga je da mogu da menjam ponasanje igraca, recimo, kazem: Players[0].ChangeState(TAIState_SoccerPlayer_DefendGoal) i taj igrac ce preuzeti ulogu golmana. Sve ovo radi, dakle setovani Enter(), Execute() i Exit() eventi se izvrsavaju, ali kako da prosledim ostale parametre tim eventima? Recimo, ako je za igraca 0 setovan DefendGoal state, kada pozovem Players[0].Update, izvrsi se TAIState_SoccerPlayer_DefendGoal.Execute() event, kome se prosledi referenca ka Players[0]. Dakle, ja u tom eventu imam referencu ka igracu koji poziva taj event, ali kako da dodjem do podataka koji se nalaze u glavnoj klasi (podaci o lopti, ostalim igracima itd itd...) ? |