package Ġnet . z om is . tt t ult imate . games Ċ Ċ import Ġnet . z om is . tt t ult imate . TT Base Ċ import Ġnet . z om is . tt t ult imate . T TP layer Ċ import Ġnet . z om is . tt t ult imate . T ic Utils Ċ Ċ class ĠT TU lt imate Controller ( board : ĠTT Base ) Ġ: ĠTT Controller ( board ) Ġ{ ĊĠĠĠ Ġ// ĠTODO : ĠTry Ġmaking Ġit Ġeven Ġmore ĠU lt imate Ġby Ġadding Ġone Ġmore Ġdimension , Ġand Ġuse ĠMap < TT Base , ĠTT Base > Ġactive Board s . ĠJust Ġfor Ġfun . ĊĠĠĠ Ġvar Ġactive Board : ĠTT Base ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġoverride Ġfun Ġis Allowed Play ( tile : ĠTT Base ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarea Ġ= Ġtile . parent Ġ?: Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġgame Ġ= Ġtile . parent . parent ĊĊĠĠĠĠĠĠĠ Ġif Ġ( tile . won By Ġ!= ĠT TP layer . NONE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( area . won By . is Exactly One Player ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( game !!. is W on ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Board Ġ== Ġnull Ġ|| Ġactive Board Ġ== Ġarea Ġ|| Ġactive Board !!. won By Ġ!== ĠT TP layer . NONE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġperform Play ( tile : ĠTT Base ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtile . set Play edBy ( current Player ) ĊĠĠĠĠĠĠĠ Ġactive Board Ġ= ĠT ic Utils . get Destination Board ( tile ) ĊĠĠĠĠĠĠĠ Ġnext Player () ĊĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġfor Ġwin Ġcondition Ġon Ġtile Ġand Ġif Ġthere Ġis Ġa Ġwin , Ġcascade Ġto Ġit 's Ġparents ĊĠĠĠĠĠĠĠ Ġvar Ġplay At : ĠTT Base ? Ġ= Ġtile ĊĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay At ?. determine Winner () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplay At Ġ= Ġif Ġ( play At !!. is W on ) Ġplay At . parent Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( play At Ġ!= Ġnull ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Reset () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . active Board Ġ= Ġnull ĊĠĠĠ Ġ} Ċ Ċ } Ċ