You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

Game.java 2.0KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. package com.rthoni.uqac.pigeon;
  2. import javax.swing.*;
  3. import javax.swing.Timer;
  4. import java.awt.*;
  5. import java.awt.event.*;
  6. import java.util.*;
  7. import java.util.List;
  8. /**
  9. * Created by ZHAJOR on 30/10/2016.
  10. */
  11. public class Game extends JPanel implements MouseListener, ActionListener
  12. {
  13. private List<Pigeon> pigeons;
  14. private List<Food> foods;
  15. /**
  16. * Initialize the game and create some pigeons
  17. */
  18. public Game(int nb){
  19. addMouseListener(this);
  20. this.pigeons = new ArrayList<Pigeon>();
  21. this.foods = new ArrayList<Food>();
  22. for(int i = 0; i < nb; ++i){
  23. Pigeon p = new Pigeon(""+i, this);
  24. this.pigeons.add(p);
  25. p.start();
  26. }
  27. this.createTimer();
  28. this.setDoubleBuffered(false);
  29. }
  30. /**
  31. * Paint the scene
  32. * @param g The graphics
  33. */
  34. @Override
  35. public void paint(Graphics g) {
  36. Graphics2D g2d = (Graphics2D) g;
  37. g2d.setColor(Color.RED);
  38. // Draw piegons
  39. for (Pigeon pigeon : this.pigeons) {
  40. g2d.fillOval(pigeon.getX(), pigeon.getY(), 30, 30);
  41. }
  42. g2d.setColor(Color.BLUE);
  43. // Draw foods
  44. for (Food food : this.foods) {
  45. g2d.fillRect(food.getX(), food.getY(), 15, 15);
  46. }
  47. }
  48. @Override
  49. public void mouseClicked(MouseEvent e) {
  50. }
  51. @Override
  52. public void mousePressed(MouseEvent e) {
  53. this.foods.add(new Food(e.getX(), e.getY()));
  54. }
  55. @Override
  56. public void mouseReleased(MouseEvent e) {
  57. }
  58. @Override
  59. public void mouseEntered(MouseEvent e) {
  60. }
  61. @Override
  62. public void mouseExited(MouseEvent e) {
  63. }
  64. public List<Food> getFoods(){
  65. return this.foods;
  66. }
  67. public void setFoods(List<Food> foods){
  68. this.foods = foods;
  69. }
  70. private void createTimer(){
  71. new Timer(50, this).start();
  72. }
  73. @Override
  74. public void actionPerformed(ActionEvent e) {
  75. repaint();
  76. }
  77. }