Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: ArrayList

Jousikameli [21.10.2004 17:26:49]

#

36:n kortin muistipeli pitäisi saada aikaiseksi. Peli on muuten valmis, mutta korttien sekoitus puuttuu. Olen nyt muuttanut taulukon listaksi, joka sekoitti shufflella kaikki 36 korttia eli kortit on sekaisin. Lista pitäisi muuttaa vielä taulukoksi, mutta miten?

Metabolix [21.10.2004 19:35:47]

#

Kyllähän ne voisi sekoittaa suoraan taulukostakin. Esimerkiksi voisi arpoa kaksi korttia ja vaihtaa niiden paikkaa. Vaikka sadan tai tuhannen vaihdon jälkeen luulisi korttien olevan sekaisin. Kysymykseesi vastaan, että eikö ne voisi ihan yksitellen siirtää? Listan 1. jäsen ruutuun [1, 1], 2. jäsen [1, 2] jne, 7. jäsen [2, 1], 8. jäsen [2, 2] jne.

Sami [21.10.2004 20:24:51]

#

Näin sekoittaminen onnistuu ainakin yksiuloitteiselle taulukolle.
Tietotyypin tuosta voi tarvittaessa vaihtaa helposti toiseksi (int[] -> toinentietotyyppi[]).

public static int[] shuffle(int[] array) {
	for (int i = 0; i < array.length; i++) {
		int swap = (int)(Math.random() * array.length);

		int tmp = array[i];
		array[i] = array[swap];
		array[swap] = tmp;
	}

	return array;
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta