PDA

View Full Version : [JAVA] Array di JLabel


Kutolenko7
26-06-2006, 11:12
Salve a tutti, sto facendo un gioco in java, solo che ho un problemino con l'array di JLabel.
In pratica ho creato due JLabel []: JLabel primo = new JLabel[6]; JLabel secondo = new JLabel[4];
In quello da 6 ho messo, spero correttamente, 6 immagini. Poi ho generato 4 numeri Random, da 0 a 5 compresi, che sarebbero gli indici del JLabel 'primo'.
Vorrei mettere nel secondo JLabel 4 immagini a caso che ci sono nel primo JLabel, ecco perchè ho usato Random.

Poi ho fatto una cosa del genere:

secondo[0] = primo[numerorandomgeneratoprima];

Spero di essere stato chiaro....è corretta una cosa del genere??? Grazie

franksisca
26-06-2006, 11:26
scusa, è il problemino e che non ti funziona o non sai se funziona???

Prova e posta il problema, e se già l'hai detto scusa, ma il caldo mi ha rinco......

Kutolenko7
26-06-2006, 11:29
Mi da un errore qui: secondo[0] = primo[numerorandomgeneratoprima];

Ora non ho il codice a portata di mano perchè sono a lavoro.....tu hai mai fatto una cosa del genere??

franksisca
26-06-2006, 11:37
allora, dando per scontato che il numerorandomgeneratoprima sia un intero (ripeto intero int) tra 0 e 5, dovresti dirci che tipo di errore ti dà, magari postando il codice di output dell'errore.

la celerità non è importante, tanto siamo qui:D

Kutolenko7
26-06-2006, 12:50
Ok...allora appena vado a casa vi posto il codice... ;)

Grazie mille per l'aiuto....sempre molto gentili!

Ah...cmq uso Eclipse, e non mi mette il tipo di errore...mi mette sola la riga dove c'è l'errore...

Kutolenko7
26-06-2006, 21:09
Ecco....questo è il codice, aspetto una vostra Illuminazione :lol: :

import java.util.Random;

import javax.swing.ImageIcon;
import javax.swing.JLabel;


public class Combinazione {
public static JLabel[] labelCombinazione;
public static JLabel[] labelSoluzione;
int NUMERO_COLORI = 6;
static int NUMERO_SOLUZIONE = 4;

public void creaCombinazione() {

java.net.URL url;
labelCombinazione = new JLabel[NUMERO_COLORI];
url = this.getClass().getResource("/risorse/t0.jpg");
labelCombinazione[0].setIcon(new ImageIcon(url));
url = this.getClass().getResource("/risorse/t1.jpg");
labelCombinazione[1].setIcon(new ImageIcon(url));
url = this.getClass().getResource("/risorse/t2.jpg");
labelCombinazione[2].setIcon(new ImageIcon(url));
url = this.getClass().getResource("/risorse/t3.jpg");
labelCombinazione[3].setIcon(new ImageIcon(url));
url = this.getClass().getResource("/risorse/t4.jpg");
labelCombinazione[4].setIcon(new ImageIcon(url));
url = this.getClass().getResource("/risorse/t5.jpg");
labelCombinazione[5].setIcon(new ImageIcon(url));
creaSoluzione();
}

public static JLabel[] creaSoluzione(){

labelSoluzione = new JLabel[NUMERO_SOLUZIONE];
Random generator = new Random();
int colore0,colore1,colore2,colore3;
colore0 = Math.abs(generator.nextInt()) % 6;
labelSoluzione[0] = labelCombinazione[colore0];
colore1 = Math.abs(generator.nextInt()) % 6;
labelSoluzione[1] = labelCombinazione[colore1];
colore2 = Math.abs(generator.nextInt()) % 6;
labelSoluzione[2] = labelCombinazione[colore2];
colore3 = Math.abs(generator.nextInt()) % 6;
labelSoluzione[3] = labelCombinazione[colore3];


return labelSoluzione;
}

}

franksisca
26-06-2006, 21:41
emh, il codice dell'errore????

Oceans11
27-06-2006, 08:53
per prima cosa....perchè fai

return labelSoluzione nel metodo JLabel[] creaSoluzione()???

mi sembra che il metodo faccia side-effect sull'array (la variabile statica JLabel[] labelSoluzione)....insomma fai 2 cose uguali(diverse, in effetti, ma hai lo stesso risultato in fin dei conti...l'array).

poi non ho il compilatore sotto mano...e sto ancora dormendo un pò....

cosa ti restitusce la chiamata generator.nextInt() un intero in quale intervallo???mi sembra che il valore assoluto proprio non servi!!!!!! e poi perchè prendi il resto della divisione per 6???


cmq quoto franksisca "emh, il codice dell'errore????"

Kutolenko7
28-06-2006, 00:33
Ho risolto la cosa...ora però ho trovato un altro problema.

Non so se sapete giocare a Mastermind....io dovrei fare questo gioco. La grafica l'ho fatta, creando un jpanel bidimensionale....ora però non so come fare quando l'utente seleziona il pallino e clicca sulla colonna dove vuole mettere questo pallino....spero di essere stato chiaro.....help please!!!

So che c'è il metodo mouse click.....solo che non riesco ad utilizzarlo.

Kutolenko7
28-06-2006, 10:36
Un aiutino per favore??

franksisca
28-06-2006, 10:54
non sò giocare a mastermind, ma mi ripeto, se hai un problema, dicci qual è, che poi insieme cercheremo di risolverlo.

P.S.: è buona norma, una volta trovata una soluzione, postarla sul forum, in modo che poi tutti la possano trovare;)

Kutolenko7
28-06-2006, 11:42
Il problema l'ho postato....forse non mi sono spiegato bene, ma cmq se non sai giocare a Mastermind è difficile da spiegare...

Questo è il link di Mastermind che ho trovato su internet: http://www.irt.org/games/js/mind/index.htm (Mastermind)

In pratica dovrei fare la funzione che cliccando sul pallino (per scegliere il colore), e poi cliccando sulla griglia, la griglia si aggiorna mettendo il pallino nella posizione cliccata. Spero di essermi spiegato.....grazie mille!!

p.s. il codice non l'ho postato perchè ero completamente fuori strada...

franksisca
28-06-2006, 11:48
prova a fare così:

metti un comboBox, o una serie di radioBox affiancati alle palline con colori, poi premi l'ok per settare la palla e blocchi la scelta.
a questo punto attivi il ricettore sulla grigli, aspetti il click, a click effettuato riattivi la scelta palla.

scrivi codice e posta problemi;)

Kutolenko7
28-06-2006, 12:52
Io in pratica ho fatto un JPanel [][] "a matrice", ed i pallini sono dei bottoni. Pensavo di fare una cosa tipo così: quando ad esempio il bottone giallo è selezionato (isEnable) , metti il pallino giallo nella posizione ad esempio JPanal[2][5].....solo che dovrei tenere conto anche di altre cose. Tipo che la partita inizia dalla riga in basso.....quindi se ad esempio l'utente clicca sulla seconda riga non deve uscire il pallino.....come posso gestire questa cosa??

franksisca
28-06-2006, 13:43
con questoif :D:D:D





P.S.: non sto scherzando :O :O :O

Kutolenko7
28-06-2006, 18:09
Eh lo so....però ci sarebbero una caterva di if..... :D

Tu hai qualche altra soluzione???

franksisca
28-06-2006, 18:35
switch
no dai, scusa, ma non ho resistito.

Potresti pensare ad una struttuta a stati, non sò se hai presente il concetto di automa.

Kutolenko7
28-06-2006, 20:00
Ehm no.....cmq visto che dovrei mettere prima il tempo, cioè quando parte il gioco dovrebbe partire anche il tempo...tipo cronometro per vedere quanto tempo sta per risolvere il gioco....come potrei fare?? Sto provando ad usare la classe Timer.....ma quando stampo il tempo mi mette solo lo 0...senza incrementarlo....

public class Timer {
long elapsedTime;
long startTime;
long endTime;
boolean isRunning;


public void Start(){

if(isRunning) return;
isRunning = true;
startTime = System.currentTimeMillis();
}


public void Stop(){

if(!isRunning) return;
isRunning = false;
endTime = System.currentTimeMillis();
elapsedTime = elapsedTime + endTime - startTime;

}


public long getElapsedTime(){
if(isRunning) {
endTime = System.currentTimeMillis();
elapsedTime = elapsedTime + endTime - startTime;
startTime = endTime;
}
return elapsedTime;
}
}

poi nel main gli metto questo

Timer timer = new Timer();
timer.Start();
System.out.println(cr.getSecond());

franksisca
28-06-2006, 20:48
hai presente il concetto di thread????

cerca in giro esempi sui thread, e se proprio non ci riesci diccelo.......

Kutolenko7
28-06-2006, 23:22
Ho provato a cercare qualcosa.....ma non ho capito bene cosa vuoi dire. :confused: :confused:

franksisca
28-06-2006, 23:31
Ho provato a cercare qualcosa.....ma non ho capito bene cosa vuoi dire. :confused: :confused:
sai cosa sono i thread(in java la classe Thread)???
se si, la risposta è quella, altrimenti aspetta domani che ne riarliamo, ora ho sonno;)


NOTTE FORUM!!!

Kutolenko7
29-06-2006, 10:30
Più o meno ho visto di cosa tratta......ma per gestire il tempo non dovrei usare la classe Timer??

Se magari potresti farmi un esempio te ne sarei molto grato....

franksisca
29-06-2006, 11:13
lo trovo e te lo mando

Kutolenko7
29-06-2006, 12:20
Grazie...ma anche con la gestione del tempo?!?!