package Ġcom . mar co ub ert i . n ine game . initial izers Ċ Ċ import Ġcom . mar co ub ert i . n ine game . model .* Ċ import Ġkotlin . random . Random Ċ Ċ val ĠDefault Card Initializer Ġ= Ġ{ Ġcard : Card Ġ-> ĠUnit ĊĠĠĠ Ġcard . clear All () ĊĠĠĠ Ġcard [ Random . nextInt ( 1 , Ġ( card . width * card . width )+ 1 )] Ġ= Ġtrue Ċ } Ċ Ċ val ĠRandom Card Initializer Ġ= Ġ{ Ġcard : Card Ġ-> ĠUnit ĊĠĠĠ Ġcard . clear All () ĊĠĠĠ Ġrepeat ( card . width ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcard [ Random . nextInt ( 1 , Ġ( card . width Ġ* Ġcard . width ) Ġ+ Ġ 1 )] Ġ= ĠRandom . nextInt ( 1 , 4 ) Ġ== Ġ 1 ĊĠĠĠ Ġ} ĊĠĠĠ Ġif ( card . isEmpty ()) Ġcard . init ( Default Card Initializer ) Ċ } Ċ Ċ val ĠDefault Board Initializer : Ġ( board : ĠBoard ) Ġ-> ĠList < Move > Ġ= Ġ{ Ġboard Ġ-> ĊĠĠĠ Ġboard . clear All () ĊĠĠĠ Ġval Ġmoves Ġ= Ġmutable ListOf < Move >() ĊĊĠĠĠ Ġval Ġpos 1 Ġ= ĠPair ( Random . nextInt ( 1 , Ġboard . width + 1 ), Random . nextInt ( 1 , Ġboard . width + 1 )) ĊĠĠĠ Ġvar Ġpos 2 Ġ= ĠPair ( Random . nextInt ( 1 , Ġboard . width + 1 ), Random . nextInt ( 1 , Ġboard . width + 1 )) ĊĠĠĠ Ġwhile ( pos 2 Ġ== Ġpos 1 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpos 2 Ġ= ĠPair ( Random . nextInt ( 1 , Ġboard . width ), Random . nextInt ( 1 , Ġboard . width )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġboard [ pos 1 ] Ġ= ĠCard (). apply { this . init ()} ĊĠĠĠ Ġboard [ pos 2 ] Ġ= ĠCard (). apply { this . init ()} ĊĊĠĠĠ Ġmoves . add ( Move ( Move Type . NEW , Ġnull , Ġpos 1 )) ĊĠĠĠ Ġmoves . add ( Move ( Move Type . NEW , Ġnull , Ġpos 2 )) ĊĠĠĠ Ġmoves Ċ }