OurGamesForCourse

Форк
0
65 строк · 1.2 Кб
1
namespace PauchiaUkladka;
2

3
public abstract class Block
4
{
5
    protected abstract Position[][] Tiles
6
    {
7
        get;
8
    }
9

10
    protected abstract Position StartOffset
11
    {
12
        get;
13
    }
14

15
    public abstract int Id
16
    {
17
        get;
18
    }
19

20
    private int rotationState;
21
    private Position offset;
22

23
    public Block()
24
    {
25
        offset = new Position(StartOffset.Row, StartOffset.Column);
26
    }
27

28
    public IEnumerable<Position> TilePositions()
29
    {
30
        foreach (Position p in Tiles[rotationState])
31
        {
32
            yield return new Position(p.Row + offset.Row, p.Column + offset.Column);
33
        }
34
    }
35

36
    public void RoatateCW()
37
    {
38
        rotationState = (rotationState + 1) % Tiles.Length;
39
    }
40
    
41
    public void RoatateCCW()
42
    {
43
        if (rotationState == 0)
44
        {
45
            rotationState = Tiles.Length - 1;
46
        }
47
        else
48
        {
49
            rotationState--;
50
        }
51
    }
52

53
    public void Move(int rows, int columns)
54
    {
55
        offset.Row += rows;
56
        offset.Column += columns;
57
    }
58

59
    public void Reset()
60
    {
61
        rotationState = 0;
62
        offset.Row = StartOffset.Row;
63
        offset.Column = StartOffset.Column;
64
    }
65
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.