// Michael ĠCar ter Ċ // Ġ 1 9 1 0 0 5 9 Ċ Ċ package Ġapp . ling ok night . game Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . activity ViewModels Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġapp . ling ok night . R Ċ import Ġapp . ling ok night . databinding . Fragment Game Binding Ċ Ċ // ĠUI Ġfragment Ġfor Ġthe Ġquestions Ġaspect Ġof Ġthe Ġgame Ċ Ċ class ĠGame Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠviewModel : ĠGame ViewModel Ġby Ġactivity ViewModels () ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠFragment Game Binding . inflate ( in flater ) ĊĠĠĠĠĠĠĠ Ġ// ĠG iving Ġthe Ġbinding Ġaccess Ġto Ġthe ĠGame ViewModel ĊĠĠĠĠĠĠĠ Ġbinding . game ViewModel Ġ= ĠviewModel ĊĠĠĠĠĠĠĠ Ġ// ĠAllows ĠData ĠBinding Ġto ĠOb serve ĠLive Data Ġwith Ġthe Ġlifecycle Ġof Ġthis ĠFragment ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĊĊĠĠĠĠĠĠĠ Ġ// ĠOb serves Ġchanges Ġto Ġplayer ĊĠĠĠĠĠĠĠ ĠviewModel . player . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding ( binding ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ// ĠOb serves Ġchanges Ġto Ġcurrent Question ĊĠĠĠĠĠĠĠ ĠviewModel . current Question . observe ( view Lifecycle Owner , Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . random Answers () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Binding ( binding ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġbinding . next Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Answer ( binding ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġview Binding ( binding : ĠFragment Game Binding ){ ĊĠĠĠĠĠĠĠ Ġbinding . game Question . text Ġ= ĠviewModel . current Question . value ?. text ĊĠĠĠĠĠĠĠ Ġbinding . radio Btn Answer One . text Ġ= ĠviewModel . answer List [ 0 ] ĊĠĠĠĠĠĠĠ Ġbinding . radio Btn Answer Two . text Ġ= ĠviewModel . answer List [ 1 ] ĊĠĠĠĠĠĠĠ Ġbinding . radio Btn Answer Three . text Ġ= ĠviewModel . answer List [ 2 ] ĊĠĠĠĠĠĠĠ Ġbinding . radio Btn Answer Four . text Ġ= ĠviewModel . answer List [ 3 ] ĊĠĠĠĠĠĠĠ Ġbinding . word Image Game . setImage Resource ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( viewModel . current Question . value ?. word Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" king " Ġ-> ĠR . drawable . king ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" kn ight " Ġ-> ĠR . drawable . kn ight ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" pr in cess " Ġ-> ĠR . drawable . pr in cess ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" witch " Ġ-> ĠR . drawable . witch ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" fox " Ġ-> ĠR . drawable . fox ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" purple " Ġ-> ĠR . drawable . purple _ monster ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" blue " Ġ-> ĠR . drawable . blue _ bird ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" dragon " Ġ-> ĠR . drawable . dragon ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" monster " Ġ-> ĠR . drawable . green _ monster ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" green " Ġ-> ĠR . drawable . green _ t roll ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tree " Ġ-> ĠR . drawable . tree ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" yellow " Ġ-> ĠR . drawable . yellow _ monster ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" h orse " Ġ-> ĠR . drawable . h orse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" go at " Ġ-> ĠR . drawable . go at ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . drawable . o ops _ com ic ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠPerform ing Ġchecks Ġon Ġthe Ġradio Ġbuttons Ġto Ġsee Ġif Ġthe Ġanswer Ġmatches Ġthat Ġof Ġthe Ġquestion ĊĠĠĠ Ġ// ĠIf Ġcorrect Ġa Ġpoint Ġis Ġadded Ġto Ġthe Ġplayer Ġscore Ġand Ġthe Ġgame Ġwill Ġprogress Ġto Ġthe Ġcorrect Ġor ĊĠĠĠ Ġ// Ġincorrect Ġfragment . ĊĠĠĠ Ġprivate Ġfun Ġcheck Answer ( binding : ĠFragment Game Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġradio Id Ġ= Ġbinding . answer Group . checked RadioButton Id ĊĠĠĠĠĠĠĠ Ġ// ĠDo Ġnothing Ġif Ġnothing Ġis Ġchecked Ġ( id Ġ== Ġ- 1 ) ĊĠĠĠĠĠĠĠ Ġif Ġ(- 1 Ġ!= Ġradio Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġanswer Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( radio Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . radio Btn _ answer One Ġ-> Ġanswer Index Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . radio Btn _ answer Two Ġ-> Ġanswer Index Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . radio Btn _ answer Three Ġ-> Ġanswer Index Ġ= Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . radio Btn _ answer Four Ġ-> Ġanswer Index Ġ= Ġ 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( viewModel . is Correct ( answer Index )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . score Ġ+= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . increase Seen () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . increase Correct () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. find Nav Controller ()?. navigate ( R . id . action _ game Fragment _ to _ correct Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} else Ġif (! viewModel . is Correct ( answer Index )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . increase Seen () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠviewModel . increase Incorrect () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview ?. find Nav Controller ()?. navigate ( R . id . action _ game Fragment _ to _ incorrect Fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ