Ciao di nuovo 
Che variabili hai definito nella classe Campo?
Io ero rimasto al fatto che Campo avesse come variabile: int[][] campoDiGioco , che infatti usi nel primo costruttore.
Nel secondo costruttore invece scrivi :
codice:
campoAvversario=new int[10][10];
Dovresti ricevere errore qui in teoria perché non hai definito campoAvversario prima, almeno che la classe Campo non abbia anche una variabile definita come int[][] campoAvversario.
Se invece l'hai definita, rifletti un attimo, non ha molto senso!
Campo per come l'hai definita è la tua entità di base, non deve conoscere lo stato di un altro Campo, questo lo farà poi un'altra classe.
Comunque l'errore principale è qui:
codice:
campoAvversario[row][colonna]=campoDiGioco[row][colonna];
campoDiGioco è il campo che hai passato al costruttore, quindi non puoi prenderne un indice come se fosse una matrice.
Forse ti sei anche confuso con i nomi, cerca di non usare lo stesso nome per una variabile e per un oggetto.
Quello che dovresti fare dentro quel secondo costruttore è questo:
codice:
public Campo(Campo c)
{
campoDiGioco=new int[10][10];
for(int row=0;row<campoDiGioco.length;row++){
for(int colonna=0;colonna<campoDiGioco.length;colonna++){
this.campoDiGioco[row][colonna]=c.campoDiGioco[row][colonna];
}
}
}
Quindi passi un Campo al costruttore, e non fai altro che copiare in ogni cella della matrice del Campo da istanziare la corrispondente cella della matrice campoDiGioco del campo passato come parametro.
Il this è implicito, quindi lo puoi evitare, l'ho messo solo per chiarezza.