示例#1
0
        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;
        }
示例#2
0
        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;
        }
示例#3
0
        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;
        }
示例#4
0
        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)
                    {

                    }
                }
            }
        }
示例#5
0
 public CicleClickEventArgs(Circle circle)
 {
     this.I = circle.I;
     this.J = circle.J;
     this.Cor = circle.Cor;
 }