/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 - 2 0 2 1 , Ċ Ġ* ĠThis Ġlibrary Ġclass Ġwas Ġcreated Ġby Ġ 0 xFC 9 6 3 F 1 8 DC 2 1 Ġ/ ĠSh ots 2 4 3 Ċ Ġ* ĠIt Ġis Ġpart Ġof Ġan Ġextension Ġlibrary Ġfor Ġthe Ġgame ĠNull po Min o Ġ( copyright Ġ 2 0 2 1 - 2 0 2 1 ) Ċ Ġ* Ċ Ġ* ĠKotlin Ġconverted Ġand Ġmodified Ġby ĠV en om = N hel v Ċ Ġ* Ċ Ġ* ĠHer ew ith Ġshall Ġthe Ġterm Ġ" Library ĠCreator " Ġbe Ġgiven Ġto Ġ 0 xFC 9 6 3 F 1 8 DC 2 1 . Ċ Ġ* ĠHer ew ith Ġshall Ġthe Ġterm Ġ" Game ĠCreator " Ġbe Ġgiven Ġto Ġthe Ġoriginal Ġcreator Ġof ĠNull po Min o , ĠNull Non ame . Ċ Ġ* Ċ Ġ* ĠTHIS ĠLIB R ARY ĠAND ĠMODE ĠPACK ĠW AS ĠNOT ĠMA DE ĠIN ĠASS OCI ATION ĠWITH ĠTHE ĠGAME ĠCRE ATOR . Ċ Ġ* Ċ Ġ* ĠRepository : Ġhttps :// github . com / Sh ots 2 4 3 / Mode P ile Ċ Ġ* Ċ Ġ* ĠWhen Ġusing Ġthis Ġlibrary Ġin Ġa Ġmode Ġ/ Ġlibrary Ġpack Ġof Ġyour Ġown , Ġthe Ġfollowing Ċ Ġ* Ġconditions Ġmust Ġbe Ġsatisfied : Ċ Ġ* ĠĠĠĠ Ġ- ĠThis Ġlicense Ġmust Ġremain Ġvisible Ġat Ġthe Ġtop Ġof Ġthe Ġdocument , Ġun modified . Ċ Ġ* ĠĠĠĠ Ġ- ĠYou Ġare Ġallowed Ġto Ġuse Ġthis Ġlibrary Ġfor Ġany Ġmod ding Ġpurpose . Ċ Ġ* ĠĠĠĠĠĠĠĠ Ġ- ĠIf Ġthis Ġis Ġthe Ġcase , Ġthe ĠLibrary ĠCreator Ġmust Ġbe Ġcredit ed Ġsomewhere . Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠ Ġ- ĠSource Ġcomments Ġonly Ġare Ġfine , Ġbut Ġin Ġa ĠREADME Ġis Ġrecommended . Ċ Ġ* ĠĠĠĠ Ġ- ĠMod ification Ġof Ġthis Ġlibrary Ġis Ġallowed , Ġbut Ġonly Ġin Ġthe Ġcondition Ġthat Ġa Ċ Ġ* ĠĠĠĠĠĠ Ġpull Ġrequest Ġis Ġmade Ġto Ġmerge Ġthe Ġchanges Ġto Ġthe Ġrepository . Ċ Ġ* Ċ Ġ* ĠTHIS ĠSOFTWARE ĠIS ĠPROVIDED ĠBY ĠTHE ĠCOPYRIGHT ĠHOLDERS ĠAND ĠCONTRIBUTORS Ġ" AS ĠIS " Ċ Ġ* ĠAND ĠANY ĠEXPRESS ĠOR ĠIMPLIED ĠWARRANTIES , ĠINCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠTHE Ċ Ġ* ĠIMPLIED ĠWARRANTIES ĠOF ĠMERCHANTABILITY ĠAND ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE Ċ Ġ* ĠARE ĠDISCLAIMED . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE ĠCOPYRIGHT ĠOWNER ĠOR ĠCONTRIBUTORS ĠBE Ċ Ġ* ĠLIABLE ĠFOR ĠANY ĠDIRECT , ĠINDIRECT , ĠINCIDENTAL , ĠSPECIAL , ĠEXEMPLARY , ĠOR Ċ Ġ* ĠCONSEQUENTIAL ĠDAMAGES Ġ( INCLUDING , ĠBUT ĠNOT ĠLIMITED ĠTO , ĠPROCUREMENT ĠOF Ċ Ġ* ĠSUBSTITUTE ĠGOODS ĠOR ĠSERVICES ; ĠLOSS ĠOF ĠUSE , ĠDATA , ĠOR ĠPROFITS ; ĠOR ĠBUSINESS Ċ Ġ* ĠINTERRUPTION ) ĠHOWEVER ĠCAUSED ĠAND ĠON ĠANY ĠTHEORY ĠOF ĠLIABILITY , ĠWHETHER ĠIN Ċ Ġ* ĠCONTRACT , ĠSTRICT ĠLIABILITY , ĠOR ĠTORT Ġ( INCLUDING ĠNEGLIGENCE ĠOR ĠOTHERWISE ) Ċ Ġ* ĠARISING ĠIN ĠANY ĠWAY ĠOUT ĠOF ĠTHE ĠUSE ĠOF ĠTHIS ĠSOFTWARE , ĠEVEN ĠIF ĠADVISED ĠOF ĠTHE Ċ Ġ* ĠPOSSIBILITY ĠOF ĠSUCH ĠDAMAGE . Ċ Ġ*/ Ċ Ċ package Ġz er ox fc . null po . custom . wall kick Ċ Ċ import Ġmu . nu . null po . game . component . Controller Ċ import Ġmu . nu . null po . game . component . Field Ċ import Ġmu . nu . null po . game . component . Piece Ċ import Ġmu . nu . null po . game . component . Wall kick Result Ċ import Ġmu . nu . null po . game . subsystem . wall kick . Wall kick Ċ Ċ class ĠFall ing Down Wall kick : Wall kick Ġ{ Ċ ĉ /** Ċĉ Ġ* ĠExecute Ġa Ġwall kick Ġusing ĠFall ing ĠDown 's Ġwall kick Ġsystem . Ċĉ Ġ* Ċĉ Ġ* Ġ@ param Ġx ĠĠĠĠĠĠĠĠĠĠ ĠX - coordinate Ċĉ Ġ* Ġ@ param Ġy ĠĠĠĠĠĠĠĠĠĠ ĠY - coordinate Ċĉ Ġ* Ġ@ param Ġrt Dir ĠĠĠĠĠĠ ĠRotation Ġbutton Ġused Ġ(- 1 : Ġleft Ġrotation , Ġ 1 : Ġright Ġrotation , Ġ 2 : Ġ 1 8 0 - degree Ġrotation ) Ċĉ Ġ* Ġ@ param Ġrt Old ĠĠĠĠĠĠ ĠDirection Ġbefore Ġrotation Ċĉ Ġ* Ġ@ param Ġrt New ĠĠĠĠĠĠ ĠDirection Ġafter Ġrotation Ċĉ Ġ* Ġ@ param Ġallow Up ward ĠIf Ġtrue , Ġup ward Ġwall k icks Ġare Ġallowed . Ċĉ Ġ* Ġ@ param Ġpiece ĠĠĠĠĠĠ ĠCurrent Ġpiece Ċĉ Ġ* Ġ@ param Ġfield ĠĠĠĠĠĠ ĠCurrent Ġfield Ċĉ Ġ* Ġ@ param Ġctrl ĠĠĠĠĠĠĠ ĠButton Ġinput Ġstatus Ġ( it Ġmay Ġbe Ġnull , Ġwhen Ġcontrolled Ġby Ġan ĠAI ) Ċĉ Ġ* Ġ@ return ĠWall kick Result Ġobject , Ġor Ġnull Ġif Ġyou Ġdon 't Ġwant Ġa Ġkick Ċĉ Ġ*/ Ċ ĉ override Ġfun Ġexecute Wall kick ( x : Int , Ġy : Int , Ġrt Dir : Int , Ġrt Old : Int , Ġrt New : Int , Ġallow Up ward : Boolean , Ġpiece : Piece , Ċĉ ĉ field : Field , Ġctrl : Controller ?): Wall kick Result ? Ġ{ Ċĉ ĉ val Ġmultiplier Ġ= Ġif ( piece . big ) Ġ 2 Ġelse Ġ 1 Ċĉ ĉ val Ġconv Rt Old : Int Ġ= Ġ( rt Old + 2 )% 4 Ċĉ ĉ val Ġconv Rt New : Int Ġ= Ġ( rt New + 2 )% 4 ĊĊĉ ĉ // ĠThere Ġare Ġ 2 Ġsections : ĠFlex ible Ġand ĠSpecial . Ċĉ ĉ // ĠFlex ible Ġis Ġproced ural . Ċĉ ĉ // ĠSpecial Ġuses Ġthe Ġtables Ġdefined Ġabove . ĊĊĉ ĉ // ĠSet Ġkick Ġtype Ġused . Ċĉ ĉ var Ġflags Ġ= Ġ 0 Ċĉ ĉ when ( piece . id ) Ġ{ Ċĉĉ ĉ Piece . PI E CE _ I Ġ-> Ġflags Ġ= Ġflags Ġor ĠFLAG _ FLEX IBLE Ċĉĉ ĉ Piece . PI E CE _ O Ġ-> Ġ{ Ċĉĉ ĉ } Ċĉĉ ĉ else Ġ-> Ġ{ Ċĉĉĉ ĉ flags Ġ= Ġflags Ġor ĠFLAG _ FLEX IBLE Ċĉĉĉ ĉ flags Ġ= Ġflags Ġor ĠFLAG _ SPECIAL Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĉ ĉ // ĠF LEX IBLE ĠK ICK Ċĉ ĉ if ( check Flag ( flags , ĠFLAG _ FLEX IBLE )) Ġ{ Ċĉĉ ĉ val Ġord Num : Int Ġ= Ġwhen Ġ{ Ċĉĉĉ ĉ ctrl ?. is Press ( Controller . BUTTON _ LEFT )== true Ġ-> Ġ 0 Ċĉĉĉ ĉ ctrl ?. is Press ( Controller . BUTTON _ RIGHT )== true Ġ-> Ġ 1 Ċĉĉĉ ĉ rt Dir != 1 Ġ-> Ġ 2 Ċĉĉĉ ĉ else Ġ-> Ġ 3 Ċĉĉ ĉ } ĊĊĉĉ ĉ // ĠIntersection Ġtesting Ġenvironment Ġsetup . Ċĉĉ ĉ val Ġtest Field Ġ= ĠField ( 4 1 , Ġ 4 1 , Ġ 0 ) Ċĉĉ ĉ val Ġinit X : Int Ġ= Ġ 4 1 / 2 Ċĉĉ ĉ val Ġinit Y : Int Ġ= Ġ 4 1 / 2 ĊĊĉĉ ĉ // ĠNew Ġpiece Ġobjects Ġas Ġto Ġnot Ġmess Ġup Ġin - game Ġpiece . Ċĉĉ ĉ val Ġtest Piece Old Ġ= ĠPiece ( piece ) Ċĉĉ ĉ test Piece Old . big Ġ= Ġfalse Ċĉĉ ĉ val Ġtest Piece New Ġ= ĠPiece ( piece ) Ċĉĉ ĉ test Piece New . big Ġ= Ġfalse Ċĉĉ ĉ test Piece New . place To Field ( init X , Ġinit Y , Ġrt New , Ġtest Field ) Ċĉĉ ĉ for ( y Offset Ġin Ġ 0 .. 3 ) Ġ{ Ċĉĉĉ ĉ val Ġdod ge Ġ= Ġboolean ArrayOf ( false , Ġfalse , Ġfalse , Ġfalse , Ġfalse , Ġfalse , Ġfalse ) ĊĊĉĉĉ ĉ // ĠIntersection Ġtesting Ċĉĉĉ ĉ for ( x Offset Ġin Ġ- 3 .. 3 ) Ġ{ Ċĉĉĉĉ ĉ if ( test Piece Old . check Collision ( init X - x Offset , Ġinit Y - y Offset , Ġrt Old , Ġtest Field )) Ġdod ge [ x Offset + 3 ] Ġ= Ġtrue Ċĉĉĉ ĉ } ĊĊĉĉĉ ĉ // ĠBlock age Ġtesting Ċĉĉĉ ĉ for ( x Offset Ġin Ġ- 3 .. 3 ) Ġ{ Ċĉĉĉĉ ĉ if ( piece . check Collision ( x + x Offset * multiplier , Ġy + y Offset * multiplier , Ġrt New , Ġfield )) Ġdod ge [ x Offset + 3 ] Ġ= Ġfalse Ċĉĉĉ ĉ } ĊĊĉĉĉ ĉ // ĠValid Ġkick Ġtesting Ċĉĉĉ ĉ for ( i Ġin Ġ 0 .. 6 ) Ġ{ Ċĉĉĉĉ ĉ if ( dod ge [ ORDER [ ord Num ][ i ]]) Ġ{ Ċĉĉĉĉĉ ĉ return ĠWall kick Result ( Ċĉĉĉĉĉĉ ĉ ( ORDER [ ord Num ][ i ]- 3 )* multiplier , Ċĉĉĉĉĉĉ ĉ y Offset * multiplier , Ċĉĉĉĉĉĉ ĉ rt New Ċĉĉĉĉĉ ĉ ) Ċĉĉĉĉ ĉ } Ċĉĉĉ ĉ } Ċĉĉ ĉ } Ċĉ ĉ } ĊĊĉ ĉ // ĠSPECIAL ĠK ICK Ċĉ ĉ if ( check Flag ( flags , ĠFLAG _ SPECIAL )) Ġ{ Ċĉĉ ĉ // ĠGet Ġpiece Ġkick Ġtable . Ċĉĉ ĉ val Ġmaster Kick Table : Array < Array < IntArray >> Ġ= Ġwhen ( piece . id ) Ġ{ Ċĉĉĉ ĉ Piece . PI E CE _ T Ġ-> Ġif ( rt Dir == 1 ) ĠT _ K ICK _ TABLE _ CW Ġelse ĠT _ K ICK _ TABLE _ CC W Ċĉĉĉ ĉ Piece . PI E CE _ J , ĠPiece . PI E CE _ L Ġ-> Ġif ( rt Dir == 1 ) ĠJ L _ K ICK _ TABLE _ CW Ġelse ĠJ L _ K ICK _ TABLE _ CC W Ċĉĉĉ ĉ Piece . PI E CE _ Z Ġ-> Ġif ( rt Dir == 1 ) ĠZ _ K ICK _ TABLE _ CW Ġelse ĠZ _ K ICK _ TABLE _ CC W Ċĉĉĉ ĉ Piece . PI E CE _ S Ġ-> Ġif ( rt Dir == 1 ) ĠS _ K ICK _ TABLE _ CW Ġelse ĠS _ K ICK _ TABLE _ CC W Ċĉĉĉ ĉ else Ġ-> Ġreturn Ġnull Ċĉĉ ĉ } ĊĊĉĉ ĉ // ĠGet Ġspecific Ġrotation Ġkick Ġtable . Ċĉĉ ĉ val Ġkick table : Array < IntArray > Ċĉĉ ĉ val Ġindex Ġ= Ġif ( rt Dir == 1 ) Ġconv Rt Old Ġelse Ġ 3 - conv Rt New Ċĉĉ ĉ kick table Ġ= Ġmaster Kick Table [ index ] ĊĊĉĉ ĉ // ĠDo Ġkick Ġtests Ċĉĉ ĉ for ( test Ġin Ġkick table ) Ġ{ Ċĉĉĉ ĉ if (! piece . check Collision ( x + test [ 0 ]* multiplier , Ġy + test [ 1 ]* multiplier , Ġrt New , Ġfield )) Ġreturn ĠWall kick Result ( Ċĉĉĉĉ ĉ test [ 0 ]* multiplier , Ġtest [ 1 ]* multiplier , Ġrt New ) Ċĉĉ ĉ } Ċĉ ĉ } Ċĉ ĉ return Ġnull Ċ ĉ } ĊĊ ĉ comp anion Ġobject Ġ{ Ċĉ ĉ private Ġval ĠT _ K ICK _ TABLE _ CC W Ġ= ĠarrayOf ( array Of ( int ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 2 ), Ġint ArrayOf (- 1 , Ġ 2 )), Ċĉĉ ĉ array Of ( int ArrayOf ( 1 , Ġ 0 )), ĠarrayOf ( int ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf ( 1 , Ġ 1 ), Ġint ArrayOf ( 1 , Ġ 3 )), Ċĉĉ ĉ array Of ( int ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 1 ))) Ċĉ ĉ private Ġval ĠT _ K ICK _ TABLE _ CW Ġ= ĠarrayOf ( array Of ( int ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 2 ), Ġint ArrayOf ( 1 , Ġ 2 )), Ċĉĉ ĉ array Of ( int ArrayOf (- 1 , Ġ 0 )), ĠarrayOf ( int ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf (- 1 , Ġ 1 ), Ġint ArrayOf (- 1 , Ġ 3 )), Ċĉĉ ĉ array Of ( int ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 1 ))) Ċĉ ĉ private Ġval ĠJ L _ K ICK _ TABLE _ CC W Ġ= ĠarrayOf ( array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 2 ), Ġint ArrayOf (- 1 , Ġ 2 )), Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 0 )), Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf ( 1 , Ġ 1 ), Ġint ArrayOf ( 0 , Ġ 3 ), Ġint ArrayOf ( 1 , Ġ 3 )), Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 1 ))) Ċĉ ĉ private Ġval ĠJ L _ K ICK _ TABLE _ CW Ġ= ĠarrayOf ( array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 2 ), Ġint ArrayOf ( 1 , Ġ 2 )), Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 0 )), Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf (- 1 , Ġ 1 ), Ġint ArrayOf ( 0 , Ġ 3 ), Ġint ArrayOf (- 1 , Ġ 3 )), Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 1 ))) Ċĉ ĉ private Ġval ĠZ _ K ICK _ TABLE _ CC W Ġ= ĠarrayOf ( Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf (- 1 , Ġ 1 ), Ġint ArrayOf ( 0 , Ġ 2 ), Ġint ArrayOf (- 1 , Ġ 2 ), Ċĉĉĉ ĉ int ArrayOf ( 0 , Ġ 3 ), Ġint ArrayOf (- 1 , Ġ 3 )), ĠarrayOf ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf ( 1 , Ġ 1 )), Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf (- 1 , Ġ 1 ), Ġint ArrayOf ( 0 , Ġ 2 ), Ġint ArrayOf (- 1 , Ġ 2 ), Ċĉĉĉ ĉ int ArrayOf ( 0 , Ġ 3 ), Ġint ArrayOf (- 1 , Ġ 3 )), ĠarrayOf ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf ( 1 , Ġ 1 ))) Ċĉ ĉ private Ġval ĠZ _ K ICK _ TABLE _ CW Ġ= ĠarrayOf ( Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf (- 1 , Ġ 1 ), Ġint ArrayOf ( 0 , Ġ 2 ), Ġint ArrayOf (- 1 , Ġ 2 ), Ċĉĉĉ ĉ int ArrayOf ( 0 , Ġ 3 ), Ġint ArrayOf (- 1 , Ġ 3 )), ĠarrayOf ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf ( 1 , Ġ 1 )), Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf (- 1 , Ġ 1 ), Ġint ArrayOf ( 0 , Ġ 2 ), Ġint ArrayOf (- 1 , Ġ 2 ), Ċĉĉĉ ĉ int ArrayOf ( 0 , Ġ 3 ), Ġint ArrayOf (- 1 , Ġ 3 )), ĠarrayOf ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf ( 1 , Ġ 1 ))) Ċĉ ĉ private Ġval ĠS _ K ICK _ TABLE _ CC W Ġ= ĠarrayOf ( Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf ( 1 , Ġ 1 ), Ġint ArrayOf ( 0 , Ġ 2 ), Ġint ArrayOf ( 1 , Ġ 2 ), Ċĉĉĉ ĉ int ArrayOf ( 0 , Ġ 3 ), Ġint ArrayOf ( 1 , Ġ 3 )), ĠarrayOf ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf (- 1 , Ġ 1 )), Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf ( 1 , Ġ 1 ), Ġint ArrayOf ( 0 , Ġ 2 ), Ġint ArrayOf ( 1 , Ġ 2 ), Ċĉĉĉ ĉ int ArrayOf ( 0 , Ġ 3 ), Ġint ArrayOf ( 1 , Ġ 3 )), ĠarrayOf ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf (- 1 , Ġ 1 ))) Ċĉ ĉ private Ġval ĠS _ K ICK _ TABLE _ CW Ġ= ĠarrayOf ( Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf ( 1 , Ġ 1 ), Ġint ArrayOf ( 0 , Ġ 2 ), Ġint ArrayOf ( 1 , Ġ 2 ), Ċĉĉĉ ĉ int ArrayOf ( 0 , Ġ 3 ), Ġint ArrayOf ( 1 , Ġ 3 )), ĠarrayOf ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf (- 1 , Ġ 1 )), Ċĉĉ ĉ array Of ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf ( 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf ( 1 , Ġ 1 ), Ġint ArrayOf ( 0 , Ġ 2 ), Ġint ArrayOf ( 1 , Ġ 2 ), Ċĉĉĉ ĉ int ArrayOf ( 0 , Ġ 3 ), Ġint ArrayOf ( 1 , Ġ 3 )), ĠarrayOf ( int ArrayOf ( 0 , Ġ 0 ), Ġint ArrayOf (- 1 , Ġ 0 ), Ġint ArrayOf ( 0 , Ġ 1 ), Ġint ArrayOf (- 1 , Ġ 1 ))) Ċĉ ĉ private Ġval ĠORDER Ġ= ĠarrayOf ( int ArrayOf ( 3 , Ġ 2 , Ġ 1 , Ġ 0 , Ġ 4 , Ġ 5 , Ġ 6 ), Ġint ArrayOf ( 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 2 , Ġ 1 , Ġ 0 ), Ċĉĉ ĉ int ArrayOf ( 3 , Ġ 2 , Ġ 4 , Ġ 1 , Ġ 5 , Ġ 0 , Ġ 6 ), Ġint ArrayOf ( 3 , Ġ 4 , Ġ 2 , Ġ 5 , Ġ 1 , Ġ 6 , Ġ 0 )) Ċĉ ĉ private Ġconst Ġval ĠFLAG _ FLEX IBLE Ġ= Ġ 1 Ċĉ ĉ private Ġconst Ġval ĠFLAG _ SPECIAL Ġ= Ġ 2 Ċĉ ĉ private Ġfun Ġcheck Flag ( num : Int , Ġflag : Int ): Boolean Ġ= Ġnum Ġand Ġflag > 0 Ċ ĉ } Ċ Ċ }