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.