package Ġcom . al im illi . android . tile game Ċ Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . View Ċ import Ġcom . al im illi . android . tile game . data Objects . Tile Board Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠnumberOf Cols Ġ= Ġ 4 ĊĠĠĠ Ġprivate Ġval ĠnumberOf Rows Ġ= Ġ 4 ĊĠĠĠ Ġprivate Ġval Ġtile Board Ġ= ĠTile Board ( rows Ġ= ĠnumberOf Rows , Ġcols Ġ= ĠnumberOf Cols ) ĊĠĠĠ Ġprivate Ġval Ġtile Board Adapter : ĠTile Board Adapter Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠTile Board Adapter ( mContext Ġ= Ġthis , Ġtile Board Ġ= Ġtile Board ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġwin ning Label . visibility Ġ= ĠView . IN VISIBLE ĊĊĠĠĠĠĠĠĠ Ġtiles GridView . num Columns Ġ= ĠnumberOf Cols ĊĊĠĠĠĠĠĠĠ Ġtiles GridView . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset Ġadapter Ġafter Ġlayout Ġis Ġdone Ġto Ġget Ġproper Ġwidth Ġand Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtiles GridView . adapter Ġ= Ġtile Board Adapter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart New Game () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġtiles GridView . setOn ItemClickListener Ġ{ Ġparent , Ġview , Ġposition , Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( view Ġ! is ĠTile View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn ItemClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtile Position Ġ= Ġtile Board . tile Position At Linear Index ( position ) Ġ?: Ġreturn @ setOn ItemClickListener ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! tile Board . can Move Tile ( tile Position )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ setOn ItemClickListener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile Board . move Tile ( tile Position ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtile Board Adapter . notify DataSet Changed () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmoves Value Label . text Ġ= Ġtile Board . moves Count . toString () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tile Board . is Complete ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwin ning Label . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġnew Game Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart New Game () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġstart New Game () Ġ{ ĊĠĠĠĠĠĠĠ Ġtile Board . shuffle () ĊĠĠĠĠĠĠĠ Ġtile Board Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠ Ġwin ning Label . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġmoves Value Label . text Ġ= Ġ" 0 " ĊĠĠĠ Ġ} Ċ } Ċ