import Ġjava . io .* Ċ import Ġjava . util .* Ċ Ċ class ĠState Ġ{ ĊĠĠĠ Ġprivate Ġvar ĠstartTime : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar ĠendTime : ĠLong Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġtotal Time Ġ= Ġ 5 f ĊĊĠĠĠ Ġprivate Ġvar Ġpiece From : ĠChar Ġ= Ġ 0 . to Char () ĊĠĠĠ Ġprivate Ġvar Ġpiece To : ĠChar Ġ= Ġ 0 . to Char () ĊĊĠĠĠ Ġprivate Ġvar Ġmove Hist Ġ= ĠArrayList < Mutable List < String >>() ĊĠĠĠ Ġprivate Ġvar Ġmove Temp Ġ= ĠArrayList < Mutable List < String >>() ĊĊĠĠĠ Ġinterface ĠConstants Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠQ UE EN Ġ= Ġ 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠRO OK Ġ= Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠB ISH OP Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠK N IGHT Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠPA WN Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmove Gen ( move List : ĠArrayList < Mutable List < String >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( row Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( col Ġin Ġ 0 .. 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( turn Ġ== Ġ' W ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ== Ġ' K ' Ġ-> Ġking Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ== Ġ' Q ' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiagonal Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstraight Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ== Ġ' B ' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiagonal Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb ish op Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ== Ġ' N ' Ġ-> Ġk night Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ== Ġ' R ' Ġ-> Ġstraight Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ== Ġ' P ' Ġ-> Ġp awn Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( turn Ġ== Ġ' B ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ== Ġ' k ' Ġ-> Ġking Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ== Ġ' q ' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiagonal Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstraight Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ== Ġ' b ' Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdiagonal Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb ish op Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ== Ġ' n ' Ġ-> Ġk night Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ== Ġ' r ' Ġ-> Ġstraight Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ== Ġ' p ' Ġ-> Ġp awn Move ( row , Ġcol , Ġmove List ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstraight Move ( row : ĠInt , Ġcol : ĠInt , Ġmove List : ĠArrayList < Mutable List < String >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġx : ĠInt Ġ= Ġrow Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġy : ĠInt Ġ= Ġcol ĊĊĠĠĠĠĠĠĠ Ġval Ġsquare Ġ= ĠSquare () ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( square . on Board ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! square . pawn Blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( square . pawn Blocked ( x , Ġy ) Ġ&& Ġ! square . blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġx Ġ= Ġrow Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġy Ġ= Ġcol ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( square . on Board ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! square . pawn Blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( square . pawn Blocked ( x , Ġy ) Ġ&& Ġ! square . blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġx Ġ= Ġrow ĊĠĠĠĠĠĠĠ Ġy Ġ= Ġcol Ġ+ Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( square . on Board ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! square . pawn Blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( square . pawn Blocked ( x , Ġy ) Ġ&& Ġ! square . blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġx Ġ= Ġrow ĊĠĠĠĠĠĠĠ Ġy Ġ= Ġcol Ġ- Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( square . on Board ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! square . pawn Blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( square . pawn Blocked ( x , Ġy ) Ġ&& Ġ! square . blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdiagonal Move ( row : ĠInt , Ġcol : ĠInt , Ġmove List : ĠArrayList < Mutable List < String >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġx : ĠInt Ġ= Ġrow Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġvar Ġy : ĠInt Ġ= Ġcol Ġ+ Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġval Ġsquare Ġ= ĠSquare () ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( square . on Board ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! square . pawn Blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( square . pawn Blocked ( x , Ġy ) Ġ&& Ġ! square . blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġx Ġ= Ġrow Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġy Ġ= Ġcol Ġ- Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( square . on Board ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! square . pawn Blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( square . pawn Blocked ( x , Ġy ) Ġ&& Ġ! square . blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġx Ġ= Ġrow Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġy Ġ= Ġcol Ġ+ Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( square . on Board ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! square . pawn Blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( square . pawn Blocked ( x , Ġy ) Ġ&& Ġ! square . blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġx Ġ= Ġrow Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġy Ġ= Ġcol Ġ- Ġ 1 ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( square . on Board ( y , Ġx )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! square . pawn Blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( square . pawn Blocked ( x , Ġy ) Ġ&& Ġ! square . blocked ( x , Ġy )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ x ][ y ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġy Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġb ish op Move ( row : ĠInt , Ġcol : ĠInt , Ġmove List : ĠArrayList < Mutable List < String >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsquare Ġ= ĠSquare () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ+ Ġ 1 , Ġcol ) Ġ&& Ġ! square . pawn Blocked ( row Ġ+ Ġ 1 , Ġcol )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ+ Ġ 1 ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row , Ġcol Ġ+ Ġ 1 ) Ġ&& Ġ! square . pawn Blocked ( row , Ġcol Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col Ġ+ Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ- Ġ 1 , Ġcol ) Ġ&& Ġ! square . pawn Blocked ( row Ġ- Ġ 1 , Ġcol )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ- Ġ 1 ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row , Ġcol Ġ- Ġ 1 ) Ġ&& Ġ! square . pawn Blocked ( row , Ġcol Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġking Move ( row : ĠInt , Ġcol : ĠInt , Ġmove List : ĠArrayList < Mutable List < String >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsquare Ġ= ĠSquare () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ+ Ġ 1 , Ġcol ) Ġ&& Ġ! square . blocked ( row Ġ+ Ġ 1 , Ġcol )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ+ Ġ 1 ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row , Ġcol Ġ+ Ġ 1 ) Ġ&& Ġ! square . blocked ( row , Ġcol Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col Ġ+ Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ- Ġ 1 , Ġcol ) Ġ&& Ġ! square . blocked ( row Ġ- Ġ 1 , Ġcol )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ- Ġ 1 ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row , Ġcol Ġ- Ġ 1 ) Ġ&& Ġ! square . blocked ( row , Ġcol Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ+ Ġ 1 , Ġcol Ġ+ Ġ 1 ) Ġ&& Ġ! square . blocked ( row Ġ+ Ġ 1 , Ġcol Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ+ Ġ 1 ][ col Ġ+ Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ+ Ġ 1 , Ġcol Ġ- Ġ 1 ) Ġ&& Ġ! square . blocked ( row Ġ+ Ġ 1 , Ġcol Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ+ Ġ 1 ][ col Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ- Ġ 1 , Ġcol Ġ+ Ġ 1 ) Ġ&& Ġ! square . blocked ( row Ġ- Ġ 1 , Ġcol Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ- Ġ 1 ][ col Ġ+ Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ- Ġ 1 , Ġcol Ġ- Ġ 1 ) Ġ&& Ġ! square . blocked ( row Ġ- Ġ 1 , Ġcol Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ- Ġ 1 ][ col Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġk night Move ( row : ĠInt , Ġcol : ĠInt , Ġmove List : ĠArrayList < Mutable List < String >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsquare Ġ= ĠSquare () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ+ Ġ 2 , Ġcol Ġ+ Ġ 1 ) Ġ&& Ġ! square . blocked ( row Ġ+ Ġ 2 , Ġcol Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ+ Ġ 2 ][ col Ġ+ Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ+ Ġ 2 , Ġcol Ġ- Ġ 1 ) Ġ&& Ġ! square . blocked ( row Ġ+ Ġ 2 , Ġcol Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ+ Ġ 2 ][ col Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ- Ġ 2 , Ġcol Ġ- Ġ 1 ) Ġ&& Ġ! square . blocked ( row Ġ- Ġ 2 , Ġcol Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ- Ġ 2 ][ col Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ- Ġ 2 , Ġcol Ġ+ Ġ 1 ) Ġ&& Ġ! square . blocked ( row Ġ- Ġ 2 , Ġcol Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ- Ġ 2 ][ col Ġ+ Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ+ Ġ 1 , Ġcol Ġ+ Ġ 2 ) Ġ&& Ġ! square . blocked ( row Ġ+ Ġ 1 , Ġcol Ġ+ Ġ 2 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ+ Ġ 1 ][ col Ġ+ Ġ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ+ Ġ 1 , Ġcol Ġ- Ġ 2 ) Ġ&& Ġ! square . blocked ( row Ġ+ Ġ 1 , Ġcol Ġ- Ġ 2 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ+ Ġ 1 ][ col Ġ- Ġ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ- Ġ 1 , Ġcol Ġ+ Ġ 2 ) Ġ&& Ġ! square . blocked ( row Ġ- Ġ 1 , Ġcol Ġ+ Ġ 2 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ- Ġ 1 ][ col Ġ+ Ġ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ- Ġ 1 , Ġcol Ġ- Ġ 2 ) Ġ&& Ġ! square . blocked ( row Ġ- Ġ 1 , Ġcol Ġ- Ġ 2 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ- Ġ 1 ][ col Ġ- Ġ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġp awn Move ( row : ĠInt , Ġcol : ĠInt , Ġmove List : ĠArrayList < Mutable List < String >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsquare Ġ= ĠSquare () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( turn Ġ== Ġ' W ' Ġ&& ĠBoard . board [ row ][ col ] Ġ== Ġ' P ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ- Ġ 1 , Ġcol ) Ġ&& Ġ! square . pawn Blocked ( row Ġ- Ġ 1 , Ġcol )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ- Ġ 1 ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! square . on Board ( row Ġ- Ġ 1 , Ġcol )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( gen Move [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ- Ġ 1 , Ġcol Ġ+ Ġ 1 ) Ġ&& Ġsquare . pawn Blocked ( row Ġ- Ġ 1 , Ġcol Ġ+ Ġ 1 ) Ġ&& Ġ! square . blocked ( row Ġ- Ġ 1 , Ġcol Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ- Ġ 1 ][ col Ġ+ Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ- Ġ 1 , Ġcol Ġ- Ġ 1 ) Ġ&& Ġsquare . pawn Blocked ( row Ġ- Ġ 1 , Ġcol Ġ- Ġ 1 ) Ġ&& Ġ! square . blocked ( row Ġ- Ġ 1 , Ġcol Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ- Ġ 1 ][ col Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( turn Ġ== Ġ' B ' Ġ&& ĠBoard . board [ row ][ col ] Ġ== Ġ' p ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ+ Ġ 1 , Ġcol ) Ġ&& Ġ! square . pawn Blocked ( row Ġ+ Ġ 1 , Ġcol )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ+ Ġ 1 ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! square . on Board ( row Ġ+ Ġ 1 , Ġcol )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( gen Move [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ+ Ġ 1 , Ġcol Ġ+ Ġ 1 ) Ġ&& Ġsquare . pawn Blocked ( row Ġ+ Ġ 1 , Ġcol Ġ+ Ġ 1 ) Ġ&& Ġ! square . blocked ( row Ġ+ Ġ 1 , Ġcol Ġ+ Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ+ Ġ 1 ][ col Ġ+ Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( square . on Board ( row Ġ+ Ġ 1 , Ġcol Ġ- Ġ 1 ) Ġ&& Ġsquare . pawn Blocked ( row Ġ+ Ġ 1 , Ġcol Ġ- Ġ 1 ) Ġ&& Ġ! square . blocked ( row Ġ+ Ġ 1 , Ġcol Ġ- Ġ 1 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( Board . coordinate [ row Ġ+ Ġ 1 ][ col Ġ- Ġ 1 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove List . add ( gen Move ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġscore (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġw Score : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġb Score : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġmove Val : ĠInt ĊĊĠĠĠĠĠĠĠ Ġif Ġ( turn Ġ== Ġ' B ' Ġ&& Ġw King Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ- 2 6 ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( turn Ġ== Ġ' W ' Ġ&& Ġb King Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 2 6 ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw Score Ġ= Ġw Queen Ġ* ĠConstants . QUE EN Ġ+ Ġw B ish op Ġ* ĠConstants . B ISH OP Ġ+ Ġw K night Ġ* ĠConstants . KN IGHT Ġ+ Ġw R ook Ġ* ĠConstants . RO OK Ġ+ Ġw Pawn Ġ* ĠConstants . PA WN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Score Ġ= Ġb Queen Ġ* ĠConstants . QUE EN Ġ+ Ġb B ish op Ġ* ĠConstants . B ISH OP Ġ+ Ġb K night Ġ* ĠConstants . KN IGHT Ġ+ Ġb R ook Ġ* ĠConstants . RO OK Ġ+ Ġb Pawn Ġ* ĠConstants . PA WN ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove Val Ġ= Ġif Ġ( turn Ġ== Ġ' W ') ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġw Score Ġ- Ġb Score ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb Score Ġ- Ġw Score ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmove Val ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġbest Move () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġdepth Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġvar Ġelapsed Time Ġ= Ġ 0 f ĊĠĠĠĠĠĠĠ ĠstartTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠ ĠendTime Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( java . lang . Float . compare ( elapsed Time , Ġtotal Time ) Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġalpha Beta ( depth , ĠInteger . MIN _ VALUE , ĠInteger . MAX _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Ġ= ĠSystem . currentTimeMillis () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġelapsed Time Ġ= Ġ( endTime Ġ- ĠstartTime ) Ġ/ Ġ 1 0 0 0 f ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepth ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprintln (" Depth : Ġ" Ġ+ Ġdepth Ġ+ Ġ"\ n ") ĊĊĠĠĠĠĠĠĠ Ġval Ġresult : ĠInt ĊĠĠĠĠĠĠĠ Ġval Ġlength : ĠInt Ġ= Ġmove Temp . size ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ( Math . random () Ġ* Ġ( length Ġ- Ġ 1 )). toInt () ĊĠĠĠĠĠĠĠ Ġdo Move ( move Temp [ result ]) ĊĊĠĠĠĠĠĠĠ Ġval Ġmove : ĠMutable List < String > ĊĊĠĠĠĠĠĠĠ Ġmove Ġ= Ġmove Temp [ result ] ĊĊĠĠĠĠĠĠĠ Ġprintln (" ! Ġ" Ġ+ Ġmove [ 0 ] Ġ+ Ġ"-" Ġ+ Ġmove [ 1 ]) ĊĊĠĠĠĠĠĠĠ Ġmove Hist . clear () ĊĠĠĠĠĠĠĠ Ġmove Temp . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġalpha Beta ( depth : ĠInt , Ġalpha : ĠInt , Ġbeta : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġnew Alpha Ġ= Ġalpha ĊĠĠĠĠĠĠĠ Ġval Ġmove List Ġ= ĠArrayList < Mutable List < String >>() ĊĊĠĠĠĠĠĠĠ Ġif Ġ( depth Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġscore () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmove Gen ( move List ) ĊĊĠĠĠĠĠĠĠ ĠCollections . sort ( move List , ĠMOVE _ ORDER ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( move List . size Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Out Ġof Ġmoves .") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( x Ġin Ġmove List . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠendTime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelapsed Time Ġ= Ġ( endTime Ġ- ĠstartTime ) Ġ/ Ġ 1 0 0 0 f ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( java . lang . Float . compare ( elapsed Time , Ġtotal Time ) Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Move ( move List [ x ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmove Hist . add ( move List [ x ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= ĠChar Array ( 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp [ 0 ] Ġ= Ġpiece From ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp [ 1 ] Ġ= Ġpiece To ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( move Hist . size Ġ== Ġ 1 Ġ&& Ġ( w King Ġ== Ġ 0 Ġ|| Ġb King Ġ== Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Temp . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Temp . add ( move Hist [ 0 ]) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġundo Move ( move Temp [ 0 ], Ġtemp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġ- alpha Beta ( depth Ġ- Ġ 1 , Ġ- beta , Ġ- new Alpha ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġundo Move ( move List [ x ], Ġtemp ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( move Hist . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġsize Ġ= Ġmove Hist . size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ-= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( size Ġ< Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Hist . remove At ( size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ>= Ġbeta ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbeta ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ>= Ġnew Alpha ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ== Ġnew Alpha ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( move Hist . size Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Temp . add ( move Hist [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( move Hist . size Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Temp . clear () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove Temp . add ( move Hist [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Alpha Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnew Alpha ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdo Move ( move 2 : ĠMutable List < String >) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġpiece : ĠChar Ġ= Ġ 0 . to Char () ĊĊĠĠĠĠĠĠĠ Ġval Ġmove Ġ= ĠMove () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( row Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( col Ġin Ġ 0 .. 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp : ĠMutable List < String > Ġ= Ġmove 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Board . coordinate [ row ][ col ] Ġ== Ġtemp [ 0 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpiece From Ġ= ĠBoard . board [ row ][ col ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpiece Ġ= ĠBoard . board [ row ][ col ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ= Ġ'.' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( row Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( col Ġin Ġ 0 .. 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemp : ĠMutable List < String > Ġ= Ġmove 2 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Board . coordinate [ row ][ col ] Ġ== Ġtemp [ 1 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( temp [ 1 ] Ġ=== Ġtemp [ 0 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove . pawn Queen ( row , Ġcol ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( turn Ġ== Ġ' W ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ= Ġ' Q ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpiece To Ġ= ĠBoard . board [ row ][ col ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ= Ġ' Q ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( turn Ġ== Ġ' B ') Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ= Ġ' q ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpiece To Ġ= ĠBoard . board [ row ][ col ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ= Ġ' q ' ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove . to Square ( row , Ġcol ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpiece To Ġ= ĠBoard . board [ row ][ col ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ= Ġpiece ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmoves ++ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( turn Ġ== Ġ' W ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġturn Ġ= Ġ' B ' ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( turn Ġ== Ġ' B ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġturn Ġ= Ġ' W ' ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġundo Move ( move 2 : ĠMutable List < String >, Ġtemp 2 : ĠChar Array ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmove Ġ= ĠMove () ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( row Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( col Ġin Ġ 0 .. 4 ) Ġif Ġ( Board . coordinate [ row ][ col ] Ġ== Ġmove 2 [ 1 ]) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBoard . board [ row ][ col ] Ġ= Ġtemp 2 [ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmove . from Square ( row , Ġcol ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( row Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 .. 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĠBoard . coordinate [ row ][ it ] Ġ== Ġmove 2 [ 0 ] Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ ĠBoard . board [ row ][ it ] Ġ= Ġtemp 2 [ 0 ] Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmoves -- ĊĊĠĠĠĠĠĠĠ Ġif Ġ( turn Ġ== Ġ' W ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġturn Ġ= Ġ' B ' ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( turn Ġ== Ġ' B ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġturn Ġ= Ġ' W ' ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġsort Move ( move : ĠMutable List < String >): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscore Ġ= Ġscore () ĊĊĠĠĠĠĠĠĠ Ġdo Move ( move ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= ĠChar Array ( 2 ) ĊĠĠĠĠĠĠĠ Ġtemp [ 0 ] Ġ= Ġpiece From ĊĠĠĠĠĠĠĠ Ġtemp [ 1 ] Ġ= Ġpiece To ĊĊĠĠĠĠĠĠĠ Ġundo Move ( move , Ġtemp ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġscore ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġhuman Move () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġh Move : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġconverter Ġ= ĠInputStreamReader ( System .` in `) ĊĠĠĠĠĠĠĠ Ġval Ġ` in ` Ġ= ĠBufferedReader ( converter ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh Move Ġ= Ġ` in `. readLine () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠString Tokenizer ( h Move !! , Ġ"- ") ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( token . hasMore Tokens ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move . add ( token . nextToken ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdo Move ( gen Move ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġserver Move () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġh Move : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġconverter Ġ= ĠInputStreamReader ( System .` in `) ĊĠĠĠĠĠĠĠ Ġval Ġ` in ` Ġ= ĠBufferedReader ( converter ) ĊĊĠĠĠĠĠĠĠ Ġvar Ġx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġy Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġh Move Ġ= Ġ` in `. readLine () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtemp Ġ= ĠarrayOf < String >() ĊĊĠĠĠĠĠĠĠ Ġval Ġtoken 2 Ġ= ĠString Tokenizer ( h Move !! , Ġ" Ġ") ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( token 2 . hasMore Tokens ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtemp [ x ] Ġ= Ġtoken 2 . nextToken () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġy ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġgen Move : ĠMutable List < String > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġval Ġtoken Ġ= ĠString Tokenizer ( temp [ 0 ], Ġ"- ") ĊĊĠĠĠĠĠĠĠ Ġwhile Ġ( token . hasMore Tokens ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen Move [ x ] Ġ= Ġtoken . nextToken () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġx ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdo Move ( gen Move ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġgame Over (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmoves Ġ== Ġ 4 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" = ĠDraw ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb King Ġ== Ġ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" = ĠW Ġwins ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġw King Ġ== Ġ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" = ĠB Ġwins ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġprint () Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( moves . toString () Ġ+ Ġ" Ġ" Ġ+ Ġturn ) ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( row Ġin Ġ 0 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( col Ġin Ġ 0 .. 4 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint ( Board . board [ row ][ col ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint ("\ n ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprint ("\ n ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġmoves : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġturn : ĠChar Ġ= Ġ' Ġ' ĊĊĠĠĠĠĠĠĠ Ġvar Ġw King Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġw Queen Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġw R ook Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġw B ish op Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġw K night Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġw Pawn Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġvar Ġb King Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġb Queen Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġb R ook Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġb B ish op Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġb K night Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġb Pawn Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġinternal Ġval ĠMOVE _ ORDER : ĠComparator < Mutable List < String >> Ġ= ĠComparator Ġ{ Ġe 1 , Ġe 2 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= ĠState () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġstate . sort Move ( e 1 ) Ġ- Ġstate . sort Move ( e 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ