private bool ExisteVizinho(Circle circle) { bool pode = false; for (int i = circle.I - 1; i <= circle.I + 1; i++) { for (int j = circle.J - 1; j <= circle.J + 1; j++) { try { if (!_matriz[i, j].IsDestroyed) { var circleTemp = ((Circle)_matriz[i, j].Shape); if (circle.Cor == circleTemp.Cor && !circleTemp.IsDestaque && IfIsParThenIsImpar(circle, circleTemp)) { return true; } } } catch (Exception) { } } } return pode; }
private bool IfIsParThenIsImpar(Circle circle, Circle circleTemp) { bool retorno = false; var somaOrigi = circle.I + circle.J; var somaTemp = circleTemp.I + circleTemp.J; if (somaOrigi % 2 == 0) { return somaTemp % 2 == 0 ? false : true; } else { return somaTemp % 2 == 0 ? true : false; } return retorno; }
private Sprite CreateShape(int i = 0, int j = 0) { Sprite sprite; var r = _random.Next(0, 4); var circle = new Circle((Cor)r, i, j); circle.Click += new Action<object, CicleClickEventArgs>(circle_Click); sprite = new Sprite(circle); var _shapeStartPosition = new Microsoft.Xna.Framework.Vector2((i * afastamentoBola) + espacoInicialH, (j * afastamentoBola) + espacoInicialV); //_shapeStartPosition = new Microsoft.Xna.Framework.Vector2((float)ActualWidth * 0.5f, (float)ActualHeight * 0.5f); //sprite.Velocity = _shapeVelocity; sprite.Position = _shapeStartPosition; //sprite.Rotation = SpinnerTransform.Rotation; _shapeCount++; GameSurface.Children.Add(sprite); //return sprite; return sprite; }
private void ValidarProximidades(Circle circle) { for (int i = circle.I - 1; i <= circle.I + 1; i++) { for (int j = circle.J - 1; j <= circle.J + 1; j++) { try { var circleTemp = ((Circle)_matriz[i, j].Shape); if (!_matriz[i, j].IsDestroyed && circle.Cor == circleTemp.Cor && !circleTemp.IsDestaque && IfIsParThenIsImpar(circle, circleTemp)) { this.countMark++; circleTemp.Destacar(); ValidarProximidades(circleTemp); } } catch (Exception) { } } } }
public CicleClickEventArgs(Circle circle) { this.I = circle.I; this.J = circle.J; this.Cor = circle.Cor; }