Partage
  • Partager sur Facebook
  • Partager sur Twitter

Instancier plusieurs objet avec Thread

Exercice course de Chevaux

    24 septembre 2017 à 12:18:40

    Bonjour,

    J'ai un exercice en java dans lequel je dois mettre en place une course de chevaux.

    La consigne est la suivante : 

    "L'objectif est d'écrire un programme qui affiche une fenêtre de dimension 400x300. Ce programme va manipuler 6 instances de Cheval numérotées de 1 à 6, devant parcourir une distance de 50 unités. L’application graphique doit fournir un bouton "GO" pour lancer la course, un texte pour afficher le résultat "Résultat : 3 4 6..." qui informe l'utilisateur sur l'ordre d'arrivée. Au centre, une représentation visuelle de la progression de la course qui sera ajoutée dans la partie 4."

    J'ai crée la fenêtre adéquate à l'aide de JFrame. Cependant, je ne sais pas comment instancier mes 6 chevaux. J'aimerais le faire dans une boucle for de manière à en créer 6 d'un coup. Mais en sachant que mes chevaux possèdent des paramètres dans leur constructeur, comment modifier le constructeur de chaque nouveau cheval crée?

    Ci-dessous mon code, merci d'avance pour vos réponses. 

    package tp5;
    import javax.swing.JButton;
    import java.lang.*;
    import java.util.ArrayList;
    
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JTextField;
    
    import java.awt.*;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.*;
    
    import tp3.Convertisseur;
    
    public class Cheval extends JFrame implements Coureur, Runnable, ActionListener{
    	Thread someThread;
    
    	//Attributs
    	private String id;
    	public int distance,position;
    	private Arbitre monArbitre;
    	private Container panneau;
    	private JButton B1;
    	private JLabel L1;
    	private Thread t;
    
    
    	//Constructeurs
    	public Cheval(String id, int distance, Arbitre a)
    	{
    		this.id = id;
    		this.distance= distance;
    		this.monArbitre = a;
    
    	}
    
    	public Cheval()
    	{
    		//Creation de la fenetre
    		super();
    		setTitle("Tierce");
    		setSize(400,300);
    		setLocation(300,150);
    		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    		//Recuperation du container
    		panneau = getContentPane();
    
    		//Creation des objets à utiliser
    		L1 = new JLabel("Resultat : ");
    		B1 = new JButton(" Go ");
    
    		//Ajout au panneau
    		panneau.add(L1,BorderLayout.NORTH);
    		panneau.add(B1,BorderLayout.SOUTH);
    
    		//Permet d'ecouter le bouton
    		B1.addActionListener(this);
    
    		//Mise en place du Thread
    
    
    
    		//Cheval c = new cheval("Franck",10,null);
    		setVisible(true);
    
    	}
    
    
    
    
    	//Accesseurs
    	//Methode
    
    	public void run()
    	{
    		//Ligne de depart
    		position = 0;
    
    		//Le cheval court
    		while (position<distance)
    		{
    			try{
    				position++;
    				Thread.sleep(50);
    				System.out.println(getPosition());
    				System.out.println(""+id);
    			}
    
    			catch (Exception e)
    			{
    				System.out.println("Erreur Sleep");
    			}
    
    		}
    
    		//Le cheval a passé la ligne
    		//monArbitre.arrive(id);
    
    	}
    
    
    	public int getPosition()
    	{
    		return position;
    		//return distance;
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent arg0) {
    
    		/*ArrayList al = new ArrayList();
    		al.add("Albert");
    		al.add(20);
    		al.add(null);*/
    		//for (int i = 0 ; i<=6; i++)
    		//	{
    		//System.out.println("La course commence");
    		Thread c = new Thread(new Cheval("Albert",2,null));
    		c.start();	
    		//}
    
    
    		/*Runnable runnable = new Cheval("Albert",2,null);
    		for (int i = 0; i < 10; i++) {
    			Thread thread = new Thread(runnable);
    			thread.start();
    
    			}*/
    		//	List<Cheval> Cheval = new ArrayList<Cheval>();
    
    
    	}
    
    	public static  synchronized void main(String[] args) {
    		Cheval s = new Cheval();
    	}
    
    
    
    }
    
    
    
    
    
    



    • Partager sur Facebook
    • Partager sur Twitter

    Instancier plusieurs objet avec Thread

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown