Пример #1
0
        private void Callback(object state)
        {
            Dispatcher.InvokeAsync(() =>
            {
                if (Board.ActiveFigure == null)
                {
                    Board.ActiveFigure = Board.NextFigure ?? Figure.GetFigure((Figures) new Random().Next(0, 5));
                    Board.NextFigure   = Figure.GetFigure((Figures) new Random().Next(0, 5));
                    Board.NextFigure.X = 2;
                    Board.NextFigure.Y = 2;
                    DrawNextFigure();

                    Board.ActiveFigure.X = Board.Width / 2;
                    Board.ActiveFigure.Y = Board.Height - 2;
                    DrawTiles();
                    return;
                }

                if (CheckBounds(Direction.Down))
                {
                    Board.ActiveFigure.Y -= 1;
                    DrawTiles();
                    return;
                }
                else
                {
                    if (Board.ActiveFigure.Y < Board.Height - 2)
                    {
                        Board.Tiles.AddRange(Board.ActiveFigure.Tiles.Select(tile => new Tile(tile.X + Board.ActiveFigure.X, tile.Y + Board.ActiveFigure.Y)));
                        Board.ActiveFigure = null;
                        RemoveLines();
                        return;
                    }
                    else
                    {
                        if (linesRecord < linesCompleted)
                        {
                            linesRecord = linesCompleted;
                        }
                        LinesRecord.Text   = linesRecord.ToString();
                        Board.ActiveFigure = null;
                        Board.Tiles        = new List <Tile>();
                        linesCompleted     = 0;
                        timer.Change(int.MaxValue, 0);
                        Announcement.Text       = "Game Over!!";
                        Announcement.Visibility = Visibility.Visible;
                    }
                }
            });
        }
Пример #2
0
        public static Figure GetFigure(Figures f)
        {
            switch (f)
            {
            case Figures.Cube:
                return(new Figure
                {
                    Tiles = new List <Tile>(new Tile[]
                    {
                        new Tile(-1, -1),
                        new Tile(-1, 0),
                        new Tile(0, 0),
                        new Tile(0, -1)
                    })
                });

            case Figures.Stick:
                return(new Figure
                {
                    Tiles = new List <Tile>(new Tile[]
                    {
                        new Tile(-1, 0),
                        new Tile(0, 0),
                        new Tile(1, 0),
                        new Tile(2, 0)
                    })
                });

            case Figures.Left:
                return(new Figure
                {
                    Tiles = new List <Tile>(new Tile[]
                    {
                        new Tile(-1, 0),
                        new Tile(0, 0),
                        new Tile(1, 0),
                        new Tile(1, 1)
                    })
                });

            case Figures.Rigth:
                return(new Figure
                {
                    Tiles = new List <Tile>(new Tile[]
                    {
                        new Tile(-1, 0),
                        new Tile(-1, 1),
                        new Tile(0, 0),
                        new Tile(1, 0)
                    })
                });

            case Figures.RigthS:
                return(new Figure
                {
                    Tiles = new List <Tile>(new Tile[]
                    {
                        new Tile(-1, -1),
                        new Tile(-1, 0),
                        new Tile(0, 0),
                        new Tile(0, 1)
                    })
                });

            case Figures.LeftS:
                return(new Figure
                {
                    Tiles = new List <Tile>(new Tile[]
                    {
                        new Tile(0, -1),
                        new Tile(0, 0),
                        new Tile(-1, 0),
                        new Tile(-1, 1)
                    })
                });
            }

            return(Figure.GetFigure(Figures.Cube));
        }