package Ġorg . hex works . z ir con . examples . game Ċ Ċ import Ġorg . hex works . cob alt . databinding . api . binding . bind Transform Ċ import Ġorg . hex works . cob alt . databinding . api . extension . orElse Ċ import Ġorg . hex works . z ir con . api . CP 4 3 7 Tile set Resources Ċ import Ġorg . hex works . z ir con . api . CP 4 3 7 Tile set Resources . rex Paint 2 0 x 2 0 Ċ import Ġorg . hex works . z ir con . api . Color Themes . storm y Green Ċ import Ġorg . hex works . z ir con . api . Component Decor ations . box Ċ import Ġorg . hex works . z ir con . api . Components . button Ċ import Ġorg . hex works . z ir con . api . Components . panel Ċ import Ġorg . hex works . z ir con . api . Components . radioButton Ċ import Ġorg . hex works . z ir con . api . Components . radioButton Group Ċ import Ġorg . hex works . z ir con . api . Components . v box Ċ import Ġorg . hex works . z ir con . api . Draw Sur faces . tile Graphics Builder Ċ import Ġorg . hex works . z ir con . api . Game Components . new Game Area Builder Ċ import Ġorg . hex works . z ir con . api . Game Components . new Game Area Component Renderer Ċ import Ġorg . hex works . z ir con . api . Swing Applications . start Tile Grid Ċ import Ġorg . hex works . z ir con . api . application . AppConfig Ċ import Ġorg . hex works . z ir con . api . builder . data . Tile Builder Ċ import Ġorg . hex works . z ir con . api . color . Tile Color . Companion . fromString Ċ import Ġorg . hex works . z ir con . api . data .* Ċ import Ġorg . hex works . z ir con . api . data . Position 3 D . Companion . create Ċ import Ġorg . hex works . z ir con . api . data . Size . Companion . create Ċ import Ġorg . hex works . z ir con . api . data . Tile . Companion . empty Ċ import Ġorg . hex works . z ir con . api . game . Game Area Ċ import Ġorg . hex works . z ir con . api . game . Game Area Tile Filter Ċ import Ġorg . hex works . z ir con . api . game . Projection Mode Ċ import Ġorg . hex works . z ir con . api . graphics . Box Type Ċ import Ġorg . hex works . z ir con . api . graphics . Symbols Ċ import Ġorg . hex works . z ir con . api . graphics . Tile Graphics Ċ import Ġorg . hex works . z ir con . api . screen . Screen Ċ import Ġorg . hex works . z ir con . api . screen . Screen . Companion . create Ċ import Ġorg . hex works . z ir con . api . u ie vent . KeyCode Ċ import Ġorg . hex works . z ir con . api . u ie vent . Keyboard EventType Ċ import Ġorg . hex works . z ir con . api . u ie vent . UI Event Phase Ċ import Ġorg . hex works . z ir con . api . u ie vent . UI Event Response . Companion . processed Ċ import Ġjava . awt . Toolkit Ċ import Ġjava . util .* Ċ import Ġjava . util . concurrent . atomic . Atomic Integer Ċ import Ġkotlin . system . exit Process Ċ Ċ @ Suppress (" D uplicated Code ") Ċ class ĠGame Area With Scrolling Kotlin Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTHE ME Ġ= Ġst orm y Green () ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠT ILE SET Ġ= Ġre x Paint 2 0 x 2 0 () ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDIM ENSION S Ġ= ĠToolkit . getDefault Toolkit (). screen Size ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠGR ID _ WIDTH Ġ= ĠDIM ENSION S . width Ġ/ ĠT ILE SET . width Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠGR ID _ HEIGHT Ġ= ĠDIM ENSION S . height Ġ/ ĠT ILE SET . height Ġ- Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠGR ID _ SIZE Ġ= Ġcreate ( GRID _ WIDTH , ĠGR ID _ HEIGHT ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLE VEL _ COUNT Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠFIL LER : ĠTile Ġ= Ġempty () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Character (' x ') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with BackgroundColor ( fromString ("# e 7 b 7 5 1 ")) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠPY RAM ID _ COLOR Ġ= Ġfrom String ("# ecc 9 8 7 ") ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscreen Ġ= Ġcreate ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart Tile Grid ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Config . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Default Tile set ( TILE SET ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Size ( GRID _ SIZE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Debug Mode ( true ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactions Ġ= Ġpanel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with PreferredSize ( 2 4 , Ġ 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Position ( 1 , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Decor ations ( box ( Box Type . LEFT _ RIGHT _ DOUBLE , Ġ" Actions ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquit Ġ= Ġbutton () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Text (" Quit ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġquit . on Activated Ġ{ Ġexit Process ( 0 ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprojection s Ġ= Ġv box () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with PreferredSize ( 2 4 , Ġ 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Decor ations ( box ( Box Type . LEFT _ RIGHT _ DOUBLE , Ġ" Projection ĠMode ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Position ( Position . create ( 0 , Ġ 2 ). relative To Bottom Of ( actions )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Down Ġ= Ġradio Button () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Text (" Top ĠDown ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Key ( Projection Mode . TOP _ DOWN . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Down Ob lique Ġ= Ġradio Button () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Text (" Top ĠDown ĠOb lique ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Key ( Projection Mode . TOP _ DOWN _ OB LI QUE _ FRONT . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprojection s Group Ġ= Ġradio Button Group () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Component ( top Down ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Component ( top Down Ob lique ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprojection s . add Components ( top Down , Ġtop Down Ob lique ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprojection Property Ġ= Ġprojection s Group . selected Button Property . bind Transform Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ Ġradio Button Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠProjection Mode . valueOf ( radioButton . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. orElse ( Projection Mode . TOP _ DOWN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions . add Components ( quit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisible Game Area Size Ġ= ĠGR ID _ SIZE . minus ( create ( 2 , Ġ 2 )). to Size 3 D ( 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Game Area Size Ġ= Ġcreate ( Int . MAX _ VALUE , ĠInt . MAX _ VALUE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgame Area : ĠGame Area < Tile , ĠBlock < Tile >> Ġ= Ġnew Game Area Builder < Tile , ĠBlock < Tile >>() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Actual Size ( actual Game Area Size . to Size 3 D ( LEVEL _ COUNT )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Visible Size ( visible Game Area Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Filter ( object Ġ: ĠGame Area Tile Filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġtransform ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvisible Size : ĠSize 3 D , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoffset Position : ĠPosition 3 D , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock Tile Type : ĠBlock Tile Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile Builder : ĠTile Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ): ĠTile Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstep Ġ= Ġwhen Ġ( block Tile Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlock Tile Type . TOP Ġ-> Ġ 1 Ġ/ Ġ( visible Size . z Length . toDouble () Ġ* Ġ 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBlock Tile Type . FRONT Ġ-> Ġ 1 Ġ/ Ġ( visible Size . z Length . toDouble () Ġ* Ġ 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 1 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstyle Ġ= Ġtile Builder . style Set () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtile Builder . with Style Set ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle . with ForegroundColor ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle . foreground Color ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. dar ken By Percent ( step Ġ* Ġ( visible Size . z Length Ġ- Ġoffset Position . z ). toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen . on Shutdown Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Area . dispose () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgame Panel Ġ= Ġpanel () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with PreferredSize ( screen . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Component Renderer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Game Area Component Renderer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Area Ġ= Ġgame Area , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprojection Mode Ġ= Ġprojection Property , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfill er Tile Ġ= ĠFIL LER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Decor ations ( box ( Box Type . TOP _ BOTTOM _ DOUBLE , Ġ" Game ĠArea Ġwith ĠScroll ing ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame Panel . add Components ( actions , Ġprojection s ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlevels : ĠMutable Map < Int , ĠList < Tile Graphics >> Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil ĠLE VEL _ COUNT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevels [ i ] Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtile Graphics Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Size ( actual Game Area Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen . addComponent ( game Panel ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Movement ( screen , Ġgame Area ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Py ramid ( 3 , Ġcreate ( 3 0 , Ġ 5 , Ġ 2 ), Ġgame Area ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Py ramid ( 6 , Ġcreate ( 4 0 , Ġ 9 , Ġ 5 ), Ġgame Area ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerate Py ramid ( 5 , Ġcreate ( 3 5 , Ġ 2 1 , Ġ 4 ), Ġgame Area ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen . theme Ġ= ĠTHE ME ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen . display () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġgenerate Py ramid ( height : ĠInt , Ġstart Pos : ĠPosition 3 D , Ġgame Area : ĠGame Area < Tile , ĠBlock < Tile >>) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġwall Ġ= ĠTile . newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Character ( Symbols . BLOCK _ SOLID ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with ForegroundColor ( PY RAM ID _ COLOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurr Level Ġ= ĠAtomicInteger ( start Pos . z ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( curr Size Ġin Ġ 0 Ġuntil Ġheight ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlevel Offset Ġ= Ġstart Pos . to 2 D Position () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Relative X (- curr Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Relative Y (- curr Size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlevel Size Ġ= Ġcreate ( 1 Ġ+ Ġcurr Size Ġ* Ġ 2 , Ġ 1 Ġ+ Ġcurr Size Ġ* Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Size . fetch Positions (). forEach Ġ{ Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpos Ġ= Ġposition . plus ( level Offset ). to Position 3 D ( curr Level . get ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġwall . with ForegroundColor ( PY RAM ID _ COLOR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Area . set Block At ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġposition Ġ= Ġpos , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock Ġ= ĠBlock . newBuilder < Tile >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Top ( top ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Front ( wall ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Empty Tile ( empty ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurr Level . decrement AndGet () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġenable Movement ( screen : ĠScreen , Ġgame Area : ĠGame Area < Tile , ĠBlock < Tile >>) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscreen . handle Keyboard Events ( Keyboard EventType . KEY _ PRES SED ) Ġ{ Ġ(_, Ġ_, Ġcode ), Ġ_: ĠUI Event Phase ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Ġ== ĠKeyCode . ESCAPE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit Process ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Ġ== ĠKeyCode . UP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Area . scroll One Backward () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Ġ== ĠKeyCode . DOWN ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Area . scroll One Forward () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Ġ== ĠKeyCode . LEFT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Area . scroll One Left () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Ġ== ĠKeyCode . RIGHT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Area . scroll One Right () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Ġ== ĠKeyCode . KEY _ U ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Area . scroll One Up () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( code Ġ== ĠKeyCode . KEY _ D ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgame Area . scroll One Down () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocessed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ