package Ġcom . ke tris . screens . game Ċ Ċ import Ġcom . ke tris . framework . engine . Game Ċ import Ġcom . ke tris . framework . engine . Game Screen Ċ import Ġcom . ke tris . framework . io . I Listen To Keyboard Ċ import Ġcom . ke tris . framework . io . Key Manager Ċ import Ġcom . ke tris . screens . game . Config . SIDE BAR _ WIDTH Ċ import Ġcom . ke tris . screens . game . Config . WAR _ ZONE _ WIDTH Ċ import Ġcom . ke tris . screens . game . play field . Play field Ċ import Ġcom . ke tris . screens . game . sidebar . Sidebar Ċ import Ġjava . awt . event . KeyEvent Ċ import Ġjava . awt . image . Buffered Image Ċ Ċ class ĠScreen Ġ: ĠGame Screen , ĠI Listen To Keyboard Ġ{ ĊĠ Ġoverride Ġval Ġpainter Ġ= ĠP ainter ( SIDE BAR _ WIDTH Ġ+ ĠWAR _ ZONE _ WIDTH , ĠGame . height ) ĊĠ Ġprivate Ġval Ġplay field Ġ= ĠPlay field ( WAR _ ZONE _ WIDTH , ĠGame . height ) ĊĠ Ġprivate Ġval Ġsidebar Ġ= ĠSidebar ( SIDE BAR _ WIDTH , ĠGame . height , Ġplay field . next Player ) ĊĠ Ġprivate Ġvar Ġnext Fall Ġ= Ġ 0 L ĊĠ Ġprivate Ġvar Ġwas Anim ating Ġ= Ġfalse ĊĠ Ġprivate Ġvar Ġplayer Is Fall ing Ġ= Ġfalse ĊĠ Ġprivate Ġvar Ġpaused Ġ= Ġfalse ĊĠ Ġprivate Ġvar Ġremaining After Paused Ġ= Ġ 0 L ĊĊĠ Ġinit Ġ{ ĊĠĠĠ ĠKey Manager . addListener ( this ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġupdate ( dt : ĠInt ) Ġ{ ĊĠĠĠ Ġif Ġ( paused ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( play field . anim ating ) Ġ{ ĊĠĠĠĠĠ Ġwas Anim ating Ġ= Ġtrue ĊĠĠĠ Ġ} Ġelse Ġif Ġ( was Anim ating ) Ġ{ ĊĠĠĠĠĠ Ġnext Fall Ġ= ĠSystem . currentTimeMillis () Ġ+ Ġplay field . fall Rate ĊĠĠĠĠĠ Ġwas Anim ating Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ(! was Anim ating ) Ġ{ ĊĠĠĠĠĠ Ġapply Gravity () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġapply Gravity () Ġ{ ĊĠĠĠ Ġval Ġtime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠ Ġif Ġ( time Ġ>= Ġnext Fall ) Ġ{ ĊĠĠĠĠĠ Ġnext Fall Ġ= Ġtime Ġ+ Ġplay field . fall Rate ĊĠĠĠĠĠ Ġhandle Player Fall ing () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġhandle Player Fall ing () Ġ{ ĊĠĠĠ Ġif Ġ( player Is Fall ing ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġplayer Is Fall ing Ġ= Ġtrue ĊĠĠĠ Ġval Ġable To Move Ġ= Ġplay field . fall Down () ĊĠĠĠ Ġif Ġ(! able To Move Ġ&& Ġplay field . on Floor ) Ġ{ ĊĠĠĠĠĠ Ġnext Fall Ġ= Ġplay field . end Of Lock ĊĠĠĠĠĠ Ġsidebar . next Player Ġ= Ġplay field . next Player ĊĠĠĠ Ġ} ĊĠĠĠ Ġplayer Is Fall ing Ġ= Ġfalse ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġkey Pressed ( e : ĠKeyEvent ) Ġ{ ĊĠĠĠ Ġif Ġ( paused ) Ġ{ ĊĠĠĠĠĠ Ġwhen Ġ( e . keyCode ) Ġ{ ĊĠĠĠĠĠĠĠ ĠKeyEvent . VK _ P Ġ-> Ġtoggle Paused () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġwhen Ġ( e . keyCode ) Ġ{ ĊĠĠĠĠĠĠĠ ĠKeyEvent . VK _ W Ġ-> Ġplay field . rotate Player () ĊĠĠĠĠĠĠĠ ĠKeyEvent . VK _ S Ġ-> Ġhandle Player Fall ing () ĊĠĠĠĠĠĠĠ ĠKeyEvent . VK _ A Ġ-> Ġplay field . move Left () ĊĠĠĠĠĠĠĠ ĠKeyEvent . VK _ D Ġ-> Ġplay field . move Right () ĊĠĠĠĠĠĠĠ ĠKeyEvent . VK _ R Ġ-> Ġplay field . restart () ĊĠĠĠĠĠĠĠ ĠKeyEvent . VK _ I Ġ-> Ġplay field . inspect Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠKeyEvent . VK _ P Ġ-> Ġtoggle Paused () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġtoggle Paused () Ġ{ ĊĠĠĠ Ġpaused Ġ= Ġ! paused ĊĠĠĠ Ġval Ġtime Ġ= ĠSystem . currentTimeMillis () ĊĠĠĠ Ġif Ġ( paused ) Ġ{ ĊĠĠĠĠĠ Ġval Ġremaining Ġ= Ġnext Fall Ġ- Ġtime ĊĠĠĠĠĠ Ġremaining After Paused Ġ= Ġif Ġ( remaining Ġ>= Ġ 0 ) Ġremaining Ġelse Ġ 0 ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġnext Fall Ġ= Ġtime Ġ+ Ġremaining After Paused ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġpaint () Ġ{ ĊĠĠĠ Ġplay field . paint () ĊĠĠĠ Ġsidebar . paint () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġcanvas (): ĠBufferedImage Ġ{ ĊĠĠĠ Ġreturn Ġpainter . st itch ( sidebar . canvas (), Ġplay field . canvas ()) ĊĠ Ġ} Ċ } Ċ