XOGame

Форк
0
/
FieldX0.java 
113 строк · 3.5 Кб
1
public class FieldX0 {
2
    char[][] field; int size = 9; int countToWin = 5;
3

4
    void initField() {
5
        this.field = new char[size][size];
6
        for (int row = 0; row < size; row++) {
7
            for (int col = 0; col < size; col++) {
8
                field[row][col] = ' ';
9
            }
10
        }
11
        System.out.println("Field initialized");
12
        this.printField();
13
    }
14

15
    void printField() {
16
        System.out.print(" ");
17
        for (int i = 1; i <= size; i++) {
18
            System.out.print(i + " ");
19
        }
20
        System.out.println();
21
        for (int row = 0; row < size; row++) {
22
            int rowNumber = row + 1;
23
            System.out.print(rowNumber + " ");
24
            for (int col = 0; col < size; col++) {
25
                System.out.print("[" + this.field[row][col] + "]");
26
            }
27
            System.out.println();
28
        }
29
    }
30

31
    boolean isPlaceFree(int rowIndex, int colIndex) {
32
        if (rowIndex<0 || rowIndex>=size || colIndex<0 || colIndex>=size) {
33
            return false;
34
        } else if (this.field[rowIndex][colIndex] == ' ') {
35
            return true;
36
        } else {
37
            return false;
38
        }
39
    }
40

41
    void setValue(int rowIndex, int colIndex, char value) {
42
        this.field[rowIndex][colIndex] = value;
43
    }
44

45
    boolean isGameOver(char player) {
46
        for (int row=0; row < this.size; row++) {
47
            for (int col=0; col < this.size; col++) {
48
                if (checkRightDirection(row, col, player)) {
49
                    return true;
50
                } else if (checkDownDirection(row, col, player)) {
51
                    return true;
52
                } else if (checkRightDiagonal(row, col, player)) {
53
                    return true;
54
                } else if (checkLeftDiagonal(row, col, player)) {
55
                    return true;
56
                }
57
            }
58
        } return false;
59
    }
60

61
    boolean checkRightDirection(int row, int col, char player) {
62
        if (col > this.size - this.countToWin) {
63
            return false;
64
        }
65
        for (int i = col; i < col + this.countToWin; i++) {
66
            if (this.field[row][i] != player) {
67
                return false;
68
            }
69
        } return true;
70
    }
71

72
    boolean checkDownDirection(int row, int col, char player) {
73
        if (row > this.size - this.countToWin) {
74
            return false;
75
        }
76
        for (int i = row; i < row + this.countToWin; i++) {
77
            if (this.field[i][col] != player) {
78
                return false;
79
            }
80
        }
81
        return true; }
82

83
    boolean checkRightDiagonal(int row, int col, char player) {
84
        if (row > this.size - this.countToWin) {
85
            return false;
86
        }
87
        if (col > this.size - this.countToWin) {
88
            return false;
89
        }
90
        for (int sdvig = 0; sdvig < this.countToWin; sdvig++) {
91
            int rowToCheck = row + sdvig;
92
            int colToCheck = col + sdvig;
93
            if (this.field[rowToCheck][colToCheck] != player) {
94
                return false;
95
            }
96
        }
97
        return true; }
98

99
    boolean checkLeftDiagonal(int row, int col, char player) {
100
        if (row > this.size - this.countToWin) {
101
            return false;
102
        }
103
        if (col < this.countToWin - 1) {
104
            return false;
105
        }
106
        for (int sdvig = 0; sdvig < this.countToWin; sdvig++) {
107
            int rowToCheck = row + sdvig; int colToCheck = col - sdvig;
108
            if (this.field[rowToCheck][colToCheck] != player) {
109
                return false;
110
            }
111
        }
112
        return true;
113
    } }
114

115

116

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

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

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

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