Beispiel #1
0
        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;
        }