Пример #1
0
        private void ClickPlay(MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Middle)
            {
                _showMoveable = !_showMoveable;
                return;
            }
            else if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                _showHint = !_showHint;
                return;
            }

            int xp = (int)(e.X / CELLWIDTH);
            int yp = (int)(e.Y / CELLHEIGHT);

            Tile clicked = _field.GetTileFromCoord(xp, yp);

            if (clicked == null)
            {
                return;
            }

            if (!_field.CanMove(clicked))
            {
                return;
            }

            if (_selected == null || clicked == _selected)
            {
                _selected = clicked;
            }
            else
            {
                PlayResult result = _field.Play(_selected, clicked);
                if (result == PlayResult.Won)
                {
                    MessageBox.Show("You won the game in " + Math.Ceiling(_field.GameTime.TotalSeconds) + " seconds !", "You won!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else if ((result & PlayResult.NoFurtherMoves) != 0)
                {
                    DialogResult boxResult = MessageBox.Show("No further moves possible :( Scramble?", "Dead end",
                                                             MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                    if (boxResult == DialogResult.Yes)
                    {
                        _field.Scramble();
                    }
                }
                _selected = null;
            }
        }
Пример #2
0
        private void DoAction(string action)
        {
            if (action.StartsWith("moveable"))
            {
                _showMoveable = !_showMoveable;
            }
            else if (action.StartsWith("hint"))
            {
                _showHint = !_showHint;
            }
            else if (action.StartsWith("select"))
            {
                string[] splitted = action.Split(new char[] { '|' },
                                                 StringSplitOptions.RemoveEmptyEntries);
                if (splitted.Length != 3)
                {
                    return;
                }

                int x, y;
                if (int.TryParse(splitted[1], out x) && int.TryParse(splitted[2], out y))
                {
                    Tile tile = _field.GetTileFromCoord(x, y);
                    if (tile == null)
                    {
                        return;
                    }
                    else if (_selected == null || _selected == tile)
                    {
                        _selected = tile;
                    }
                    else
                    {
                        if (_field.Play(_selected, tile) == PlayResult.NoFurtherMoves)
                        {
                            _field.Scramble();
                        }
                        _selected = null;
                    }
                }
            }
        }