public void setBoard(Game game) { mBoardConfiguration = game.BoardConfiguration; mBoardArrangment = game.BoardArrangment; // calc prefered tiles in width and height int singleMargin = Application.Context.Resources.GetDimensionPixelSize(Resource.Dimension.card_margin); float density = Application.Context.Resources.DisplayMetrics.Density; singleMargin = Math.Max((int)(1 * density), (int)(singleMargin - mBoardConfiguration.Difficulty * 2 * density)); int sumMargin = 0; for (int row = 0; row < mBoardConfiguration.NumRows; row++) { sumMargin += singleMargin * 2; } int tilesHeight = (mScreenHeight - sumMargin) / mBoardConfiguration.NumRows; int tilesWidth = (mScreenWidth - sumMargin) / mBoardConfiguration.NumTilesInRow; mSize = Math.Min(tilesHeight, tilesWidth); mTileLayoutParams = new LinearLayout.LayoutParams(mSize, mSize); mTileLayoutParams.SetMargins(singleMargin, singleMargin, singleMargin, singleMargin); // build the ui buildBoard(); }
private void arrangeBoard() { BoardConfiguration boardConfiguration = mPlayingGame.BoardConfiguration; BoardArrangment boardArrangment = new BoardArrangment(); // build pairs // result {0,1,2,...n} // n-number of tiles List <int> ids = new List <int>(); for (int i = 0; i < boardConfiguration.NumTiles; i++) { ids.Add(i); } // shuffle // result {4,10,2,39,...} var rnd = new Random(); ids = ids.OrderBy(item => rnd.Next()).ToList(); // place the board List <string> tileImageUrls = mPlayingGame.Theme.TileImageUrls; tileImageUrls = tileImageUrls.OrderBy(item => rnd.Next()).ToList(); boardArrangment.pairs = new Dictionary <int, int>(); boardArrangment.tileUrls = new Dictionary <int, string>(); int j = 0; for (int i = 0; i < ids.Count; i++) { if (i + 1 < ids.Count) { // {4,10}, {2,39}, ... boardArrangment.pairs.Add(ids[i], ids[i + 1]); // {10,4}, {39,2}, ... boardArrangment.pairs.Add(ids[i + 1], ids[i]); // {4, boardArrangment.tileUrls.Add(ids[i], tileImageUrls[j]); boardArrangment.tileUrls.Add(ids[i + 1], tileImageUrls[j]); i++; j++; } } mPlayingGame.BoardArrangment = boardArrangment; }