package Ġnet . z om is . games . dsl Ċ Ċ import Ġnet . z om is . games . ur . Ro yal Game Of Ur Ċ Ċ class ĠD sl UR Ġ{ ĊĊĠĠĠ Ġval Ġroll Ġ= Ġcreate ActionType (" roll ", ĠUnit :: class ) ĊĠĠĠ Ġval Ġmove Ġ= Ġcreate ActionType (" move ", ĠInt :: class ) ĊĠĠĠ Ġval Ġgame UR Ġ= Ġcreate Game < Ro yal Game Of Ur >(" UR ") Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup ( Unit :: class ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayers Fixed ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Ġ{ ĠRo yal Game Of Ur () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlogic Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwinner Ġ{ Ġgame Ġ-> Ġgame . winner . take If Ġ{ Ġgame . is Finished Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Action ( roll ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallowed Ġ{ Ġit . game . current Player Ġ== Ġit . player Index Ġ&& Ġit . game . is Roll Time () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeffect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroll Result Ġ= Ġit . game . do Roll () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstate (" roll ", Ġroll Result ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplay Effect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . game . do Roll ( state (" roll ") Ġas ĠInt ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint Action ( move , Ġ{ 0 Ġuntil ĠRo yal Game Of Ur . EXIT }) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallowed Ġ{ Ġit . game . current Player Ġ== Ġit . player Index Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . game . is Move Time Ġ&& Ġit . game . can Move ( it . game . current Player , Ġit . parameter , Ġit . game . roll ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġeffect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . game . move ( it . game . current Player , Ġit . parameter , Ġit . game . roll ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġview Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Player Ġ{ Ġit . current Player Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwinner Ġ{ Ġgame Ġ-> Ġgame . winner . take If Ġ{ Ġgame . is Finished Ġ} Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate (" last Roll ") Ġ{ Ġthis . full State (" roll ") Ġ?: Ġ 0 Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue (" roll ") Ġ{ Ġit . roll Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue (" pieces ") Ġ{ Ġgame Ġ-> Ġgame . pieces Copy . map Ġ{ Ġit . toList () Ġ}. toList () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }