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 :

Algorithme de glouton !


Sujet :

avec Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 126
    Par défaut Algorithme de glouton !
    Salut tout le monde j'ai un petit projet a faire utilisation de l'algorithme de glouton (Monnaie) et je veux le faire avec Java
    he ben j'ai l'algorithme qui marche bien et je veux utiliser des images pour ca
    par example : si l'utilisateur donne 100 Da(Dinar Algerien) et le prix de l'unite et 25 DA
    (on suppose que la monnaie Algerienne se compose de : 10 DA, 50 DA,5 DA )
    alors l'algorithme dois rendre 50 DA + 10 DA + 10 DA+ 5 DA )
    moi je veux utilise des image pour faire ca mais je ne sais pas d'ou commence un cout de pied ca sera trés bien
    Merci D'avance

  2. #2
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Pour l'affichage de la monnaie (au sens ensemble de pièces), une idée pourrait être de créer un composant graphique :
    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
    public class ChangePanel extends JPanel {
     
    	private Change change; // objet qui représente un ensemble de pièces.
     
     
    	public ChangePanel() {
    		change= null;
    	}
     
    	protected void paintComponent(Graphics g) {
    		super.paintComponent(g);
     
    		if(change != null) {
    			// ici tout est possible pour le dessiner de la monnaie
    			// il faut juste avoir les idées claires sur la façon de la représenter
    		}
    	}
     
     
    	public setChange(Change c) {
    		change= c;
    		repaint();
    	}
    }

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 126
    Par défaut
    Citation Envoyé par ngpub Voir le message
    Pour l'affichage de la monnaie (au sens ensemble de pièces), une idée pourrait être de créer un composant graphique :
    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
    public class ChangePanel extends JPanel {
     
    	private Change change; // objet qui représente un ensemble de pièces.
     
     
    	public ChangePanel() {
    		change= null;
    	}
     
    	protected void paintComponent(Graphics g) {
    		super.paintComponent(g);
     
    		if(change != null) {
    			// ici tout est possible pour le dessiner de la monnaie
    			// il faut juste avoir les idées claires sur la façon de la représenter
    		}
    	}
     
     
    	public setChange(Change c) {
    		change= c;
    		repaint();
    	}
    }
    oui c'est ce que je veux faire mais le problem je ne sais pas comment charge des images et les dessiner par example j'ai scanner une piece de 10 Da et une autre de 20 DA comment faire pour les dessiner ???
    et esque c'est possible que je cree un nouveau type qui contient des images si c'est oui comment faire
    Merci Beaucoup mon cher

  4. #4
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Pour lire une image, il existe la classe ImageIO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Lit le fichier "20da.png" placé à côté du fichier "ChangePanel.class"
    Image image = ImageIO.read(ChangePanel.class.getResourceAsStream("20da.png"));
    Pour tout ce qui concerne le dessin regarde les classes Graphics et Graphics2D
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //pour une image
    protected void paintComponent(Graphics g) {
    	...
    	int x = // calcule de x
    	int y = // calcule de y
    	g.drawImage(image, x, y, this);
    	...
    }

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 126
    Par défaut
    Citation Envoyé par ngpub Voir le message
    Pour lire une image, il existe la classe ImageIO
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // Lit le fichier "20da.png" placé à côté du fichier "ChangePanel.class"
    Image image = ImageIO.read(ChangePanel.class.getResourceAsStream("20da.png"));
    Pour tout ce qui concerne le dessin regarde les classes Graphics et Graphics2D
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //pour une image
    protected void paintComponent(Graphics g) {
    	...
    	int x = // calcule de x
    	int y = // calcule de y
    	g.drawImage(image, x, y, this);
    	...
    }
    ca marche trés bien si on utilise cette methode quand on cree le programme mais dés le debut on sais pas combien sa vas etre la monnaie alors comment faire si on veut faire apparaitre plusieur image quand on click sur un button (on dois tout d'abord calcule combien il y as d'images à affiche ca c'est deja fais ) ce que je ne sais pas c'est comment affiche une image dans un JPanel quand je click sur un button

  6. #6
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    ce que je ne sais pas c'est comment affiche une image dans un JPanel quand je click sur un button
    Il suffit d'utiliser la méthode setChange(Change) de ChangePanel dans l'ActionListener utilisé par le bouton.

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 126
    Par défaut
    Citation Envoyé par ngpub Voir le message
    Il suffit d'utiliser la méthode setChange(Change) de ChangePanel dans l'ActionListener utilisé par le bouton.
    j'ai fais ce que tu mas dit et ca marche trés bien mais cette methode me permit d'affiche qu'une image a la fois esque il y as une methode pour que je puisse affiche le nombre que je veux d'images voila mon code :
    j'ai cree deux button la 1er affiche dix DA et l'autre affiche 100 Da

    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
    import javax.swing.*;
    import javax.imageio.*;
    import java.awt.*;
    import java.awt.event.*;
    import java.io.IOException;
    import java.io.*;
     
    class bu extends JFrame {
    	 File file = new File("dix.gif");
         Image im=null;
         File file1 = new File("100.jpg");
         Image im1=null;
    	public bu()
    	{		
    		super("new");
    		setBounds(100,100,300,500);
    	    try {
        		im=ImageIO.read(file);// throw IOException;
        	} catch (Exception e){};
        	try {
        		im1=ImageIO.read(file1);// throw IOException;
        	} catch (Exception e){};
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		final ChangePanel p=new ChangePanel();
    		JButton b=new JButton("change");
    		b.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e)
    			{
    			   p.setxy(100,100);
    			   p.setChange(im); /10 DA
    			}
    		});
    		p.add(b);
    		JButton b1=new JButton("change");
    		b1.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent e)
    			{
    			     p.setxy(200,300);
    			     p.setChange(im1); // 100 Da
    			}
    		});
    		p.add(b1);
    		setContentPane(p);		
    		setVisible(true);
    	}	
    	public static void main (String[] args) {
    		bu dd=new bu();
    }
     
    }
    class ChangePanel extends JPanel {
    	int x,y;
    	public void setxy(int n,int p)
    	{
    		x=n;
    		y=p;
    	}
    	private Image change; // objet qui représente un ensemble de pièces.
    	private Image changes[];
    	public ChangePanel() {
    		change= null;
    	}
    	protected void paintComponent(Graphics g) {
    		super.paintComponent(g);
    		Graphics2D s;
    		Color c=Color.white;
    		this.setBackground(c);
    		if(change != null) {
    			g.drawImage(change,x,y,this);
    		} 
    //		g.drawImage(changes[1],10,20,this);
    	}
    	public void setChange(Image c) {
    		change=c;
    		repaint();
    	}
    	public void setChanges(Image c[],int i) {
    		change= c[i];
    		repaint();
    	}
     
    }

  8. #8
    Membre chevronné Avatar de ngpub
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    449
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 449
    Par défaut
    Je t'ai proposé
    public void setChange(Change c) { ...
    Change n'est pas une image mais le résultat de l'algorithme glouton. Il contient l'information sur les pièces utilisées, il ne fait aucune hypothèse sur la représentation. Par exemple ça peut être :
    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
    class Change {
    	/**
             * Indique le nombre de pièces de 10.
             */
    	private int count10;
     
    	/**
             * Indique le nombre de pièces de 20.
             */
    	private int count20;
     
    	/**
             * Indique le nombre de pièces de 50.
             */
    	private int count50;
     
    	public Change(int count10, int count20, int count50) {
    		this.count10 = count10;
    		this.count20 = count20;
    		this.count50 = count50;
    	}
     
     
    	public int getCount10() {
    		return count10;
    	}
     
     
    	public int getCount20() {
    		return count20;
    	}
     
     
    	public int getCount50() {
    		return count50;
    	}
    }
    Quant à lui ChangePanel reçoit un objet Change et se débrouille pour le traduire en affichage. Il doit déjà contenir les images et toutes les infos nécessaires à l'affichage, voici une version simpliste de la classe ChangePanel :
    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
    class ChangePanel extends JPanel {
     
    	private static final Image IMAGE_10;
    	private static final Image IMAGE_20;
    	private static final Image IMAGE_50;
     
    	static {
    		try {
    			IMAGE_10 = ImageIO.read(new File("10.gif"));
    			IMAGE_20 = ImageIO.read(new File("20.gif"));
    			IMAGE_50 = ImageIO.read(new File("50.gif"));
    		} cath (IOException ex) {
    			throw new RuntimeException(ex);
    		}
    	}
     
    	private Change change;
     
    	public ChangePanel()
    	{
    		change = null;
    		setBackground(Color.white);
    		setPreferredSize(new Dimension(640, 480));
    	}
     
    	protected void paintComponent(Graphics g) {
    		super.paintComponent(g);
     
    		if(change != null) {
    			int x = 10;
    			int y = 30;
    			int deltaX = 30; // décalage entre chaque pièce.
     
    			// dessin des pièces de 10
    			for(int i = 0; i < change.getCount10(); i++) {
    				g.drawImage(IMAGE_10, x, y, this);
    				x += deltaX;
    			}
     
    			// dessin des pièces de 20
    			for(int i = 0; i < change.getCount20(); i++) {
    				g.drawImage(IMAGE_20, x, y, this);
    				x += deltaX;
    			}
     
    			// dessin des pièces de 50
    			for(int i = 0; i < change.getCount50(); i++) {
    				g.drawImage(IMAGE_50, x, y, this);
    				x += deltaX;
    			}			
    		} 
    	}
     
     
    	public void setChange(Change c) {
    		change=c;
    		repaint();
    	}
    }
    Sinon attention, tu ajoutes les boutons dans le ChangePanel, ils risquent de masquer le dessin des pièces. Crée plutôt un panel spécifique pour les boutons.

  9. #9
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 126
    Par défaut
    Citation Envoyé par ngpub Voir le message
    Je t'ai proposé


    Change n'est pas une image mais le résultat de l'algorithme glouton. Il contient l'information sur les pièces utilisées, il ne fait aucune hypothèse sur la représentation. Par exemple ça peut être :
    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
    class Change {
    	/**
             * Indique le nombre de pièces de 10.
             */
    	private int count10;
     
    	/**
             * Indique le nombre de pièces de 20.
             */
    	private int count20;
     
    	/**
             * Indique le nombre de pièces de 50.
             */
    	private int count50;
     
    	public Change(int count10, int count20, int count50) {
    		this.count10 = count10;
    		this.count20 = count20;
    		this.count50 = count50;
    	}
     
     
    	public int getCount10() {
    		return count10;
    	}
     
     
    	public int getCount20() {
    		return count20;
    	}
     
     
    	public int getCount50() {
    		return count50;
    	}
    }
    Quant à lui ChangePanel reçoit un objet Change et se débrouille pour le traduire en affichage. Il doit déjà contenir les images et toutes les infos nécessaires à l'affichage, voici une version simpliste de la classe ChangePanel :
    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
    class ChangePanel extends JPanel {
     
    	private static final Image IMAGE_10;
    	private static final Image IMAGE_20;
    	private static final Image IMAGE_50;
     
    	static {
    		try {
    			IMAGE_10 = ImageIO.read(new File("10.gif"));
    			IMAGE_20 = ImageIO.read(new File("20.gif"));
    			IMAGE_50 = ImageIO.read(new File("50.gif"));
    		} cath (IOException ex) {
    			throw new RuntimeException(ex);
    		}
    	}
     
    	private Change change;
     
    	public ChangePanel()
    	{
    		change = null;
    		setBackground(Color.white);
    		setPreferredSize(new Dimension(640, 480));
    	}
     
    	protected void paintComponent(Graphics g) {
    		super.paintComponent(g);
     
    		if(change != null) {
    			int x = 10;
    			int y = 30;
    			int deltaX = 30; // décalage entre chaque pièce.
     
    			// dessin des pièces de 10
    			for(int i = 0; i < change.getCount10(); i++) {
    				g.drawImage(IMAGE_10, x, y, this);
    				x += deltaX;
    			}
     
    			// dessin des pièces de 20
    			for(int i = 0; i < change.getCount20(); i++) {
    				g.drawImage(IMAGE_20, x, y, this);
    				x += deltaX;
    			}
     
    			// dessin des pièces de 50
    			for(int i = 0; i < change.getCount50(); i++) {
    				g.drawImage(IMAGE_50, x, y, this);
    				x += deltaX;
    			}			
    		} 
    	}
     
     
    	public void setChange(Change c) {
    		change=c;
    		repaint();
    	}
    }
    Sinon attention, tu ajoutes les boutons dans le ChangePanel, ils risquent de masquer le dessin des pièces. Crée plutôt un panel spécifique pour les boutons.
    Merci Infiniment je ne sais pas quoi dire je vais essaier de combine ma class avec la class de dessin je te tien au courant A+

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 126
    Par défaut
    Salut tout marche a la perfection maintenant je veux juste utilise Netbeans esque je peut modifie le Jpanel de netbeans par le mien ? comment faire
    Merci beaucoup

Discussions similaires

  1. Réponses: 4
    Dernier message: 03/02/2014, 09h55
  2. Algorithme glouton et problème du rendu de monnaie
    Par quentinzone dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 06/01/2012, 11h49
  3. Voyageur de commerce & algorithme glouton
    Par tagsOf dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 27/11/2009, 22h15
  4. aide sur un algorithme glouton
    Par simplexieum dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 23/03/2008, 23h12
  5. [Lisp] Algorithme glouton
    Par TomCat1664 dans le forum Lisp
    Réponses: 2
    Dernier message: 04/01/2005, 12h19

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