OurGamesForCourse

Форк
0
108 строк · 1.9 Кб
1
namespace PauchiaUkladka;
2

3
public class GameGrid
4
{
5
    private readonly int[,] grid;
6

7
    public int Rows
8
    {
9
        get;
10
    }
11

12
    public int Colums
13
    {
14
        get;
15
    }
16

17
    public int this[int r, int c]
18
    {
19
        get
20
        {
21
            return grid[r, c];
22
        }
23
        set
24
        {
25
            grid[r, c] = value;
26
        }
27
    }
28

29
    public GameGrid(int rows, int colums)
30
    {
31
        Rows = rows;
32
        Colums = colums;
33
        grid = new int[rows, colums];
34
    }
35

36
    public bool IsInside(int r, int c)
37
    {
38
        if ((r >= 0) && (r < Rows) && (c >= 0) && (c < Colums))
39
            return true;
40
        else
41
            return false;
42
    }
43

44
    public bool IsEmpty(int r, int c)
45
    {
46
        if (IsInside(r, c) && (grid[r, c] == 0))
47
            return true;
48
        else
49
            return false;
50
    }
51

52
    public bool IsRowFull(int r)
53
    {
54
        for (int c = 0; c < Colums; c++)
55
        {
56
            if (grid[r, c] == 0)
57
                return false;
58
        }
59

60
        return true;
61
    }
62

63
    public bool IsRowEmpty(int r)
64
    {
65
        for (int c = 0; c < Colums; c++)
66
        {
67
            if (grid[r, c] != 0)
68
                return false;
69
        }
70

71
        return true;
72
    }
73

74
    private void ClearRow(int r)
75
    {
76
        for (int c = 0; c < Colums; c++)
77
            grid[r, c] = 0;
78
    }
79

80
    private void MoveRowDown(int r, int numRows)
81
    {
82
        for (int c = 0; c < Colums; c++)
83
        {
84
            grid[r + numRows, c] = grid[r, c];
85
            grid[r, c] = 0;
86
        }
87
    }
88

89
    public int ClearFullRows()
90
    {
91
        int cleard = 0;
92
        
93
        for (int r = Rows-1; r >= 0; r--)
94
        {
95
            if (IsRowFull(r))
96
            {
97
                ClearRow(r);
98
                cleard++;
99
            }
100
            else if (cleard > 0)
101
            {
102
                MoveRowDown(r, cleard);
103
            }
104
        }
105

106
        return cleard;
107
    }
108
}

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

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

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

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