Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216

    [Java] disegnare forme casuali

    devo scrivere un metodo che generi casualmente oggetti che implementano l'interfaccia Shape: un miscuglio di rettangoli, ellissi e linee, con posizioni casuali. Devo poi invocare il metodo n volte e disegnare tutte le forme.

    mi dareste una mano a capire quali classi devo realizzare e in che modo devo sfruttare l'interfaccia Shape.

    Grazie

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254

    Re: [Java] disegnare forme casuali

    Originariamente inviato da raff5184
    devo scrivere un metodo che generi casualmente oggetti che implementano l'interfaccia Shape: un miscuglio di rettangoli, ellissi e linee, con posizioni casuali. Devo poi invocare il metodo n volte e disegnare tutte le forme.

    mi dareste una mano a capire quali classi devo realizzare e in che modo devo sfruttare l'interfaccia Shape.
    Innanzitutto immagino che ti stia riferendo a java.awt.Shape e alla marea di classi che la implementano.

    Comunque per estrarre valori casuali puoi usare un java.util.Random. Per ogni forma da generare, estrai per prima cosa un valore casuale che ti indicherà il tipo di oggetto da istanziare e poi estrai N dati casuali a seconda del tipo di forma (es. per un Line2D.Float, hai bisogno di 4 float). I range dei valori delle forme ovviamente li devi stabilire tu.

    Tutti gli Shape che ottieni dovresti a quel punto metterli in un array o collezione (es. ArrayList). Poi ti basta fare una classe che estende JPanel e in cui fai l'override di paintComponent(). Lì dentro scansioni la lista di Shape e ognuno lo disegni sul Graphics2D con draw(Shape) o fill(Shape). Il pannello ovviamente lo metti es. dentro un JFrame o in una applet, a seconda di cosa devi fare.

    Questo a "parole" e a grandi linee.

    Prova magari a scrivere del codice. Se hai dubbi, posta pure (anche il codice).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216
    allora ho quasi risolto.
    Il solo problema è come disegnare le diverse figure.
    Cioè quando genero un rettangolo devo dare 4 parametri (x,y,L,H) random
    in modo simile per l'ellisse... ma quando inserisco le figure nel panel le figure possono sovrapporsi... come posso fare?

    Inoltre, sebbene le dimensioni siano random voglio comunque che tutte le figure rientrino nel panel e siano visibili

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,254
    Originariamente inviato da raff5184
    in modo simile per l'ellisse... ma quando inserisco le figure nel panel le figure possono sovrapporsi... come posso fare?
    Il dubbio quale è?? Come fare per creare forme che non si sovrappongono?? Quindi è un problema se si sovrappongono?

    Ogni volta che crei una nuova forma, prima di aggiungerla alla "collezione" di forme, vai a controllare se il rettangolo che delimita la forma non si interseca con un'altra forma. Se lo fa, butti via la forma e ne generi un'altra.
    Però ti conviene generare la forma in modo che abbia una dimensione ristretta, così da essere sicuro che non possa occupare troppo o tutto lo spazio.

    Questo comunque potrebbe far sì che il ciclo ad un certo punto si ripeta per molte volte prima di trovare una forma che vada bene. Potresti anche decidere che dopo X tentativi falliti, hai terminato la generazione.

    Originariamente inviato da raff5184
    Inoltre, sebbene le dimensioni siano random voglio comunque che tutte le figure rientrino nel panel e siano visibili
    La dimensione del pannello la puoi stabilire e imporre tu. E così anche il range del valori casuali estratti lo puoi imporre tu.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    Java Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216
    grazie di tutto andbin ho risolto. Credevo che il JPanel non mi avrebe sovrapposto le diverse figure, insomma pensavo mi avrebbe nascosto quelle in secondo piano come fa il JFrame.

    Complimenti per come conosci Java!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.