|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Come si fa ?
Ciao a tutti devo realizzare un programma ma non so da che parte incominciare:
devo costruire una griglia con assi numerati e dare la possibilità all'utente di indicare dei punti su di essa. In particolare: 1 click --> pallino su griglia 2 click --> croce su griglia In base alle regioni della griglia in cui si hanno pallini e croci il programma deve elaborare i dati e dare un uscita secondo una funzione conosciuta Mi sapete dare qualche idea ? Io so programmare un po in java e so usare Matlab |
![]() |
![]() |
![]() |
#2 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Nessuno mi sa dare un'idea su come procedere ?
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
E' difficile darti un'idea senza offrire anche la soluzione completa dell'esercizio.
Potresti iniziare creando un oggetto Griglia che conservi una matrice di oggetti Simbolo (PALLINO o CROCE). Dai alla griglia la capacità di modificare il valore di una delle sue celle. Crea un ascoltatore di eventi prodotti dalla griglia. Quando la griglia subisce la modifica di una delle sue celle, dopo aver immagazzinato la modifica, le fai sparare un evento in direzione di tutti gli ascoltatori registrati. Crea un pannello che proietti sullo schermo i dati della griglia. Dota questo pannello di un ascoltatore di eventi che sia connesso alla griglia. Quando questo ascoltatore riceverà un evento dalla griglia, proietterà sullo schermo le modifiche intervenute (un pallino o una crocetta nella posizione stabilita per la cella modificata). Quando giunge il momento di calcolare la funzione, prendi la griglia e la passi ad un oggetto, chiamiamolo Processore, che analizza i valori delle celle e, in base ad una logica da te stabilita, produca la Funzione. E' più facile a farsi che a dirsi.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#4 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Grazie mille PGI, a me non sembra poi cosi facile
![]() Quindi posso fare tutto in java ? |
![]() |
![]() |
![]() |
#6 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Ma in pratica devo realizzare un APPLET ?
![]() |
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
Se deve stare dentro una pagina HTML, sì. Altrimenti crei una normale applicazione. Puoi stabilirlo tu, se non ti sono state date precise specifiche.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Non lo so ma sospetto di no.
Un Applet Java è un programma eseguito all'interno di un web browser distribuito attraverso una pagina html. Eventualmente è dotato di un'interfaccia grafica utente che può apparire come una finestra o come un elemento dinamico della pagina html. Io penso che tu voglia o deva realizzare un programma stand-alone: autonomo, dove l'autonomia vale "non serve il web browser". Dunque, niente Applet.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Ci sarebbe appletviewer.
__________________
|Java Base| |
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
appletviewer è uno strumento di sviluppo incluso nel JDK che non appartiene alla piattaforma Java standard.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#11 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Si avete ragione, io non voglio un programma che sia eseguito da un web browser ma un programma stand alone.
Quindi questo codice che avevo trovato in rete non posso riutilizzarlo ? ![]() import java.awt.*; public class DrawAndClick extends java.applet.Applet { // public boolean mouseDown(Event e, int x, int y) { // il metodo getGraphics() della classe BufferedImage // restituisce un oggetto Graphics Graphics g = getGraphics(); g.fillRect(x-2,y-2,4,4); return true; } public void paint(Graphics g) { int i, j; // Disegno una griglia con assi che vanno da 0 a 300 // Ogni quadratino ha lato 30 for(i=0; i<=300; i=i+30) { // disegna le linee verticali della griglia //public void drawLine(int x1, int y1, int x2, int y2) g.drawLine(0,i,300,i); // disegna le linee orizzontali della griglia g.drawLine(i,0,i,300); } } } |
![]() |
![]() |
![]() |
#12 | |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Quote:
Comunque puoi facilmente convertire quell'applet in applicazione, vedi ad esempio qui: http://www.rgagnon.com/javadetails/java-0305.html Aggiungi una J davanti a Panel, Frame, Button...
__________________
|Java Base| Ultima modifica di lovaz : 16-04-2007 alle 11:24. |
|
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Occhio che quel codice non solo e non tanto è vecchio (Java 1.1) ma fa un uso non corretto della pipeline di rendering di Java.
Se mi dai 5 minuti butto giù un esempio di griglia. So che, essendo un esercizio scolastico, potrebbe sembrare non corretto ma se non v'hanno spiegato nulla di interfacce grafiche utente, disegno e Swing tanto vale prendere l'esercizio come primo passo in quest'universo. Comunque scrivo solo una traccia, un indizio.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#14 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Ok grazie
|
![]() |
![]() |
![]() |
#15 |
Senior Member
Iscritto dal: Jul 2002
Messaggi: 4334
|
Effettivamente fa un po' schifo...
colpa della mia pigrizia, ho messo il primo link di google ![]() ![]()
__________________
|Java Base| |
![]() |
![]() |
![]() |
#16 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Ma credo si riferisca al mio codice
![]() |
![]() |
![]() |
![]() |
#17 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
M'è venuto non breve ma piuttosto esplicito.
Con pallini e crocette. Codice PHP:
Codice PHP:
Codice PHP:
Codice PHP:
Per domande, dubbi, curiosità siamo qui.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
#18 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Sei trooppo gentile
![]() Ho provato a compilare e funziona !!! Adesso me lo guardo con calma e cerco di capire il tutto Grazie ancora PS: Ma tu sei il pgi del forum MokaByte ? |
![]() |
![]() |
![]() |
#19 |
Member
Iscritto dal: Dec 2006
Messaggi: 201
|
Codice PHP:
|
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
No, se intendo correttamente.
GeneralPath è la definizione di un poligono da settimana enigmistica: unisci tutti i puntini e vedi cosa salta fuori. E' uno java.awt.geom.Shape, cioè una figura geometrica 2D. Un oggetto Shape può essere rifilato al metodo draw o fill di un Graphics2D e il risultato è che la figura geometrica viene riprodotta alla foce della pipeline di rendering. Sullo schermo o in memoria, dipende. Comunque sia, la creazione di un oggetto di tipo Shape (GeneralPath ad esempio) non comporta anche il disegno di quella figura. Le linee di codice che quoti creano e mettono da parte, per un uso futuro, una crocetta. La crocetta è fatta di due linee separate e incrociate. Le diagonali di un quadrato. Ci sono diversi tipi di Shape nel package java.awt.geom. Non c'è la crocetta. Per crearla, quindi, uso GeneralPath. La linea: croce.moveTo(0, 0); usa il metodo moveTo per dire al GeneralPath: "qui inizia un segmento separato da tutti gli altri". La linea: croce.lineTo(larghezza - margineInterno, altezza - margineInterno); usa il metodo lineTo per dire al GeneralPath: "immagazzina un segmento retto che parte dal punto precedente, quello del moveTo nel nostro caso, e arriva fino a (larghezza - margineIntero, altezza - margineInterno)". Una delle due diagonali di un rettangolo, quella che inizia dall'estremo in alto a sinistra e finisce in basso a destra. La linea seguente: croce.moveTo(larghezza - margineInterno, 0); dice al GeneralPath di immagazzinare quel punto come l'inizio di un segmento non connesso. E' il primo punto della seconda diagonale: in alto a destra. L'ultima linea: croce.lineTo(0, altezza - margineInterno); dice al GeneralPath di immagazzinare una linea che va dal punto precedente, quello del moveTo, al punto (0, altezza - margineInterno). E' il secondo punto della seconda diagonale: in basso a sinistra. Nel sistema di coordinate della pipeline di rendering Java2D (accessibile tramite un oggetto Graphics2D), l'origine degli assi è "in alto a sinistra". X cresce "verso destra", Y cresce "verso il basso". Ripeto, quello istruzioni creano una croce ma non la disegnano. Il disegno della croce avviene quando trovi un "pipeline.draw(figuraCroce)". Noterai come quelle istruzioni siano precedute da un "pipeline.translate". Questo perchè, come si nota nella costruzione del GeneralPath, la crocetta è costruita come una linea che parte dal punto (0,0) e va fino al punto, in ipotesi, (10, 10) più una linea che parte dal punto (10, 0) e va fino al punto (0, 10). Un semplice pipeline.draw(figuraCroce) disegnerebbe questa croce come risulta dai suoi punti: sempre in alto a sinistra dello schermo. Spostando il sistema di coordinate con translate, prima del disegno, siamo in grado di far apparire una stessa figura in punti diversi dello schermo senza cambiare le coordinate dei suoi punti (ma cambiando l'origine degli assi del sistema di coordinate a cui appartiene al figura).
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:33.