package Ġru . sp ba u . mit . strategy Ċ Ċ import Ġru . sp ba u . mit . game . Game Ċ import Ġru . sp ba u . mit . map . Cell Type Ċ import Ġru . sp ba u . mit . map . Map Ċ import Ġru . sp ba u . mit . world . Creature Ċ import Ġru . sp ba u . mit . world . Creature Status Ċ import Ġru . sp ba u . mit . world . Move Ċ import Ġru . sp ba u . mit . world . World Ċ Ċ /** Ċ Ġ* ĠSimple Ġmob Ġstrategy Ġmoving Ġstraight Ġto Ġseeing Ġenemy . Ċ Ġ* Ġ@ author Ġbel ae v stan isl av Ċ Ġ*/ Ċ class ĠMob Strategy Ġ: ĠStrategy Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDo ing Ġa Ġsimple Ġact Ġof Ġmoving Ġstraight Ġto Ġfirst Ġenemy . ĊĠĠĠĠ Ġ* Ġ@ param Ġself Ġan Ġinstance Ġof Ġ[ Creature ] Ġto Ġact ĊĠĠĠĠ Ġ* Ġ@ param Ġworld Ġan Ġinstance Ġof Ġ[ World ] Ġto Ġobserve ĊĠĠĠĠ Ġ* Ġ@ param Ġmap Ġan Ġinstance Ġof Ġ[ Map ] Ġusing Ġto Ġwork Ġwith Ġmark ĊĠĠĠĠ Ġ* Ġ@ param Ġgame Ġan Ġinstance Ġof Ġ[ Game ] Ġusing Ġto Ġget Ġsome Ġconst s ĊĠĠĠĠ Ġ* Ġ@ return Ġan Ġinstance Ġof Ġ[ Action ] Ġas Ġa Ġresult Ġof Ġdoing Ġstrategy ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġact ( self : ĠCre ature , Ġworld : ĠWorld , Ġmap : ĠMap , Ġgame : ĠGame ): ĠAction Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġworld . cre atures . filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( c . creature Type Ġ!= Ġself . creature Type ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. and ( c . status Ġ== ĠCre ature Status . AL IVE ) ĊĠĠĠĠĠĠĠ Ġ}. first OrNull ()?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġx M : ĠMove Ġ= Ġ( self . pos . x Ġ- Ġit . pos . x ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMove . DOWN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( it Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMove . H OLD ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMove . UP ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( x M Ġ== ĠMove . H OLD Ġ|| Ġmap . getCell Type ( self . pos Ġ+ Ġx M . delta ) Ġ== ĠCell Type . WALL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġy M : ĠMove Ġ= Ġ( self . pos . y Ġ- Ġit . pos . y ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMove . RIGHT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( it Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMove . H OLD ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMove . LEFT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAction . Move ( y M ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAction . Move ( x M ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġ?: ĠAction . Nothing () ĊĠĠĠ Ġ} Ċ }