package Ġcom . test . black light game test app ĊĊĊ Ċ import Ġandroid . graphics . Color Ċ import Ġandroid . graphics . drawable . Color Drawable Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AlertDialog Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . util .* Ċ Ċ // https :// stackoverflow . com / questions / 3 4 3 6 0 8 8 3 / change - the - colors - of - different - buttons - random ly - at - a - specified - time Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠĠ Ġvar Ġscore Value : Int Ġ= 0 ĊĠĠĠĠ Ġlateinit Ġvar Ġchanging Buttons : ĠArray < TextView ?> ĊĠĠĠĠ Ġvar Ġtimer : Timer ?= null ĊĠĠĠĠ Ġvar Ġis Clicked : Boolean = false ĊĠĠĠĠ Ġvar Ġprevious Position = 0 ; ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġset Score Text ( score Value ) ĊĠĠĠĠĠĠĠ Ġchanging Buttons Ġ= ĠarrayOf Null s ( 4 ) ĊĠĠĠĠĠĠĠ Ġchanging Buttons [ 0 ] Ġ= Ġsplit 1 ĊĠĠĠĠĠĠĠ Ġchanging Buttons [ 1 ] Ġ= Ġsplit 2 ĊĠĠĠĠĠĠĠ Ġchanging Buttons [ 2 ] Ġ= Ġsplit 3 ĊĠĠĠĠĠĠĠ Ġchanging Buttons [ 3 ] Ġ= Ġsplit 4 ĊĊĠĠĠĠĠĠĠ Ġsplit 1 ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck View Back gro ud Color ( split 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsplit 2 ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck View Back gro ud Color ( split 2 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsplit 3 ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck View Back gro ud Color ( split 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsplit 4 ?. setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck View Back gro ud Color ( split 4 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġstart Game (); ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġset Score Text ( score : ĠInt ?) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġsco pec ard ?. text = Ġ" Score Ġ$ score " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart Game (){ ĊĠĠĠĠĠĠĠ Ġtimer Ġ= ĠTimer () ĊĠĠĠĠĠĠĠ Ġtimer ?. schedule At Fixed Rate ( My Task ( changing Buttons , Ġthis ), Ġ 1 0 0 0 , 2 0 0 0 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠMy Task ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġchanging Buttons : ĠArray < TextView ? >, ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġactivity : ĠMainActivity ĊĠĠĠ Ġ) Ġ: ĠTimer Task () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrandom View Pos Ġ= ĠRandom (). nextInt ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcolor Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbackground Ġ= Ġchanging Buttons [ random View Pos ]?. background ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( background Ġis ĠColor Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġbackground . color ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġretry Color Change ( random View Pos , color ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġretry Color Change ( random View Pos : Int , color : Int ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( random View Pos == activity . previous Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrandom View Pos 1 Ġ= ĠRandom (). nextInt ( 4 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcolor 1 Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbackground Ġ= Ġchanging Buttons [ random View Pos 1 ]?. background ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( background Ġis ĠColor Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor 1 Ġ= Ġbackground . color ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġretry Color Change ( random View Pos 1 , color 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . previous Position = random View Pos ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanging Buttons [ random View Pos ]?. set BackgroundColor ( Color . parse Color ("# C 0 C 0 C 0 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanging Buttons [ random View Pos ]?. post Delayed ( object : Runnable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanging Buttons [ random View Pos ]?. set BackgroundColor ( color ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! activity . is Clicked ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . game Over Alert () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . is Clicked = false ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, 1 0 0 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġcheck View Back gro ud Color ( view : ĠView ) ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcolor Ġ= ĠColor . TRANSP ARENT ĊĠĠĠĠĠĠĠ Ġval Ġbackground Ġ= Ġview . background ĊĠĠĠĠĠĠĠ Ġif Ġ( background Ġis ĠColor Drawable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= Ġbackground . color ĊĊĠĠĠĠĠĠĠ Ġif (! is Clicked Ġ&& Ġcolor == Color . parse Color ("# C 0 C 0 C 0 ")) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Clicked = true ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Score Text ( ++ score Value ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġif ( is Clicked Ġ&& Ġcolor == Color . parse Color ("# C 0 C 0 C 0 ") Ġ){ ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgame Over Alert () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġgame Over Alert () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġtimer ?. purge () ĊĠĠĠĠĠĠĠ Ġtimer ?. cancel () ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle (" Game ĠOver ") ĊĠĠĠĠĠĠĠ Ġbuilder . setMessage (" Your Ġscore Ġis : Ġ$ score Value ") ĊĊĠĠĠĠĠĠĠ Ġbuilder . set Positive Button (" Restart ") Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscore Value = 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Score Text ( score Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Game () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this ," Game ĠStart ", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuilder . set Negative Button (" Exit ") Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this . application Context ," Thanks Ġto Ġplay Ġgame ", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdialog = builder . create () ĊĠĠĠĠĠĠĠ Ġdialog . set Canceled On Touch Outside ( false ) ĊĠĠĠĠĠĠĠ Ġdialog . set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġexit Alert () ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġtimer ?. purge () ĊĠĠĠĠĠĠĠ Ġtimer ?. cancel () ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠAlertDialog . Builder ( this ) ĊĠĠĠĠĠĠĠ Ġbuilder . setTitle (" Currently Ġgame Ġis Ġrunning , ĠAre Ġyou Ġwant Ġto Ġexit Ġgame Ġor Ġplay Ġcontinue ?") ĊĠĠĠĠĠĠĠ Ġbuilder . setMessage (" Your Ġscore Ġis : Ġ$ score Value ") ĊĊĠĠĠĠĠĠĠ Ġbuilder . set Positive Button (" Resume ") Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Score Text ( score Value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Game () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this ," Game ĠResume ", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġbuilder . set Negative Button (" Exit ") Ġ{ Ġdialog , Ġwhich Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this . application Context ," Thanks Ġfor Ġplaying Ġgame ", Toast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġdialog = builder . create () ĊĠĠĠĠĠĠĠ Ġdialog . set Canceled On Touch Outside ( false ) ĊĠĠĠĠĠĠĠ Ġdialog . set Cancel able ( false ) ĊĠĠĠĠĠĠĠ Ġdialog . show () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġexit Alert () ĊĠĠĠ Ġ} ĊĊ Ċ }