class ĠGame Ġ{ ĊĠĠĠ Ġval Ġpath Ġ= Ġmutable ListOf < Direction >( ĠDirection . START Ġ) ĊĊĠĠĠ Ġval Ġnorth Ġ= Ġ{ Ġpath . add ( Direction . NORTH ) Ġ} ĊĠĠĠ Ġval Ġsouth Ġ= Ġ{ Ġpath . add ( Direction . SO UTH ) Ġ} ĊĠĠĠ Ġval Ġeast Ġ= Ġ{ Ġpath . add ( Direction . EAST ) Ġ} ĊĠĠĠ Ġval Ġwest Ġ= Ġ{ Ġpath . add ( Direction . WEST ) Ġ} ĊĠĠĠ Ġval Ġend Ġ= Ġ{ Ġpath . add ( Direction . END ); Ġprintln ("\ n Game ĠOver : Ġ$ path "); Ġpath . clear (); Ġfalse Ġ} ĊĊĠĠĠ Ġval Ġlocation Ġ= ĠLocation () ĊĊĠĠĠ Ġfun Ġmove ( where : Ġ() Ġ-> ĠUnit ){ ĊĠĠĠĠĠĠĠ Ġwhere . invoke () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmake Move ( char : ĠString ? ){ ĊĠĠĠĠĠĠĠ Ġwhen ( char ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" n " Ġ-> Ġmove Ġ{ Ġnorth (); Ġlocation . update Location ( Direction . NORTH ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" s " Ġ-> Ġmove Ġ{ Ġsouth (); Ġlocation . update Location ( Direction . SO UTH ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" e " Ġ-> Ġmove Ġ{ Ġeast (); Ġlocation . update Location ( Direction . EAST ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" w " Ġ-> Ġmove Ġ{ Ġwest (); Ġlocation . update Location ( Direction . WEST ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġmove Ġ{ Ġend () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdescription () Ġ= Ġlocation . map [ location . current Location . first . rem ( location . width )] Ġ[ location . current Location . second . rem ( location . height )] Ċ }