tabella.get(x,y) restituisce un oggetto che gestisce la posizione x,y, contenente informazioni sullo stato,
cambialo in base a come hai sviluppato tutto.
//inizio il controllo dalla posizione x,y
boolean avversarioGiallo; //indica il colore delle pedine dell'avversario
//controllo per riga, verifico se, aggiungendo una sua pedina
//nella posizione che sto analizzando, l'avversario vincerebbe
//visto che mi concentro su questa posizione, devo guardare le 3 caselle a sinistra e a destra
codice:
boolean vince = false;
for (int i=-3; i<0; i++) //verifico tutte le combinazioni possibili, ossia divido a blocchi di 4.
{ for (int c=0; c<4; c++)
{ int X = x+i+c;
int Y = y;
if (i+c!=0) //se i+c==0 allora vuol dire che sono alla posizione x,y, che è
//quella da cui parto, che è vuota, quindi non va considerata.
{ if (tabella.get(X, Y).isEmpty())
break; //una delle posizioni dove
//dovrebbe esserci la pedina dell'avversario è vuota,
//con questa combinazione non può vincere in una sola mossa.
if (tabella.get(X, Y).isGiallo!=avversarioGiallo)
break; //la posizione attuale è occupata da una
//mia pedina, quindi l'avversario in questa combinazione
//non potrà vincere, vado alla prossima
}
if (c==3) //se ho controllato quattro posizioni, vuol dire che 3 di queste
vince = true; //sono usate dall'avversario, una è quella che mi interessa sapere
//se devo occuparla, in questo caso devo occuparla, sennò perderò.
}
if (vince == true) break;
}
if (vince); //metti la pedina in posizione x,y
questo è per il controllo in orizzontale, da qui puoi arrivare al controllo in diagonale cambiando
codice:
int X = x+i+c;
int Y = y;
per diagonale destra
codice:
int X = x+i+c;
int Y = y+i+c;
per diagonale sinistra(credo, ma fai delle prove e fatti un po' di conti)
codice:
int X = x-i-c;
int Y = y+i+c;
questa è la struttura generica che dovrebbe avere. a questa devi aggiungere tutti i controlli del caso, di modo che non sfori.