package com.rthoni.uqac.pigeon; import javax.swing.*; import javax.swing.Timer; import java.awt.*; import java.awt.event.*; import java.util.*; import java.util.List; /** * Created by ZHAJOR on 30/10/2016. */ public class Game extends JPanel implements MouseListener, ActionListener { private List pigeons; private List foods; /** * Initialize the game and create some pigeons */ public Game(int nb){ addMouseListener(this); this.pigeons = new ArrayList(); this.foods = new ArrayList(); for(int i = 0; i < nb; ++i){ Pigeon p = new Pigeon(""+i, this); this.pigeons.add(p); p.start(); } this.createTimer(); } /** * Paint the scene * @param g The graphics */ @Override public void paint(Graphics g) { Graphics2D g2d = (Graphics2D) g; g2d.setColor(Color.RED); // Draw piegons for (Pigeon pigeon : this.pigeons) { g2d.fillOval(pigeon.getX(), pigeon.getY(), 30, 30); } g2d.setColor(Color.BLUE); // Draw foods synchronized (this) { for (Food food : this.foods) { g2d.fillRect(food.getX(), food.getY(), 15, 15); } } } @Override public void mouseClicked(MouseEvent e) { } @Override public synchronized void mousePressed(MouseEvent e) { this.foods.add(new Food(e.getX(), e.getY())); } @Override public void mouseReleased(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } public List getFoods(){ return this.foods; } public synchronized void removeFood(Food food){ this.foods.remove(food); } private void createTimer(){ new Timer(50, this).start(); } @Override public void actionPerformed(ActionEvent e) { repaint(); } }