Переглянути джерело

synchronized and README

master
Pierre-Antoine 'ZHAJOR' Tible 8 роки тому
джерело
коміт
7ae504a18e

+ 12
- 0
README Переглянути файл

@@ -0,0 +1,12 @@
1
+Membres :
2
+Antoine Cormery
3
+Robin Thoni
4
+Pierre-Antoine Tible
5
+
6
+Instructions:
7
+1/ Mettre le nombre de piegons désirés dans la classe Main, par défaut 10
8
+2/ Compiler
9
+3/ Lancer le programme
10
+4/ Cliquer pour ajouter de la nourriture. Il est possible d'ajouter plusieurs nourritures en même temps.
11
+Les pigeons vont vers celle la plus proche d'eux.
12
+Les piegons se déplacent également de temps en temps de manière aléatoire.

+ 7
- 6
src/com/rthoni/uqac/pigeon/Game.java Переглянути файл

@@ -29,7 +29,6 @@ public class Game extends JPanel implements MouseListener, ActionListener
29 29
             p.start();
30 30
         }
31 31
         this.createTimer();
32
-        this.setDoubleBuffered(false);
33 32
     }
34 33
 
35 34
     /**
@@ -46,8 +45,10 @@ public class Game extends JPanel implements MouseListener, ActionListener
46 45
         }
47 46
         g2d.setColor(Color.BLUE);
48 47
         // Draw foods
49
-        for (Food food : this.foods) {
50
-            g2d.fillRect(food.getX(), food.getY(), 15, 15);
48
+        synchronized (this) {
49
+            for (Food food : this.foods) {
50
+                g2d.fillRect(food.getX(), food.getY(), 15, 15);
51
+            }
51 52
         }
52 53
     }
53 54
 
@@ -57,7 +58,7 @@ public class Game extends JPanel implements MouseListener, ActionListener
57 58
     }
58 59
 
59 60
     @Override
60
-    public void mousePressed(MouseEvent e) {
61
+    public synchronized void mousePressed(MouseEvent e) {
61 62
         this.foods.add(new Food(e.getX(), e.getY()));
62 63
     }
63 64
 
@@ -80,8 +81,8 @@ public class Game extends JPanel implements MouseListener, ActionListener
80 81
         return this.foods;
81 82
     }
82 83
 
83
-    public void setFoods(List<Food> foods){
84
-        this.foods = foods;
84
+    public synchronized void removeFood(Food food){
85
+        this.foods.remove(food);
85 86
     }
86 87
 
87 88
     private void createTimer(){

+ 1
- 0
src/com/rthoni/uqac/pigeon/Main.java Переглянути файл

@@ -17,6 +17,7 @@ public class Main {
17 17
         frame.setSize(800, 800);
18 18
         frame.setResizable(false);
19 19
         frame.setVisible(true);
20
+        // 10 pigeons
20 21
         frame.add(new Game(10));
21 22
     }
22 23
 

+ 1
- 2
src/com/rthoni/uqac/pigeon/Pigeon.java Переглянути файл

@@ -52,8 +52,7 @@ public class Pigeon implements Runnable{
52 52
                 if (distance != -1 && distance <= Pigeon.speed) {
53 53
                     this.x = best.getX();
54 54
                     this.y = best.getY();
55
-                    foods.remove(best);
56
-                    game.setFoods(foods);
55
+                    game.removeFood(best);
57 56
                     System.out.print("Eat by " + this.name + "\n");
58 57
                 }
59 58
                 else if (distance != -1){

Завантаження…
Відмінити
Зберегти