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; } }
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; } } } }