IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Création d'ovales aléatoires


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 58
    Par défaut Création d'ovales aléatoires
    Bonjour,

    je veux créer des ovales (10 à 20 ) sur un applet d'une facon aléatoire et aussi qui ne se chevauchent pas avec JAVA si vous pouviez m aider

    merci d avance

  2. #2
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 097
    Par défaut
    Est-ce l'algorithme qui te pose problème ou l'affichage de la solution de celui ci ?
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 58
    Par défaut
    l'algorithme car mon probleme maintenant c'est que les ovales se chevauchent et j arrive pas a matriser leur espacement??

    voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    
    
    
    public class MaFenetre extends JFrame implements ActionListener, ItemListener, FocusListener 
    { static public final String[] nomCouleurs={"gris","noir","blanc","gris clair"};
      static public final Color[] couleurs ={Color.gray, Color.black, Color.white, Color.LIGHT_GRAY};
      public MaFenetre(){
    	setTitle ("ICS TESTING");
    	setSize (512,512);
    	Container contenu = getContentPane();
    	//panneau des dessins
    	panDes = new PanneauDessin();
    	contenu.add(panDes);
    	panDes.setBackground(Color.gray);
    	//panneau des commandes
    	panCom = new JPanel();
    	contenu.add(panCom,"South");
    	//Choix de couleurs
    	comboCoulFond = new JComboBox(nomCouleurs);
    	panCom.add(comboCoulFond);
    	comboCoulFond.addItemListener(this);
    	//dimensions
    	JLabel dim = new JLabel ("Dimensions");panCom.add(dim);
    	txtLargeur = new JTextField ("50",3);
    	txtLargeur.addActionListener (this);
    	txtLargeur.addFocusListener (this);
    	panCom.add(txtLargeur);
    	txtHauteur = new JTextField ("20",3);
    	panCom.add(txtHauteur);
    	txtHauteur.addActionListener (this);
    	txtHauteur.addFocusListener (this);
    	//nombres
    		JLabel nbs = new JLabel ("Nombres");panCom.add(nbs);
    		cNombres = new JTextField ("5",2);
    		cNombres.addActionListener(this);
    		cNombres.addFocusListener(this);
    		panCom.add(cNombres);
    	//formes
    	cOvale = new JCheckBox ("Ovale", true);
    	panCom.add(cOvale);
    	cOvale.addActionListener(this);
    	cRectangle = new JCheckBox ("Rectangle");
    	panCom.add(cRectangle);
    	cRectangle.addActionListener(this);
    	
    
    }
    @Override
    public void focusGained(FocusEvent e) {}
    
    private void setLargeur()
    	{String ch = txtLargeur.getText();
    	System.out.println("largeur " +ch);
    	panDes.setLargeur(Integer.parseInt(ch));
    	}
    private void setHauteur()
    {String ch = txtHauteur.getText();
    System.out.println("hauteur " +ch);
    panDes.setHauteur(Integer.parseInt(ch));
    }
    private void setNombre()
    {String ch = cNombres.getText();
    System.out.println("nombres d'objet " +ch);
    panDes.setNombre(Integer.parseInt(ch));
    }
    
    @Override
    public void focusLost(FocusEvent e) {
    if (e.getSource() ==txtLargeur)
    	{setLargeur();
    	System.out.println("perte focus largeur");
    	panDes.repaint();
    	}
    if (e.getSource() == txtHauteur)
    	{setHauteur();
    	panDes.repaint();
    	}
    if (e.getSource() ==cNombres)
    {setNombre();
    System.out.println("commbien voulez vous d'objet??");
    panDes.repaint();
    }
    }
    @Override
    public void itemStateChanged(ItemEvent e)
    {	String couleur =(String)comboCoulFond.getSelectedItem();
    	panDes.setCouleur (couleur);
    	
    }
    @Override
    public void actionPerformed(ActionEvent ev) {
    	if(ev.getSource()==txtLargeur) setLargeur();
    	if(ev.getSource()==txtHauteur) setHauteur();
    	if(ev.getSource()==cNombres) setNombre();
    	if(ev.getSource()==cOvale) panDes.setOvale(cOvale.isSelected());
    	if(ev.getSource()==cRectangle) panDes.setRectangle(cRectangle.isSelected());
    	panDes.repaint();
    	}
    private PanneauDessin panDes;
    private JPanel panCom;
    private JComboBox comboCoulFond;
    private JTextField txtLargeur, txtHauteur, cNombres;
    private JCheckBox cOvale, cRectangle;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.event.*;
     
    public class PanneauDessin extends JPanel
    {public void paintComponent (Graphics g)
    {super.paintComponent(g);
    	//if (ovale)for (int i = 0; i<10;i++)
     
    	//for (int i = 0; i<10;i++){g.fillOval(  x=(10+ (int) (Math.random()*i)+2*largeur),y=( 10+ (int) (Math.random()*i)+2*hauteur),  largeur,  hauteur);}
     
    //while((10+ (int) (Math.random()*i))<10+ (int) (Math.random()*(i+1)));
    		 if (ovale)for (int i = 1; i<=2;i++)
     
    			 {{g.fillOval(x= (int) (Math.random()*512)+i ,y=(int) (Math.random()*512)+i,  largeur,  hauteur);}
    //		 int n = 0;
    		while(largeur+((int) (Math.random())*51*i*10)<largeur +(int) (Math.random())*51*(i+1)*10);}
    		// if(rectangle) g.drawRect(10, 10,  largeur, hauteur);
     
     
    	if(rectangle) g.drawRect(10, 10,  largeur, hauteur);}
     
    public void setRectangle (boolean b) {rectangle =b;}
    public void setOvale (boolean b)		 {ovale = b;}
    public void setLargeur(int l ){ largeur = l;}
    public void setHauteur ( int h ){hauteur = h;}
    public void setNombre (int n){nombre = n;}
    public void setCouleur (String c){for (int i =0; i<MaFenetre.nomCouleurs.length; i++)
    	if (c==MaFenetre.nomCouleurs[i]) setBackground (MaFenetre.couleurs[i]);}
    private boolean rectangle = false , ovale =false;
    private int largeur =50, hauteur =50;
    private int nombre = 1;
    private int x = 10;
    private int y =10; 
    }

  4. #4
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 097
    Par défaut
    Tiens comment vérifies tu si 2 ovales s'intersecte ? (ou se contiennent).

    Mais ton code est beaucoup trop gros et contient trop de details inutiles tel que l'interface graphique qui n'a rien avoir avec l'algorithme en lui même.

    Peux tu détailler juste ton algorithme ? même avec un pseudo-code.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2012
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2012
    Messages : 58
    Par défaut
    j ai pas d'alogorithme car je n arrive pas avoir comment je peux le faire??
    tu vois que mes x, y pour chaque ovale est aleatoire donc la question comment je peux faire pour que ces ovales ne se touchent pas
    merci

  6. #6
    Modérateur
    Avatar de wax78
    Homme Profil pro
    R&D - Palefrenier programmeur
    Inscrit en
    Août 2006
    Messages
    4 097
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : R&D - Palefrenier programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 4 097
    Par défaut
    Il faut simplement testé que pour chacun des ovales, aucun des autres ovales ne soient contenus ou n'intersectionne pas avec lui.

    Donc naîvement placer des ovales aléatoirement, tout en testant si pas d'intersection jusque la. Et si interesection alors recommencer. Mais il est possible qu'il n'y ait pas de solution donc gerer le nombre d'itération si nécessaire.
    (Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)

    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [Débutant] Création de rectangle aléatoire
    Par Korithov dans le forum MATLAB
    Réponses: 0
    Dernier message: 28/04/2015, 15h51
  2. Création liste déroulante aléatoire + création de feuille
    Par dvdhag123 dans le forum Macros et VBA Excel
    Réponses: 24
    Dernier message: 12/02/2015, 16h18
  3. Création de séquences aléatoires de chiffres avec conditions
    Par sigor16 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/02/2013, 11h35
  4. Création d'animations aléatoires
    Par Simon MARQUIS dans le forum Android
    Réponses: 1
    Dernier message: 06/07/2011, 11h31
  5. Création d'image aléatoire
    Par xoum89 dans le forum Débuter
    Réponses: 3
    Dernier message: 02/03/2011, 13h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo