Occhio, l'ordine delle condizioni deve essere invertito (prima controlli se le coordinate sono sensate, poi accedi all'elemento), altrimenti prima sfori e poi controlli.

Quindi non così
codice:
campo[x][y+1]==n && y+1<=3
ma così:
codice:
y+1<=3 && campo[x][y+1]==n
(nota che puoi fare questo perché l'operatore && garantisce che se l'espressione a sinistra è false quella a destra non viene valutata, altrimenti dovresti fare due if nidificati)