Oppure

Loading
29/10/10 14:04
bububs
Mi sono cimentato in un altro progetto, ma mi sono bloccato in un punto.
Io ho creato una matrice di cui posso impostare i valori di riga e colonna. Mi sapreste dire come fare il controllo nel caso in cui ci siano 4 pedine dello stesso colore nelle due diagonali (sx e dx).

P.S. Io uso una matrice di jlabel dove assegno a seconda dei casi l'immagine corrispondente!!
aaa
29/10/10 14:26
Pitagora
Molto semplice, ipotizziamo che il gioco forza 4 abbia 10 righe e 20 colonne. Per ogni pallina che occuperà una determinata posizione bisognerà inserire il valore dentro la matrice (n riga e n colonna). Il valore da inserire sarà la lettera iniziale del colore della pallina esempio v (sta per verde). Adesso arriviamo al controllo. Un semplice ciclo for che controlla che la colonna sia totalmente riempita da palline verdi. Analizziamo per esempio la colonna più a destra (la 20-esima)

 
for (int i; i<=10; i++) {
	if (strcmp(matrice[i][20], 'v')) {
		continue;
	} else {
		break;
	}
}

Questa funzione controlla che la colonna sia riempita di palline verdi.
Se invece vuoi vedere se ci sono palline verdi, circondate da altre palline in una colonna. Dovrai organizzarti il lavoro in questo modo:
for (int i = 0; i <= 10; i++) {
	if (!strcmp(matrice[i][20], 'v')) {
		for(int c = i;;) {
			++c; /* mi serve subito il nuovo valore di i */
			if (!strcmp(matrice[c][20], 'v')) {
				/* il ciclo continua finchè le palline non saranno più verdi */
			} else {
				break;
			}
		}
	} 
}

Lo scritto in C, perchè conosco solo questo come linguaggio.
aaa
29/10/10 14:36
bububs
Il linguaggio non è un problema perché ho fatto anch'io C. ;)
Ma non c'è un metodo che quando schiaccio su una posizione della matrice, avendo la x e la y di quella, si può controllare sia la diagonale dx e sx passante per quella posizione??
aaa
29/10/10 15:53
Pitagora
Per trovare una diagonale, partendo dal n di riga e n di colonna potresti fare cosi

matrice[n_righe+1][n_colonne-1]

troverai in questo modo una piccola diagonale (esempi vedi |)

-------|----
--------|---
---------|-- (si parte da qui)
aaa
29/10/10 18:20
bububs
Provo e ti faccio sapere!
aaa
31/10/10 11:30
bububs
Ce l'ho fatta. Ho utilizzato un altro metodo molto più lungo a causa dei ragionamenti che ho fatto, ma con la bellezza di 650 righe ho finito Forza 4.
Grazie anche a te, Pitagora, perchè mi hai fatto capire come dovevo fare. :k:
aaa
31/10/10 13:08
Pitagora
perchè non provi a spiegare il ragionamento? A qualcuno prima o poi potrà essere utile! :k:
aaa
01/11/10 8:52
bububs
Sempre qui, in questo post?
aaa