forked from menault/TD3_DEV51_Qualite_Algo
Merge branch 'Hugo'
This commit is contained in:
119
src/fr/iut/Projet/Affiche.java
Normal file
119
src/fr/iut/Projet/Affiche.java
Normal file
@@ -0,0 +1,119 @@
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
|
||||
class Affiche extends JComponent {
|
||||
private int step = 0;
|
||||
private boolean youWin = false;
|
||||
|
||||
public void setStep(int step) {
|
||||
this.step = step;
|
||||
repaint();
|
||||
}
|
||||
|
||||
public void setYouWin(boolean value) {
|
||||
this.youWin = value;
|
||||
repaint();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void paintComponent(Graphics g) {
|
||||
super.paintComponent(g);
|
||||
|
||||
if (isOpaque()) {
|
||||
g.setColor(getBackground());
|
||||
g.fillRect(0, 0, getWidth(), getHeight());
|
||||
}
|
||||
|
||||
Graphics2D g2 = (Graphics2D) g.create();
|
||||
g2.setStroke(new BasicStroke(3));
|
||||
g2.setColor(Color.BLACK);
|
||||
|
||||
drawGallows(g2);
|
||||
drawHangman(g2);
|
||||
|
||||
if (step >= 7) drawSkull(g2);
|
||||
if (youWin) drawYouWinMessage(g2);
|
||||
|
||||
g2.dispose();
|
||||
}
|
||||
|
||||
private void drawGallows(Graphics2D g2) {
|
||||
// Base and vertical post
|
||||
g2.drawLine(50, 350, 200, 350);
|
||||
g2.drawLine(100, 350, 100, 50);
|
||||
// Horizontal beam and rope
|
||||
g2.drawLine(100, 50, 250, 50);
|
||||
g2.drawLine(250, 50, 250, 100);
|
||||
// Diagonal support
|
||||
g2.drawLine(100, 100, 180, 50);
|
||||
}
|
||||
|
||||
private void drawHangman(Graphics2D g2) {
|
||||
int headX = 225, headY = 100, headDiam = 50;
|
||||
int bodyX = headX + headDiam / 2, bodyYStart = headY + headDiam, bodyYEnd = bodyYStart + 100;
|
||||
int armLength = 60;
|
||||
int legLength = 70;
|
||||
|
||||
if (step >= 1) g2.drawOval(headX, headY, headDiam, headDiam); // head
|
||||
if (step >= 2) g2.drawLine(bodyX, bodyYStart, bodyX, bodyYEnd); // body
|
||||
if (step >= 3) g2.drawLine(bodyX, bodyYStart + 20, bodyX - armLength, bodyYStart + 20); // left arm
|
||||
if (step >= 4) g2.drawLine(bodyX, bodyYStart + 20, bodyX + armLength, bodyYStart + 20); // right arm
|
||||
if (step >= 5) g2.drawLine(bodyX, bodyYEnd, bodyX - 5, bodyYEnd + legLength); // left leg
|
||||
if (step >= 6) g2.drawLine(bodyX, bodyYEnd, bodyX + 5, bodyYEnd + legLength); // right leg
|
||||
|
||||
if (step == 6) drawAura(g2, headX, headY, headDiam, bodyX, bodyYStart, bodyYEnd, armLength, legLength);
|
||||
}
|
||||
|
||||
private void drawAura(Graphics2D g2, int headX, int headY, int headDiam, int bodyX, int bodyYStart, int bodyYEnd, int armLength, int legLength) {
|
||||
g2.setColor(new Color(0, 0, 255, 100));
|
||||
g2.setStroke(new BasicStroke(8, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND));
|
||||
g2.drawOval(headX, headY, headDiam, headDiam);
|
||||
g2.drawLine(bodyX, bodyYStart, bodyX, bodyYEnd);
|
||||
g2.drawLine(bodyX, bodyYStart + 20, bodyX - armLength, bodyYStart + 20);
|
||||
g2.drawLine(bodyX, bodyYStart + 20, bodyX + armLength, bodyYStart + 20);
|
||||
g2.drawLine(bodyX, bodyYEnd, bodyX - 5, bodyYEnd + legLength);
|
||||
g2.drawLine(bodyX, bodyYEnd, bodyX + 5, bodyYEnd + legLength);
|
||||
}
|
||||
|
||||
private void drawSkull(Graphics2D g2) {
|
||||
int skullX = 225, skullY = 100, skullDiam = 50;
|
||||
|
||||
// Skull
|
||||
g2.setColor(Color.BLACK);
|
||||
g2.fillOval(skullX, skullY, skullDiam, skullDiam);
|
||||
|
||||
// Eyes
|
||||
g2.setColor(Color.WHITE);
|
||||
g2.fillOval(skullX + skullDiam / 5, skullY + skullDiam / 6, skullDiam / 5, skullDiam / 5);
|
||||
g2.fillOval(skullX + 3 * skullDiam / 5, skullY + skullDiam / 6, skullDiam / 5, skullDiam / 5);
|
||||
|
||||
// Nose
|
||||
g2.fillOval(skullX + skullDiam / 2 - skullDiam / 12, skullY + skullDiam / 2 - skullDiam / 12, skullDiam / 6, skullDiam / 6);
|
||||
|
||||
// Mouth
|
||||
g2.setStroke(new BasicStroke(2));
|
||||
g2.drawLine(skullX + skullDiam / 5, skullY + 2 * skullDiam / 3,
|
||||
skullX + 4 * skullDiam / 5, skullY + 2 * skullDiam / 3);
|
||||
|
||||
// GAME OVER message
|
||||
g2.setColor(Color.RED);
|
||||
g2.setFont(new Font("Arial", Font.BOLD, 36));
|
||||
String message = "GAME OVER";
|
||||
FontMetrics fm = g2.getFontMetrics();
|
||||
int textWidth = fm.stringWidth(message);
|
||||
int xText = (getWidth() - textWidth) / 2;
|
||||
int yText = skullY - 20;
|
||||
g2.drawString(message, xText, yText);
|
||||
}
|
||||
|
||||
private void drawYouWinMessage(Graphics2D g2) {
|
||||
g2.setColor(Color.GREEN);
|
||||
g2.setFont(new Font("Arial", Font.BOLD, 36));
|
||||
String message = "YOU WIN";
|
||||
FontMetrics fm = g2.getFontMetrics();
|
||||
int textWidth = fm.stringWidth(message);
|
||||
int xText = (getWidth() - textWidth) / 2;
|
||||
int yText = 50;
|
||||
g2.drawString(message, xText, yText);
|
||||
}
|
||||
}
|
||||
25
src/fr/iut/Projet/Mouse.java
Normal file
25
src/fr/iut/Projet/Mouse.java
Normal file
@@ -0,0 +1,25 @@
|
||||
import java.awt.event.*;
|
||||
import javax.swing.SwingUtilities;
|
||||
|
||||
class Mouse extends MouseAdapter {
|
||||
private Affiche aff;
|
||||
private int step = 0; // correspond à Affiche.step
|
||||
|
||||
public Mouse(Affiche aff) {
|
||||
this.aff = aff;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mousePressed(MouseEvent e) {
|
||||
if (SwingUtilities.isRightMouseButton(e)) {
|
||||
// clic droit -> gagne
|
||||
aff.setYouWin(true);
|
||||
} else {
|
||||
// clic gauche -> incrémente étape
|
||||
if (step < 7) {
|
||||
step++;
|
||||
aff.setStep(step); // <-- utiliser setStep
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user