Jeu fonctionnel

This commit is contained in:
2026-02-03 15:36:11 +01:00
parent f297b3d715
commit 71a2eac8b2
19 changed files with 74 additions and 20 deletions

View File

@@ -69,7 +69,8 @@ public class Cercle extends ObjetGraphique{ // il s'agit plutôt d'arcs de cercl
// -> le booléen permet de ne plus être tributaire
// de la vitesse de répétition du clavier
//-------------------------------------------------------------------------
public void Monter(){
public void Monter(){
montee = true;
}

View File

@@ -23,6 +23,7 @@ public class Jeu implements KeyListener, ActionListener{
// un qui passera dessus
protected Cercle demiCercleAvant = new Cercle(90,-180); // celui qui est sur la ligne
protected Cercle demiCercleArriere = new Cercle(90,180); // celui qui est derrière la ligne
Ligne laligne = new Ligne();
// A FAIRE : ajouter les objets graphiques manquants, s'il y en a
@@ -46,12 +47,10 @@ public class Jeu implements KeyListener, ActionListener{
//-------------------------------------------------------------------------
public Jeu(){
// Gestion du score : a réactiver en fin de TP, inutile au début
/*
labScore = new JLabel();
labScore.setText("<html><h3>score : 0</h3></html>");
labScore.setBounds(20, 0, 200, 50);
ecran.add(labScore);
*/
}
@@ -111,7 +110,6 @@ public class Jeu implements KeyListener, ActionListener{
// Création d'une fenêtre
JFrame fenetre = new JFrame();
Ligne laligne = new Ligne();
ecran.ajouterObjet(demiCercleArriere);
ecran.ajouterObjet(demiCercleAvant);
ecran.ajouterObjet(laligne);
@@ -127,7 +125,7 @@ public class Jeu implements KeyListener, ActionListener{
fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Démarrage du timer, qui rythmera l'animation
horloge = new Timer(40, this);
horloge = new Timer(20, this);
horloge.start();
demiCercleArriere.setCouleur(new Color(0.8f, 0.0f, 0.0f));
@@ -140,7 +138,7 @@ public class Jeu implements KeyListener, ActionListener{
//-------------------------------------------------------------------------
@Override
public void actionPerformed(ActionEvent e) {
ecran.traiterBoucleAnimation();
}
}

View File

@@ -36,19 +36,26 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique
// Valeurs initiales pour la position de la Ligne
double x = 800;
double y = 200;
double dx,dy;
double xCourant = x;
double yCourant = y;
double dx = 0,dy=0;
// Création de la liste de segments qui composent la ligne
Segment s;
Segment s = new Segment(xCourant,yCourant,dx,dy);
for (int i=0; i<nbSegments; i++){
// définition d'un nouveau segment
dx = Math.random()*20+80;
dy = Math.random()*40-20;
dx = (Math.random()*20)+80;
dy = (Math.random()*60)-30;
s = new Segment(x,y,dx,dy);
s.setCouleur(new Color(0.2f,0.2f,0.2f));
x+=dx;
y+=dy;
listSegments.add(s);
}
}
@@ -74,11 +81,16 @@ public class Ligne extends ObjetGraphique{// Hérite de la classe ObjetGraphique
// Redéfinition de la méthode Animer, spécifiquement pour la classe Ligne
//-------------------------------------------------------------------------
@Override
public void Animer() {
// Principe :
// on parcourt tous les segments et on décale chacun de 10 pixels (par exemple)
// vers la gauche
void Animer() {
// On déplace chaque segment vers la gauche (vitesse arbitraire de 5)
double vitesseDefilement = 5.0;
// On met à jour le x de la ligne (utilisé pour le calcul de position)
this.x -= vitesseDefilement;
// On répercute sur chaque segment
for (Segment s : listSegments) {
s.setX(s.getX() - vitesseDefilement);
}
}
}

View File

@@ -14,8 +14,7 @@ abstract class ObjetGraphique {
// Position
protected double x;
protected double y;
protected double y;
protected Color couleur = new Color(0.0f,0.2f,0.2f);

View File

@@ -54,6 +54,6 @@ public class Segment extends ObjetGraphique { // Hérite de la classe ObjetGraph
// TODO Auto-generated method stub
}
public void setX(double x) { this.x = x; }
}