コード例 #1
0
        private void CheckKeys()
        {
            var keys = new List <MMPoint>(_room.keys);
            var i    = 0;

            while (i < keys.Count)
            {
                var kx = keys[i].x;
                var ky = keys[i].y;

                var keyRect    = new Rectangle(kx, ky, 8, 8);
                var playerRect = new Rectangle(_x, _y, 10, 18);

                if (keyRect.Intersects(playerRect))
                {
                    keys.RemoveAt(i);
                    IncrementScore?.Invoke(this, 100);
                }
                else
                {
                    i++;
                }
            }
            _room.keys = keys.ToArray();
        }
コード例 #2
0
        // Clears full rows as they occur
        private void FlashTmrTick(object sender, EventArgs e)
        {
            switch (flashCounter)
            {
            case 1:
                flashRow = FindFullRow();
                if (flashRow > -1)
                {
                    flashCounter = 2;
                    HasChanged(gameGrid, true, flashRow);
                }
                break;

            case 2:
                flashCounter = 3;
                HasChanged(gameGrid, false, -1);
                break;

            case 3:
                flashCounter = 4;
                HasChanged(gameGrid, true, flashRow);
                break;

            case 4:
                var newGrid = new List <string[]>(gameGrid);
                if (listShapes.Count == 0)
                {
                    return;
                }
                foreach (var p in listShapes.Last().CurrentPoints)
                {
                    if (p.Y > -1)
                    {
                        newGrid[p.Y][p.X] = "";
                    }
                }
                var newRow = new string[20];
                newGrid.RemoveAt(flashRow);
                newGrid.Insert(0, newRow);
                missATick    = true;
                gameGrid     = newGrid.ToArray();
                flashCounter = 1;
                MoveDown();
                HasChanged(gameGrid, false, -1);
                missATick   = false;
                rowCounter += 1;
                if (rowCounter % 10 == 0)
                {
                    tmr.Interval -= 40;
                    IncrementScore?.Invoke(((int)((1000 - tmr.Interval) * 0.35)));     // IncrementStore != NULL
                }
                else if (rowCounter % 5 == 0)
                {
                    tmr.Interval -= 20;
                    IncrementScore?.Invoke(((int)((1000 - tmr.Interval) * 0.25)));     // IncrementStore != NULL
                }
                else
                {
                    IncrementScore?.Invoke(((int)((1000 - tmr.Interval) * 0.05)));     // IncrementStore != NULL
                }
                break;
            }
        }