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();
}
}
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.