package Ġorg . big s by spot . tic _ tac _ to e Ċ Ċ class ĠGame ( display : ĠMainActivity ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġdisplay : ĠMainActivity ? Ġ= Ġdisplay ĊĠĠĠ Ġprivate Ġval Ġplayer X Ġ= ĠPlayer (" X ", ĠR . color . color Player X ) ĊĠĠĠ Ġprivate Ġval Ġplayer O Ġ= ĠPlayer (" O ", ĠR . color . color Player O ) ĊĠĠĠ Ġprivate Ġvar Ġcurrent Player Ġ= Ġplayer O ĊĠĠĠ Ġprivate Ġvar Ġboard : ĠBoard ? Ġ= Ġnull ĊĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġboard Ġ= ĠBoard () ĊĠĠĠĠĠĠĠ Ġdisplay ?. clear Board () ĊĠĠĠĠĠĠĠ Ġset Player And Display Text () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Number ( row : ĠInt , Ġcolumn : ĠInt ) Ġ= Ġ( row Ġ* Ġ 3 ) Ġ+ Ġcolumn Ġ+ Ġ 1 ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Row ( sequence : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( column Index Ġin Ġ 0 .. 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay ?. setValue ( getNumber ( sequence , ĠcolumnIndex ), Ġcurrent Player . letter , Ġcurrent Player . color , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Column ( sequence : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( rowIndex Ġin Ġ 0 .. 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay ?. setValue ( getNumber ( rowIndex , Ġsequence ), Ġcurrent Player . letter , Ġcurrent Player . color , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Diag onal ( sequence : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdisplay ?. setValue ( getNumber ( 1 , Ġ 1 ), Ġcurrent Player . letter , Ġcurrent Player . color , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġif Ġ( sequence Ġ== Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay ?. setValue ( getNumber ( 0 , Ġ 0 ), Ġcurrent Player . letter , Ġcurrent Player . color , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay ?. setValue ( getNumber ( 2 , Ġ 2 ), Ġcurrent Player . letter , Ġcurrent Player . color , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay ?. setValue ( getNumber ( 0 , Ġ 2 ), Ġcurrent Player . letter , Ġcurrent Player . color , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay ?. setValue ( getNumber ( 2 , Ġ 0 ), Ġcurrent Player . letter , Ġcurrent Player . color , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Over ( result : ĠCompletion Result ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( result . type Ġ== ĠCompletion Type . Draw ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay ?. display Simple Message (" It 's Ġa Ġdraw !") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay ?. display Player Message (" Player ", Ġcurrent Player . letter , Ġcurrent Player . color , Ġ" won !") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( result . type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompletion Type . Diag onal Ġ-> Ġdisplay Diag onal ( result . sequence ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompletion Type . Column Ġ-> Ġdisplay Column ( result . sequence ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCompletion Type . Row Ġ-> Ġdisplay Row ( result . sequence ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhandle Click ( number : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( board ?. is Over Ġ== Ġtrue ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġval Ġmatrix Point Ġ= ĠMatrix Point ( number ) ĊĠĠĠĠĠĠĠ Ġif Ġ( board ?. is Em tp y ( matrix Point . row , Ġmatrix Point . column ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġboard ?. setValue ( matrix Point . row , Ġmatrix Point . column , Ġcurrent Player . letter ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay ?. setValue ( number , Ġcurrent Player . letter , Ġcurrent Player . color ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcompletion Result Ġ= Ġboard ?. validate () Ġ?: ĠCompletion Result . not Complete ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( completion Result . is Over ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisplay Over ( completion Result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Player And Display Text () ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġset Player And Display Text () Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrent Player Ġ= Ġif Ġ( current Player Ġ== Ġplayer O ) Ġplayer X Ġelse Ġplayer O ĊĠĠĠĠĠĠĠ Ġdisplay ?. display Player Message (" Click Ġon Ġnumber Ġfor Ġplayer ", Ġcurrent Player . letter , Ġcurrent Player . color , Ġ"") ĊĠĠĠ Ġ} Ċ }