package Ġdev . me e 4 2 . em cc ue . freeze Ċ Ċ import Ġjava . util .* Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġval Ġboard Ġ= ĠBoard () ĊĠĠĠ Ġvar Ġcurrent Player Ġ= ĠTeam . A ĊĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplay ( board , Ġcurrent Player ) ĊĠĠĠĠĠĠĠ Ġcurrent Player Ġ= Ġif Ġ( current Player Ġ== ĠTeam . A ) ĠTeam . B Ġelse ĠTeam . A ĊĠĠĠĠĠĠĠ Ġval Ġpiece Count Ġ= ĠTeam . values (). map Ġ{ Ġteam Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġteam Ġto Ġboard . list ify (). count Ġ{ Ġit . second . piece ?. team Ġ== Ġteam Ġ} ĊĠĠĠĠĠĠĠ Ġ}. toMap () ĊĠĠĠĠĠĠĠ Ġif Ġ( piece Count . values . contains ( 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwinner Ġ= ĠTeam . values (). first Ġ{ Ġpiece Count [ it ] Ġ== Ġ 0 Ġ}. other () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Team Ġ$ winner Ġis Ġthe Ġwinner !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġscanner Ġ= ĠScanner ( System .` in `) Ċ Ċ fun Ġplay ( board : ĠBoard , Ġcurrent Player : ĠTeam ) Ġ{ ĊĠĠĠ Ġprint (" Turn : Ġ$ current Player . ĠCurrent Board :\ n $ board \ n Point Ġto Ġuse ? Ġ") ĊĠĠĠ Ġval Ġ( point , Ġaction , Ġdirection ) Ġ= Ġchoose Action ( board , Ġcurrent Player ) ĊĠĠĠ Ġwhen Ġ( action ) Ġ{ ĊĠĠĠĠĠĠĠ ĠAction . MOVE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġeasy , Ġjust Ġmove Ġto Ġthat Ġlocation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard . move Point ( point , Ġboard [ point ]. piece !!. direction ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠAction . ROT ATE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard [ point ]. piece !!. direction Ġ= Ġdirection !! ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }