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...) ?





Finite State Machine i prosledjivanje parametara
