Kółko i krzyżyk, sprawdzanie diagonalne(custom board i fieldsToWin)

0

Robię grę kółko i krzyżyk w javie, częściowo zrobiłem metodę o nazwie "checkDiagonalWin", ale zatrzymałem się na tym, aby przeszukać wszystkie ewentualne przekątne(wygrane po skosie), nie tylko te główne(od lewego górnego rogu do prawego dolnego i lewego dolnego do prawego górnego). Tu jest moja metoda, która obejmuje tylko te dwie możliwości. Czy ktoś miałby na szybko jakieś rozwiązanie, jak sprawdzić wszystkie możliwe wygrane po skosie? Rozmiar planszy jest dowolny, jak również fieldsToWin.

 public boolean checkDiagonalWin(Player player) {
		int total = 0;
		for (int x = 0; x < size; x++) {
			for (int lr = x; lr < size - x; lr++) {

				if (gameBoard[lr - x][lr - x] == player.getId()) {
					total++;
					if (total == fieldsToWin) {
						return true;
					}
				} else {
					total = 0;
				}
			}
		}
		total = 0;

		for (int rl = 0; rl < size; rl++) {
			if (gameBoard[rl][size - rl - 1] == player.getId()) {
				total++;
				if (total == fieldsToWin) {
					return true;
				}
			} else {
				total = 0;
			}

		}
		return false;
	} 
0

Może pętla po wszystkich leżących dostatecznie wysoko polach planszy. Każde takie pole jest początkiem dwóch przekątnych, jedna w lewo w dół, druga w prawo w dół.

1 użytkowników online, w tym zalogowanych: 0, gości: 1