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