Spróbuj użyć nawiasów, żeby odseparować wyrażenia. W zależności od priorytetu operatorów Twoje wyrażenie może być czytane w taki sposób:
poleGry[y][x - 1]
, czy równa się 0 || poleGry[y][x]
, oraz czy całość po lewej stronie równa się poleGry[y][x - 1]
.
Z powyższego sprawdzamy czy wartość logiczna 4 == (0 lub 2)
, czyli 1 == (0 v 1)
(prawda).
Potem sprawdzamy, czy policzona prawda == wartość logiczna 4
(bo poleGry[y][x - 1] = 4
, czyli też prawda).
Wartość logiczna 0 to fałsz, a każda inna liczba jest traktowana jako prawda (można się kłócić, bo to trochę zależy od kompilatora). Dlatego spróbuj wyrażenia pogrupować w nawiasy, żeby mieć pewność, że porównujesz liczby.
( (poleGry[y][x - 1] == 0) || (poleGry[y][x] == poleGry[y][x - 1]) )
.
Jak napiszesz if (3)
to instrukcja po ifie się wykona, a jak napiszesz if (0)
, to instrukcja po ifie się nie wykona.