package Ġcom . say zen . camp fire sdk . screens . other . min ig ame Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . Paint Ċ import Ġandroid . util . Attribute Set Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Frame Layout Ċ import Ġcom . sup . dev . android . R Ċ import Ġcom . sup . dev . android . tools . Tools Resources Ċ import Ġcom . sup . dev . android . tools . Tools View Ċ import Ġcom . sup . dev . android . views . views . View Icon Ċ import Ġcom . sup . dev . java . classes . animation . Delta Ċ import Ġcom . sup . dev . java . tools . Tools Collections Ċ import Ġcom . sup . dev . java . tools . Tools Math Ċ import Ġcom . sup . dev . java . tools . Tools Threads Ċ Ċ class ĠView Mini Game Ġ@ Jvm Over loads Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġattrs : ĠAttributeSet ? Ġ= Ġnull Ċ ) Ġ: ĠFrame Layout ( context , Ġattrs ) Ġ{ ĊĊĠĠĠ Ġvar Ġon Win Human Ġ= Ġ{} ĊĠĠĠ Ġvar Ġon Win Robot Ġ= Ġ{} ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Color Ġ= ĠTools Resources . getColor Attr ( R . attr . color On Primary ) ĊĊĊĠĠĠ Ġprivate Ġval ĠP LAYER _ ROBOT Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġval ĠP LAYER _ HUM AN Ġ= Ġ 2 ĊĠĠĠ Ġprivate Ġval ĠDP Ġ= ĠTools View . dp To Px ( 2 ) ĊĠĠĠ Ġprivate Ġval Ġpaint Ġ= ĠPaint () ĊĠĠĠ Ġprivate Ġval Ġcells Ġ= ĠarrayOf < View Icon >( Tools View . inflate ( R . layout . z _ icon ), ĠTools View . inflate ( R . layout . z _ icon ), ĠTools View . inflate ( R . layout . z _ icon ), ĠTools View . inflate ( R . layout . z _ icon ), ĠTools View . inflate ( R . layout . z _ icon ), ĠTools View . inflate ( R . layout . z _ icon ), ĠTools View . inflate ( R . layout . z _ icon ), ĠTools View . inflate ( R . layout . z _ icon ), ĠTools View . inflate ( R . layout . z _ icon )) ĊĠĠĠ Ġprivate Ġvar Ġlast Move Index Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġwin Line 1 Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġwin Line 2 Ġ= Ġ- 1 ĊĠĠĠ Ġprivate Ġvar Ġgame Code Ġ= Ġ 0 L ĊĠĠĠ Ġprivate Ġval Ġanimation Delta Ġ= ĠDelta () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġset Will Not Draw ( false ) ĊĠĠĠĠĠĠĠ Ġpaint . color Ġ= Ġcurrent Color ĊĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġcells ) Ġi . Ġset Filter ( currentColor ) ĊĠĠĠĠĠĠĠ Ġpaint . stroke Width Ġ= ĠDP ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġcells . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġcells [ i ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd View ( v ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . setImage Drawable ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . set Padding ( Tools View . dp To Px ( 4 ). toInt (), ĠTools View . dp To Px ( 4 ). toInt (), ĠTools View . dp To Px ( 4 ). toInt (), ĠTools View . dp To Px ( 4 ). toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Cell ( PLAYER _ HUM AN , Ġi ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! check Win For ( i )) Ġpc Turn () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġpc Turn () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġrestart () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( v Ġin Ġcells ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . setImage Drawable ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġv . tag Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġlast Move Index Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġwin Line 1 Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġwin Line 2 Ġ= Ġ- 1 ĊĠĠĠĠĠĠĠ Ġanimation Delta . clear () ĊĠĠĠĠĠĠĠ Ġgame Code Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ Ġpc Turn () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Cell _ X ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ index ]. tag Ġ!= Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠ Ġset Cell ( PLAYER _ ROBOT , Ġindex ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Cell With Check _ X ( index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġset Cell ( PLAYER _ ROBOT , Ġindex ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcheck Win For ( index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Cell _ O ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Cell ( PLAYER _ HUM AN , Ġindex ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Cell ( player : ĠInt , Ġindex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlast Move Index Ġ= Ġindex ĊĠĠĠĠĠĠĠ Ġcells [ index ]. tag Ġ= Ġplayer ĊĠĠĠĠĠĠĠ Ġcells [ index ]. setImage Drawable ( if Ġ( player Ġ== Ġ 1 ) ĠTools Resources . get Drawable ( R . drawable . ic _ clear _ white _ 2 4 dp ) Ġelse ĠTools Resources . get Drawable ( R . drawable . ic _ pan orama _ fish _ eye _ white _ 2 4 dp )) ĊĠĠĠĠĠĠĠ Ġcells [ index ]. visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġcells [ index ]. set Filter ( currentColor ) ĊĠĠĠĠĠĠĠ ĠTools View . from Alpha ( cells [ index ], Ġ 6 0 0 ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ ĠGame ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġprivate Ġfun Ġhuman Turn () Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( n Ġin Ġcells ) Ġn . is Clickable Ġ= Ġn . tag Ġ== Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpc Turn () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġgame Code ĊĠĠĠĠĠĠĠ Ġfor Ġ( n Ġin Ġcells ) Ġn . is Clickable Ġ= Ġfalse ĊĠĠĠĠĠĠĠ ĠTools Threads . main ( 6 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Ġ!= Ġgame Code ) Ġreturn @ main ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! check Pc Win Move ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! check Pc Def Move ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpc Move () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Win For ( last Move Index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( win Line 1 Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġempty Ġ= Ġget Empty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( empty . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTools Threads . main ( 2 0 0 0 ) Ġ{ Ġif Ġ( code Ġ== Ġgame Code ) Ġrestart () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhuman Turn () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Pc Win Move (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpp Ġ= ĠP LAYER _ ROBOT ĊĠĠĠĠĠĠĠ Ġval Ġlast Ġ= Ġlast Move Index ĊĊĠĠĠĠĠĠĠ Ġ// ĠĠ 0 ĠHorizontal ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġpp Ġ&& Ġpl r ( 1 ) Ġ== Ġpp Ġ&& Ġpl r ( 2 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 2 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġpp Ġ&& Ġpl r ( 1 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 2 ) Ġ== Ġpp ) Ġset Cell _ X ( 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 1 ) Ġ== Ġpp Ġ&& Ġpl r ( 2 ) Ġ== Ġpp ) Ġset Cell _ X ( 0 ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠ 0 ĠVertical ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġpp Ġ&& Ġpl r ( 3 ) Ġ== Ġpp Ġ&& Ġpl r ( 6 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 6 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġpp Ġ&& Ġpl r ( 3 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 6 ) Ġ== Ġpp ) Ġset Cell _ X ( 3 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 3 ) Ġ== Ġpp Ġ&& Ġpl r ( 6 ) Ġ== Ġpp ) Ġset Cell _ X ( 0 ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠ 8 ĠHorizontal ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 8 ) Ġ== Ġpp Ġ&& Ġpl r ( 5 ) Ġ== Ġpp Ġ&& Ġpl r ( 2 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 2 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 8 ) Ġ== Ġpp Ġ&& Ġpl r ( 5 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 2 ) Ġ== Ġpp ) Ġset Cell _ X ( 5 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 8 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 5 ) Ġ== Ġpp Ġ&& Ġpl r ( 2 ) Ġ== Ġpp ) Ġset Cell _ X ( 8 ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠ 8 ĠVertical ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 8 ) Ġ== Ġpp Ġ&& Ġpl r ( 7 ) Ġ== Ġpp Ġ&& Ġpl r ( 6 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 6 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 8 ) Ġ== Ġpp Ġ&& Ġpl r ( 7 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 6 ) Ġ== Ġpp ) Ġset Cell _ X ( 7 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 8 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 7 ) Ġ== Ġpp Ġ&& Ġpl r ( 6 ) Ġ== Ġpp ) Ġset Cell _ X ( 8 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 8 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 8 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 8 ) Ġ== Ġpp ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 8 ) Ġ== Ġpp ) Ġset Cell _ X ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 2 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 6 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 6 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 2 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 6 ) Ġ== Ġpp ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 2 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 6 ) Ġ== Ġpp ) Ġset Cell _ X ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 1 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 7 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 7 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 1 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 7 ) Ġ== Ġpp ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 1 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 7 ) Ġ== Ġpp ) Ġset Cell _ X ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 3 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 5 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 5 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 3 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 5 ) Ġ== Ġpp ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 3 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 5 ) Ġ== Ġpp ) Ġset Cell _ X ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ!= Ġlast Move Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Win For ( last Move Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Pc Def Move (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpp Ġ= ĠP LAYER _ HUM AN ĊĠĠĠĠĠĠĠ Ġval Ġlast Ġ= Ġlast Move Index ĊĠĠĠĠĠĠĠ Ġ// ĠĠ 0 ĠHorizontal ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġpp Ġ&& Ġpl r ( 1 ) Ġ== Ġpp Ġ&& Ġpl r ( 2 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 2 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġpp Ġ&& Ġpl r ( 1 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 2 ) Ġ== Ġpp ) Ġset Cell _ X ( 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 1 ) Ġ== Ġpp Ġ&& Ġpl r ( 2 ) Ġ== Ġpp ) Ġset Cell _ X ( 0 ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠ 0 ĠVertical ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġpp Ġ&& Ġpl r ( 3 ) Ġ== Ġpp Ġ&& Ġpl r ( 6 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 6 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġpp Ġ&& Ġpl r ( 3 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 6 ) Ġ== Ġpp ) Ġset Cell _ X ( 3 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 3 ) Ġ== Ġpp Ġ&& Ġpl r ( 6 ) Ġ== Ġpp ) Ġset Cell _ X ( 0 ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠ 8 ĠHorizontal ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 8 ) Ġ== Ġpp Ġ&& Ġpl r ( 5 ) Ġ== Ġpp Ġ&& Ġpl r ( 2 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 2 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 8 ) Ġ== Ġpp Ġ&& Ġpl r ( 5 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 2 ) Ġ== Ġpp ) Ġset Cell _ X ( 5 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 8 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 5 ) Ġ== Ġpp Ġ&& Ġpl r ( 2 ) Ġ== Ġpp ) Ġset Cell _ X ( 8 ) ĊĠĠĠĠĠĠĠ Ġ// ĠĠ 8 ĠVertical ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 8 ) Ġ== Ġpp Ġ&& Ġpl r ( 7 ) Ġ== Ġpp Ġ&& Ġpl r ( 6 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 6 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 8 ) Ġ== Ġpp Ġ&& Ġpl r ( 7 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 6 ) Ġ== Ġpp ) Ġset Cell _ X ( 7 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 8 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 7 ) Ġ== Ġpp Ġ&& Ġpl r ( 6 ) Ġ== Ġpp ) Ġset Cell _ X ( 8 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 8 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 8 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 8 ) Ġ== Ġpp ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 8 ) Ġ== Ġpp ) Ġset Cell _ X ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 2 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 6 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 6 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 2 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 6 ) Ġ== Ġpp ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 2 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 6 ) Ġ== Ġpp ) Ġset Cell _ X ( 2 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 1 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 7 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 7 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 1 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 7 ) Ġ== Ġpp ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 1 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 7 ) Ġ== Ġpp ) Ġset Cell _ X ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 3 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 5 ) Ġ== Ġ- 1 ) Ġset Cell _ X ( 5 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 3 ) Ġ== Ġpp Ġ&& Ġpl r ( 4 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 5 ) Ġ== Ġpp ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 3 ) Ġ== Ġ- 1 Ġ&& Ġpl r ( 4 ) Ġ== Ġpp Ġ&& Ġpl r ( 5 ) Ġ== Ġpp ) Ġset Cell _ X ( 3 ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ!= Ġlast Move Index ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Win For ( last Move Index ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Win For ( index : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġp Ġ= Ġpl r ( index ) ĊĠĠĠĠĠĠĠ Ġvar Ġwin Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġif Ġ(( index Ġ== Ġ 0 Ġ|| Ġindex Ġ== Ġ 1 Ġ|| Ġindex Ġ== Ġ 2 ) Ġ&& Ġpl r ( 0 ) Ġ== Ġp Ġ&& Ġpl r ( 1 ) Ġ== Ġp Ġ&& Ġpl r ( 2 ) Ġ== Ġp ) Ġ{ ; Ġwin Line 1 Ġ= Ġ 0 ; Ġwin Line 2 Ġ= Ġ 2 ; win Ġ= Ġtrue ; Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(( index Ġ== Ġ 0 Ġ|| Ġindex Ġ== Ġ 3 Ġ|| Ġindex Ġ== Ġ 6 ) Ġ&& Ġpl r ( 0 ) Ġ== Ġp Ġ&& Ġpl r ( 3 ) Ġ== Ġp Ġ&& Ġpl r ( 6 ) Ġ== Ġp ) Ġ{ ; Ġwin Line 1 Ġ= Ġ 0 ; Ġwin Line 2 Ġ= Ġ 6 ; win Ġ= Ġtrue ; Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(( index Ġ== Ġ 8 Ġ|| Ġindex Ġ== Ġ 5 Ġ|| Ġindex Ġ== Ġ 2 ) Ġ&& Ġpl r ( 8 ) Ġ== Ġp Ġ&& Ġpl r ( 5 ) Ġ== Ġp Ġ&& Ġpl r ( 2 ) Ġ== Ġp ) Ġ{ ; Ġwin Line 1 Ġ= Ġ 2 ; Ġwin Line 2 Ġ= Ġ 8 ; win Ġ= Ġtrue ; Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(( index Ġ== Ġ 8 Ġ|| Ġindex Ġ== Ġ 7 Ġ|| Ġindex Ġ== Ġ 6 ) Ġ&& Ġpl r ( 8 ) Ġ== Ġp Ġ&& Ġpl r ( 7 ) Ġ== Ġp Ġ&& Ġpl r ( 6 ) Ġ== Ġp ) Ġ{ ; Ġwin Line 1 Ġ= Ġ 6 ; Ġwin Line 2 Ġ= Ġ 8 ; win Ġ= Ġtrue ; Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(( index Ġ== Ġ 0 Ġ|| Ġindex Ġ== Ġ 8 Ġ|| Ġindex Ġ== Ġ 4 ) Ġ&& Ġpl r ( 0 ) Ġ== Ġp Ġ&& Ġpl r ( 4 ) Ġ== Ġp Ġ&& Ġpl r ( 8 ) Ġ== Ġp ) Ġ{ ; Ġwin Line 1 Ġ= Ġ 0 ; Ġwin Line 2 Ġ= Ġ 8 ; win Ġ= Ġtrue ; Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(( index Ġ== Ġ 2 Ġ|| Ġindex Ġ== Ġ 6 Ġ|| Ġindex Ġ== Ġ 4 ) Ġ&& Ġpl r ( 2 ) Ġ== Ġp Ġ&& Ġpl r ( 6 ) Ġ== Ġp Ġ&& Ġpl r ( 4 ) Ġ== Ġp ) Ġ{ ; Ġwin Line 1 Ġ= Ġ 2 ; Ġwin Line 2 Ġ= Ġ 6 ; win Ġ= Ġtrue ; Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(( index Ġ== Ġ 1 Ġ|| Ġindex Ġ== Ġ 7 Ġ|| Ġindex Ġ== Ġ 4 ) Ġ&& Ġpl r ( 1 ) Ġ== Ġp Ġ&& Ġpl r ( 7 ) Ġ== Ġp Ġ&& Ġpl r ( 4 ) Ġ== Ġp ) Ġ{ ; Ġwin Line 1 Ġ= Ġ 1 ; Ġwin Line 2 Ġ= Ġ 7 ; win Ġ= Ġtrue ; Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(( index Ġ== Ġ 3 Ġ|| Ġindex Ġ== Ġ 5 Ġ|| Ġindex Ġ== Ġ 4 ) Ġ&& Ġpl r ( 3 ) Ġ== Ġp Ġ&& Ġpl r ( 5 ) Ġ== Ġp Ġ&& Ġpl r ( 4 ) Ġ== Ġp ) Ġ{ ; Ġwin Line 1 Ġ= Ġ 3 ; Ġwin Line 2 Ġ= Ġ 5 ; win Ġ= Ġtrue ; Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( win ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( n Ġin Ġcells ) Ġn . is Clickable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcode Ġ= Ġgame Code ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTools Threads . main ( 3 0 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Ġ!= Ġgame Code ) Ġreturn @ main ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestart () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( p Ġ== ĠP LAYER _ HUM AN ) Ġon Win Human . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( p Ġ== ĠP LAYER _ ROBOT ) Ġon Win Robot . invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġwin ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpc Move () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlast Ġ= Ġlast Move Index ĊĠĠĠĠĠĠĠ Ġval Ġpoints Count Ġ= Ġget Points Count () ĊĠĠĠĠĠĠĠ Ġval Ġangles Ġ= Ġget Angles () ĊĠĠĠĠĠĠĠ Ġval Ġsides Ġ= Ġget Side s () ĊĠĠĠĠĠĠĠ Ġval Ġangles Human Ġ= Ġget Angles ( PLAYER _ HUM AN ) ĊĠĠĠĠĠĠĠ Ġval Ġangles Pc Ġ= Ġget Angles ( PLAYER _ ROBOT ) ĊĠĠĠĠĠĠĠ Ġval Ġoutside H Lines Ġ= Ġget Outside H Lines () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( points Count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Cell _ X ( Tools Collections . random ( array Of ( 0 , Ġ 4 , Ġ 4 , Ġ 2 , Ġ 6 , Ġ 8 ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ!= Ġlast Move Index ) Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( points Count Ġ== Ġ 2 Ġ&& Ġpl r ( 4 ) Ġ== ĠP LAYER _ ROBOT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( angles . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sides [ 0 ]. index Ġ== Ġ 1 ) Ġset Cell _ X ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sides [ 0 ]. index Ġ== Ġ 3 ) Ġset Cell _ X ( 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sides [ 0 ]. index Ġ== Ġ 5 ) Ġset Cell _ X ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sides [ 0 ]. index Ġ== Ġ 7 ) Ġset Cell _ X ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( angles [ 0 ]. index Ġ== Ġ 0 ) Ġset Cell _ X ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( angles [ 0 ]. index Ġ== Ġ 2 ) Ġset Cell _ X ( 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( angles [ 0 ]. index Ġ== Ġ 6 ) Ġset Cell _ X ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( angles [ 0 ]. index Ġ== Ġ 8 ) Ġset Cell _ X ( 6 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ!= Ġlast Move Index ) Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( points Count Ġ== Ġ 2 Ġ&& Ġangles . size Ġ== Ġ 1 Ġ&& Ġsides . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles [ 0 ]. index Ġ== Ġ 0 Ġ&& Ġsides [ 0 ]. index Ġ== Ġ 1 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles [ 0 ]. index Ġ== Ġ 0 Ġ&& Ġsides [ 0 ]. index Ġ== Ġ 3 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles [ 0 ]. index Ġ== Ġ 2 Ġ&& Ġsides [ 0 ]. index Ġ== Ġ 1 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles [ 0 ]. index Ġ== Ġ 2 Ġ&& Ġsides [ 0 ]. index Ġ== Ġ 5 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles [ 0 ]. index Ġ== Ġ 6 Ġ&& Ġsides [ 0 ]. index Ġ== Ġ 7 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles [ 0 ]. index Ġ== Ġ 6 Ġ&& Ġsides [ 0 ]. index Ġ== Ġ 3 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles [ 0 ]. index Ġ== Ġ 8 Ġ&& Ġsides [ 0 ]. index Ġ== Ġ 7 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles [ 0 ]. index Ġ== Ġ 8 Ġ&& Ġsides [ 0 ]. index Ġ== Ġ 5 ) Ġset Cell _ X ( 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ!= Ġlast Move Index ) Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( points Count Ġ== Ġ 2 Ġ&& Ġangles Human . size Ġ== Ġ 1 Ġ&& Ġangles Pc . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles Pc [ 0 ]. index Ġ== Ġ 0 Ġ&& Ġangles Human [ 0 ]. index Ġ== Ġ 2 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles Pc [ 0 ]. index Ġ== Ġ 0 Ġ&& Ġangles Human [ 0 ]. index Ġ== Ġ 6 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles Pc [ 0 ]. index Ġ== Ġ 2 Ġ&& Ġangles Human [ 0 ]. index Ġ== Ġ 0 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles Pc [ 0 ]. index Ġ== Ġ 2 Ġ&& Ġangles Human [ 0 ]. index Ġ== Ġ 8 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles Pc [ 0 ]. index Ġ== Ġ 6 Ġ&& Ġangles Human [ 0 ]. index Ġ== Ġ 0 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles Pc [ 0 ]. index Ġ== Ġ 6 Ġ&& Ġangles Human [ 0 ]. index Ġ== Ġ 8 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles Pc [ 0 ]. index Ġ== Ġ 8 Ġ&& Ġangles Human [ 0 ]. index Ġ== Ġ 2 ) Ġset Cell _ X ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġangles Pc [ 0 ]. index Ġ== Ġ 8 Ġ&& Ġangles Human [ 0 ]. index Ġ== Ġ 6 ) Ġset Cell _ X ( 4 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ!= Ġlast Move Index ) Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( points Count Ġ== Ġ 4 Ġ&& Ġpl r ( 4 ) Ġ== ĠP LAYER _ ROBOT Ġ&& Ġoutside H Lines . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġoutside H Lines [ 0 ]. index 1 Ġ== Ġ 1 Ġ&& Ġoutside H Lines [ 0 ]. index 2 Ġ== Ġ 2 ) Ġset Cell _ X ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġoutside H Lines [ 0 ]. index 1 Ġ== Ġ 5 Ġ&& Ġoutside H Lines [ 0 ]. index 2 Ġ== Ġ 8 ) Ġset Cell _ X ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġoutside H Lines [ 0 ]. index 1 Ġ== Ġ 7 Ġ&& Ġoutside H Lines [ 0 ]. index 2 Ġ== Ġ 6 ) Ġset Cell _ X ( 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġoutside H Lines [ 0 ]. index 1 Ġ== Ġ 3 Ġ&& Ġoutside H Lines [ 0 ]. index 2 Ġ== Ġ 0 ) Ġset Cell _ X ( 6 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ!= Ġlast Move Index ) Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( points Count Ġ== Ġ 6 Ġ&& Ġpl r ( 4 ) Ġ== ĠP LAYER _ ROBOT Ġ&& Ġoutside H Lines . isEmpty () Ġ&& Ġangles . size Ġ== Ġ 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 2 ) Ġ== ĠP LAYER _ ROBOT ) Ġset Cell _ X ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 8 ) Ġ== ĠP LAYER _ ROBOT ) Ġset Cell _ X ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 6 ) Ġ== ĠP LAYER _ ROBOT ) Ġset Cell _ X ( 7 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ== Ġlast Move Index Ġ&& Ġpl r ( 0 ) Ġ== ĠP LAYER _ ROBOT ) Ġset Cell _ X ( 3 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( last Ġ!= Ġlast Move Index ) Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( last Ġ!= Ġlast Move Index ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġempty Ġ= Ġget Empty () ĊĠĠĠĠĠĠĠ Ġif Ġ( empty . isEmpty ()) Ġrestart () ĊĠĠĠĠĠĠĠ Ġelse Ġset Cell _ X ( empty [ Tools Math . random Int ( 0 , Ġempty . size Ġ- Ġ 1 )]. index ) ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ ĠSupport ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠPoint ( val Ġindex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayer : ĠInt Ġ= Ġpl r ( index ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠH Line ( val Ġindex 1 : ĠInt , Ġval Ġindex 2 : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġplayer : ĠInt Ġ= Ġpl r ( index 1 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġpl r ( index : ĠInt ) Ġ= Ġif Ġ( cells [ index ]. tag Ġ== Ġnull ) Ġ- 1 Ġelse Ġcells [ index ]. tag Ġas ĠInt ĊĊĠĠĠ Ġprivate Ġfun Ġget Angles (): ĠArray < Point > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Point >() ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 0 ]. tag Ġ!= Ġnull ) Ġlist . add ( Point ( 0 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 2 ]. tag Ġ!= Ġnull ) Ġlist . add ( Point ( 2 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 6 ]. tag Ġ!= Ġnull ) Ġlist . add ( Point ( 6 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 8 ]. tag Ġ!= Ġnull ) Ġlist . add ( Point ( 8 )) ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Empty (): ĠArray < Point > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Point >() ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġcells . indices ) Ġif Ġ( cells [ i ]. tag Ġ== Ġnull ) Ġlist . add ( Point ( i )) ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Angles ( player : ĠInt ): ĠArray < Point > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Point >() ĊĠĠĠĠĠĠĠ Ġval Ġangles Ġ= Ġget Angles () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġangles ) Ġif Ġ( i . player Ġ== Ġplayer ) Ġlist . add ( i ) ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Points Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcount Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġcells ) Ġif Ġ( i . tag Ġ!= Ġnull ) Ġcount ++ ĊĠĠĠĠĠĠĠ Ġreturn Ġcount ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Side s (): ĠArray < Point > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < Point >() ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 1 ]. tag Ġ!= Ġnull ) Ġlist . add ( Point ( 1 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 3 ]. tag Ġ!= Ġnull ) Ġlist . add ( Point ( 3 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 5 ]. tag Ġ!= Ġnull ) Ġlist . add ( Point ( 5 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 7 ]. tag Ġ!= Ġnull ) Ġlist . add ( Point ( 7 )) ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Outside H Lines (): ĠArray < H Line > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠArrayList < H Line >() ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 0 ]. tag Ġ!= Ġnull Ġ&& Ġcells [ 1 ]. tag Ġ== Ġcells [ 0 ]. tag ) Ġlist . add ( H Line ( 0 , Ġ 1 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 1 ]. tag Ġ!= Ġnull Ġ&& Ġcells [ 2 ]. tag Ġ== Ġcells [ 1 ]. tag ) Ġlist . add ( H Line ( 1 , Ġ 2 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 0 ]. tag Ġ!= Ġnull Ġ&& Ġcells [ 3 ]. tag Ġ== Ġcells [ 0 ]. tag ) Ġlist . add ( H Line ( 0 , Ġ 3 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 3 ]. tag Ġ!= Ġnull Ġ&& Ġcells [ 6 ]. tag Ġ== Ġcells [ 3 ]. tag ) Ġlist . add ( H Line ( 3 , Ġ 6 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 7 ]. tag Ġ!= Ġnull Ġ&& Ġcells [ 8 ]. tag Ġ== Ġcells [ 7 ]. tag ) Ġlist . add ( H Line ( 7 , Ġ 8 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 6 ]. tag Ġ!= Ġnull Ġ&& Ġcells [ 7 ]. tag Ġ== Ġcells [ 6 ]. tag ) Ġlist . add ( H Line ( 6 , Ġ 7 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 2 ]. tag Ġ!= Ġnull Ġ&& Ġcells [ 5 ]. tag Ġ== Ġcells [ 2 ]. tag ) Ġlist . add ( H Line ( 2 , Ġ 5 )) ĊĠĠĠĠĠĠĠ Ġif Ġ( cells [ 5 ]. tag Ġ!= Ġnull Ġ&& Ġcells [ 8 ]. tag Ġ== Ġcells [ 5 ]. tag ) Ġlist . add ( H Line ( 5 , Ġ 8 )) ĊĠĠĠĠĠĠĠ Ġreturn Ġlist . to Typed Array () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// Ġ ĠDraw ing ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġoverride Ġfun Ġon Draw ( canvas : ĠCanvas ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Draw ( canvas ) ĊĠĠĠĠĠĠĠ Ġif Ġ( canvas Ġ== Ġnull ) Ġreturn ĊĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( 0 f , Ġ 0 f , Ġwidth . toFloat (), Ġ 0 f , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( 0 f , Ġ 0 f , Ġ 0 f , Ġheight . toFloat (), Ġpaint ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width . toFloat (), Ġheight . toFloat (), Ġwidth . toFloat (), Ġ 0 f , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width . toFloat (), Ġheight . toFloat (), Ġ 0 f , Ġheight . toFloat (), Ġpaint ) ĊĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width Ġ/ Ġ 3 f , Ġ 0 f , Ġwidth Ġ/ Ġ 3 f , Ġheight . toFloat (), Ġpaint ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width Ġ/ Ġ 3 f Ġ* Ġ 2 , Ġ 0 f , Ġwidth Ġ/ Ġ 3 f Ġ* Ġ 2 , Ġheight . toFloat (), Ġpaint ) ĊĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( 0 f , Ġheight Ġ/ Ġ 3 f , Ġwidth . toFloat (), Ġheight Ġ/ Ġ 3 f , Ġpaint ) ĊĠĠĠĠĠĠĠ Ġcanvas . draw Line ( 0 f , Ġheight Ġ/ Ġ 3 f Ġ* Ġ 2 , Ġwidth . toFloat (), Ġheight Ġ/ Ġ 3 f Ġ* Ġ 2 , Ġpaint ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( win Line 1 Ġ!= Ġ- 1 Ġ&& Ġwin Line 2 Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdelta Ms Ġ= Ġanimation Delta . total Time Ms () Ġ/ Ġ 2 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( win Line 1 Ġ== Ġ 0 Ġ&& Ġwin Line 2 Ġ== Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( 0 f , Ġheight Ġ/ Ġ 6 f , Ġwidth Ġ* Ġdelta Ms , Ġheight Ġ/ Ġ 6 f , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width . toFloat (), Ġheight Ġ/ Ġ 6 f , Ġwidth Ġ- Ġ( width Ġ* Ġdelta Ms ), Ġheight Ġ/ Ġ 6 f , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( win Line 1 Ġ== Ġ 6 Ġ&& Ġwin Line 2 Ġ== Ġ 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( 0 f , Ġheight Ġ/ Ġ 6 f Ġ* Ġ 5 , Ġwidth Ġ* Ġdelta Ms , Ġheight Ġ/ Ġ 6 f Ġ* Ġ 5 , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width . toFloat (), Ġheight Ġ/ Ġ 6 f Ġ* Ġ 5 , Ġwidth Ġ- Ġ( width Ġ* Ġdelta Ms ), Ġheight Ġ/ Ġ 6 f Ġ* Ġ 5 , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( win Line 1 Ġ== Ġ 0 Ġ&& Ġwin Line 2 Ġ== Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width Ġ/ Ġ 6 f , Ġ 0 f , Ġwidth Ġ/ Ġ 6 f , Ġheight . toFloat () Ġ* Ġdelta Ms , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width Ġ/ Ġ 6 f , Ġheight . toFloat (), Ġwidth Ġ/ Ġ 6 f , Ġheight . toFloat () Ġ- Ġ( height . toFloat () Ġ* Ġdelta Ms ), Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( win Line 1 Ġ== Ġ 2 Ġ&& Ġwin Line 2 Ġ== Ġ 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width Ġ/ Ġ 6 f Ġ* Ġ 5 , Ġ 0 f , Ġwidth Ġ/ Ġ 6 f Ġ* Ġ 5 , Ġheight . toFloat () Ġ* Ġdelta Ms , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width Ġ/ Ġ 6 f Ġ* Ġ 5 , Ġheight . toFloat (), Ġwidth Ġ/ Ġ 6 f Ġ* Ġ 5 , Ġheight . toFloat () Ġ- Ġ( height . toFloat () Ġ* Ġdelta Ms ), Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( win Line 1 Ġ== Ġ 0 Ġ&& Ġwin Line 2 Ġ== Ġ 8 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( 0 f , Ġ 0 f , Ġwidth . toFloat () Ġ* Ġdelta Ms , Ġheight . toFloat () Ġ* Ġdelta Ms , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width . toFloat (), Ġheight . toFloat (), Ġwidth . toFloat () Ġ- Ġ( width . toFloat () Ġ* Ġdelta Ms ), Ġheight . toFloat () Ġ- Ġ( height . toFloat () Ġ* Ġdelta Ms ), Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( win Line 1 Ġ== Ġ 2 Ġ&& Ġwin Line 2 Ġ== Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width . toFloat (), Ġ 0 f , Ġwidth . toFloat () Ġ- Ġ( width . toFloat () Ġ* Ġdelta Ms ), Ġheight . toFloat () Ġ* Ġdelta Ms , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( 0 f , Ġheight . toFloat (), Ġwidth . toFloat () Ġ* Ġdelta Ms , Ġheight . toFloat () Ġ- Ġ( height . toFloat () Ġ* Ġdelta Ms ), Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( win Line 1 Ġ== Ġ 3 Ġ&& Ġwin Line 2 Ġ== Ġ 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( 0 f , Ġheight Ġ/ Ġ 2 f , Ġwidth . toFloat () Ġ* Ġdelta Ms , Ġheight Ġ/ Ġ 2 f , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width . toFloat (), Ġheight Ġ/ Ġ 2 f , Ġwidth . toFloat () Ġ- Ġ( width . toFloat () Ġ* Ġdelta Ms ), Ġheight Ġ/ Ġ 2 f , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( win Line 1 Ġ== Ġ 1 Ġ&& Ġwin Line 2 Ġ== Ġ 7 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width Ġ/ Ġ 2 f , Ġ 0 f , Ġwidth Ġ/ Ġ 2 f , Ġheight . toFloat () Ġ* Ġdelta Ms , Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcanvas . draw Line ( width Ġ/ Ġ 2 f , Ġheight . toFloat (), Ġwidth Ġ/ Ġ 2 f , Ġheight . toFloat () Ġ- Ġ( height . toFloat () Ġ* Ġdelta Ms ), Ġpaint ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Layout ( changed : ĠBoolean , Ġleft : ĠInt , Ġtop : ĠInt , Ġright : ĠInt , Ġbottom : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Layout ( changed , Ġleft , Ġtop , Ġright , Ġbottom ) ĊĊĠĠĠĠĠĠĠ Ġ( cells [ 1 ]. layout Params Ġas ĠLayout Params ). left Margin Ġ= Ġwidth Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠ Ġ( cells [ 2 ]. layout Params Ġas ĠLayout Params ). left Margin Ġ= Ġwidth Ġ/ Ġ 3 Ġ* Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġ( cells [ 3 ]. layout Params Ġas ĠLayout Params ). top Margin Ġ= Ġheight Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠ Ġ( cells [ 4 ]. layout Params Ġas ĠLayout Params ). top Margin Ġ= Ġheight Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠ Ġ( cells [ 4 ]. layout Params Ġas ĠLayout Params ). left Margin Ġ= Ġwidth Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠ Ġ( cells [ 5 ]. layout Params Ġas ĠLayout Params ). top Margin Ġ= Ġheight Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠ Ġ( cells [ 5 ]. layout Params Ġas ĠLayout Params ). left Margin Ġ= Ġwidth Ġ/ Ġ 3 Ġ* Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġ( cells [ 6 ]. layout Params Ġas ĠLayout Params ). top Margin Ġ= Ġheight Ġ/ Ġ 3 Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġ( cells [ 7 ]. layout Params Ġas ĠLayout Params ). top Margin Ġ= Ġheight Ġ/ Ġ 3 Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġ( cells [ 7 ]. layout Params Ġas ĠLayout Params ). left Margin Ġ= Ġwidth Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠ Ġ( cells [ 8 ]. layout Params Ġas ĠLayout Params ). top Margin Ġ= Ġheight Ġ/ Ġ 3 Ġ* Ġ 2 ĊĠĠĠĠĠĠĠ Ġ( cells [ 8 ]. layout Params Ġas ĠLayout Params ). left Margin Ġ= Ġwidth Ġ/ Ġ 3 Ġ* Ġ 2 ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġcells ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i . layout Params . width Ġ== Ġwidth Ġ/ Ġ 3 ) Ġcontinue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi . layout Params . width Ġ= Ġwidth Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi . layout Params . height Ġ= Ġheight Ġ/ Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi . request Layout () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ } Ċ