示例#1
0
        public void MoveCats()
        {
            List <Sprite> Baddies = Sprites.Where(x => x.Ai != null).ToList();

            foreach (Sprite baddie in Baddies)
            {
                Direction directionToMoveBaddie = baddie.Ai.Move(baddie.X, baddie.Y);
                switch (directionToMoveBaddie)
                {
                case Direction.left:
                    UpdateX_Event?.Invoke(this, new UpdateX_EventArgs(baddie, -1));
                    break;

                case Direction.right:
                    UpdateX_Event?.Invoke(this, new UpdateX_EventArgs(baddie, 1));
                    break;

                case Direction.up:
                    UpdateY_Event?.Invoke(this, new UpdateY_EventArgs(baddie, -1));
                    break;

                case Direction.down:
                    UpdateY_Event?.Invoke(this, new UpdateY_EventArgs(baddie, 1));
                    break;

                case Direction.none:
                    //cat died
                    int _x = baddie.X;
                    int _y = baddie.Y;
                    RemoveSprite_Event?.Invoke(this, new RemoveSprite_EventArgs(baddie));
                    AddNewSprite_Event?.Invoke(this, new AddNewSprite_EventArgs(new Sprite()
                    {
                        X = _x, Y = _y
                    }));
                    break;
                }
            }
        }
示例#2
0
        public void MoveCats()
        {
            List <Sprite> Baddies = Sprites.Where(x => x.Ai != null).ToList();

            foreach (Sprite baddie in Baddies)
            {
                Direction directionToMoveBaddie = baddie.Ai.Move(baddie.X, baddie.Y);
                switch (directionToMoveBaddie)
                {
                case Direction.left:
                    UpdateX_Event?.Invoke(this, new UpdateX_EventArgs(baddie, -1));
                    if (KilledMouse(baddie))
                    {
                        LoseLife_Event?.Invoke(this, new EventArgs());
                    }
                    break;

                case Direction.right:
                    UpdateX_Event?.Invoke(this, new UpdateX_EventArgs(baddie, 1));
                    if (KilledMouse(baddie))
                    {
                        LoseLife_Event?.Invoke(this, new EventArgs());
                    }
                    break;

                case Direction.up:
                    UpdateY_Event?.Invoke(this, new UpdateY_EventArgs(baddie, -1));
                    if (KilledMouse(baddie))
                    {
                        LoseLife_Event?.Invoke(this, new EventArgs());
                    }
                    break;

                case Direction.down:
                    UpdateY_Event?.Invoke(this, new UpdateY_EventArgs(baddie, 1));
                    if (KilledMouse(baddie))
                    {
                        LoseLife_Event?.Invoke(this, new EventArgs());
                    }
                    break;

                case Direction.none:
                    //cat died
                    if (baddie.Lives > 0)
                    {
                        baddie.Lives--;
                    }
                    if (!Baddies.Where(a => a.Lives > 0).ToList().Any())
                    {
                        int _x = baddie.X;
                        int _y = baddie.Y;
                        RemoveSprite_Event?.Invoke(this, new RemoveSprite_EventArgs(baddie));
                        AddNewSprite_Event?.Invoke(this, new AddNewSprite_EventArgs(new Sprite()
                        {
                            X = _x, Y = _y
                        }));
                    }
                    else
                    {
                        ChangeSprite_Event?.Invoke(this, new ChangeSprite_EventArgs(baddie));
                    }

                    break;
                }
            }
        }
示例#3
0
        public bool MoveSprites(Direction direction)
        {
            bool canMove = false;

            if (CollisionDetection(characterSprite.X, characterSprite.Y, direction))
            {
                List <Sprite> Sprites = GetAllSpritesInPath(characterSprite.X, characterSprite.Y, direction);

                switch (direction)
                {
                case Direction.down:
                    if (CanMoveSprites(Sprites, Direction.down))
                    {
                        canMove = true;
                    }
                    break;

                case Direction.up:
                    if (CanMoveSprites(Sprites, Direction.up))
                    {
                        canMove = true;
                    }
                    break;

                case Direction.left:
                    if (CanMoveSprites(Sprites, Direction.left))
                    {
                        canMove = true;
                    }
                    break;

                case Direction.right:
                    if (CanMoveSprites(Sprites, Direction.right))
                    {
                        canMove = true;
                    }
                    break;
                }

                if (canMove)
                {
                    foreach (Sprite sprite in Sprites)
                    {
                        switch (direction)
                        {
                        case Direction.down:
                            UpdateY_Event?.Invoke(this, new UpdateY_EventArgs(sprite, 1));
                            break;

                        case Direction.up:
                            UpdateY_Event?.Invoke(this, new UpdateY_EventArgs(sprite, -1));
                            break;

                        case Direction.left:
                            UpdateX_Event?.Invoke(this, new UpdateX_EventArgs(sprite, -1));
                            break;

                        case Direction.right:
                            UpdateX_Event?.Invoke(this, new UpdateX_EventArgs(sprite, 1));
                            break;
                        }
                    }
                }
            }
            else
            {
                canMove = true;
            }
            return(canMove);
        }