1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
package sma.pkg2017;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import javax.imageio.ImageIO;
import javax.swing.*;
public class Carte extends JPanel {
private int taille;
private int echelle = 4;
private int couleur_fourmi[];
private int couleur_fourmi_nour[];
private int couleur_nour[];
private int couleur_obstacle[];
private int couleur_fourmiliere[];
private int couleur_pheromone[];
private BufferedImage image = null;
private Monde monde = null;
public Carte(Monde monde) {
this.monde = monde;
this.taille = monde.taille;
couleur_fourmi = new int[echelle * echelle];
Arrays.fill(couleur_fourmi, Color.black.getRGB());
couleur_fourmi_nour = new int[echelle * echelle];
Arrays.fill(couleur_fourmi_nour, Color.red.getRGB());
couleur_nour = new int[echelle * echelle];
Arrays.fill(couleur_nour, Color.cyan.getRGB());
couleur_obstacle = new int[echelle * echelle];
Arrays.fill(couleur_obstacle, Color.DARK_GRAY.getRGB());
couleur_fourmiliere = new int[echelle * echelle * 4];
Arrays.fill(couleur_fourmiliere, Color.YELLOW.getRGB());
couleur_pheromone = new int[echelle * echelle];
setSize(echelle * taille, echelle * taille);
image = new BufferedImage(echelle * taille, echelle * taille, BufferedImage.TYPE_INT_ARGB);
}
public void miseAJour() throws IOException {
dessinCarte();
dessinPheromones();
dessinFourmis();
dessinNourriture();
dessinObstacle();
dessinFourmiliere();
repaint();
}
private void dessinCarte() throws IOException {
Graphics sol = image.getGraphics();
final BufferedImage image = ImageIO.read(new File("C:\\Users\\Admin123\\Desktop\\Naimi Projet\\projetNaimi\\ant.jpg"));
// sol.drawImage(image, 0, 0, null);
sol.drawImage(image, 0, 0, echelle * taille, echelle * taille, Color.yellow, this);
// sol.setColor(Color.WHITE);
//sol.fillRect(0, 0, echelle * taille, echelle * taille);
//sol.fillOval(0, 0, echelle * taille, echelle * taille);
}
private void dessinFourmiliere() {
if ((monde.fourmiliere.getPosition().getX() - 1 < 0) || (monde.fourmiliere.getPosition().getX() + 1 > taille) || (monde.fourmiliere.getPosition().getY() - 1 < 0) || (monde.fourmiliere.getPosition().getY() + 1 > taille)) {
image.setRGB(monde.fourmiliere.getPosition().getX() * echelle, monde.fourmiliere.getPosition().getY() * echelle, echelle, echelle, couleur_fourmiliere, 0, echelle);
} else {
image.setRGB(monde.fourmiliere.getPosition().getX() * echelle - 2, monde.fourmiliere.getPosition().getY() * echelle - 2, echelle * 2, echelle * 2, couleur_fourmiliere, 0, echelle * 2);
}
}
private void dessinFourmis() {
for (Fourmi f : monde.fourmis.values()) {
if (f.chercheFourmiliere()) {
image.setRGB(f.getPosition().getX() * echelle, f.getPosition().getY() * echelle, echelle, echelle, couleur_fourmi_nour, 0, echelle);
} else {
image.setRGB(f.getPosition().getX() * echelle, f.getPosition().getY() * echelle, echelle, echelle, couleur_fourmi, 0, echelle);
}
}
}
private void dessinNourriture() {
for (Nourriture n : monde.nourritures.values()) {
image.setRGB(n.getPosition().getX() * echelle, n.getPosition().getY() * echelle, echelle, echelle, couleur_nour, 0, echelle);
}
}
private void dessinObstacle() {
for (Obstacle o : monde.obstacles.values()) {
image.setRGB(o.getPosition().getX() * echelle, o.getPosition().getY() * echelle, echelle, echelle, couleur_obstacle, 0, echelle);
}
}
private void dessinPheromones() {
for (Pheromone p : monde.pheromones.values()) {
//C+(255-C)*(1-R) = 255 - 255R +RC = 255 - R(255-C)
Color phe = new Color((int) (255 - (p.getQuantite() / 100) * (255 - Color.BLUE.getRed())),
(int) (255 - (p.getQuantite() / 100) * (255 - Color.gray.getGreen())),
(int) (255 - (p.getQuantite() / 100) * (255 - Color.gray.getBlue())));
Arrays.fill(couleur_pheromone, phe.getRGB());
image.setRGB(p.getPosition().getX() * echelle, p.getPosition().getY() * echelle, echelle, echelle, couleur_pheromone, 0, echelle);
}
}
@Override
public void paintComponent(Graphics g) {
g.drawImage(image, 0, 0, echelle * taille, echelle * taille, this);
}
} |
Partager