PlayState.java 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package model.state;
  2. import java.awt.Color;
  3. import java.awt.Graphics2D;
  4. import java.awt.event.KeyEvent;
  5. import java.util.ArrayList;
  6. import java.util.Iterator;
  7. import main.Window;
  8. import model.GameStateManager;
  9. import model.objects.Ball;
  10. import model.objects.Player;
  11. import model.objects.ShootingLine;
  12. import resources.image.Images;
  13. import resources.image.Images.ImageType;
  14. public class PlayState extends State{
  15. Player player;
  16. ArrayList<ShootingLine> lines;
  17. ArrayList<Ball> balls;
  18. public PlayState(GameStateManager gsm) {
  19. super("play", gsm);
  20. player = new Player(Images.getImage(ImageType.PLAYER1), 40, 550);
  21. lines = new ArrayList<ShootingLine>();
  22. balls = new ArrayList<Ball>();
  23. balls.add(new Ball(5, 10, Color.red, 50, 50));
  24. }
  25. /* INIT AND EXIT */
  26. @Override
  27. public void init() {
  28. System.out.println("Starting play state");
  29. }
  30. @Override
  31. public void exit()
  32. {
  33. System.out.println("Stopping play state");
  34. }
  35. /* UPDATE */
  36. @Override
  37. public void update() {
  38. if(player.getX() + 30 + player.getWidth() >= Window.WIDTH)
  39. {
  40. player.setX(Window.WIDTH - 30 - player.getWidth()-1);
  41. }
  42. if(player.getX() - 30 <= 0)
  43. {
  44. player.setX(32);
  45. }
  46. player.update();
  47. Iterator<ShootingLine> i = lines.iterator();
  48. while(i.hasNext()){
  49. ShootingLine l = i.next();
  50. if(l.getMaxHeight() < 0){
  51. i.remove();
  52. }else{
  53. l.setLength(l.getLength() +1);
  54. }
  55. }
  56. }
  57. @Override
  58. public void paint(Graphics2D g2d) {
  59. g2d.drawString("Press ESC to stop the game", Window.WIDTH/2, Window.HEIGHT/2);
  60. g2d.drawImage(Images.getImage(ImageType.BACKGROUND),null,0,0);
  61. for(ShootingLine l:lines){
  62. l.paint(g2d);
  63. }
  64. for(Ball b: balls){
  65. b.paint(g2d);
  66. }
  67. player.paint(g2d);
  68. }
  69. /* EVENTS */
  70. @Override
  71. public void keyPressed(KeyEvent e) {
  72. switch(e.getKeyCode())
  73. {
  74. case KeyEvent.VK_RIGHT:
  75. player.setX(player.getX()+10);
  76. break;
  77. case KeyEvent.VK_LEFT:
  78. player.setX(player.getX()-10);
  79. break;
  80. case KeyEvent.VK_SPACE:
  81. if(lines.size() == 0){
  82. lines.add(new ShootingLine((int)player.getX()+player.getWidth()/2, 600));
  83. }
  84. }
  85. }
  86. @Override
  87. public void keyReleased(KeyEvent e) {
  88. switch(e.getKeyCode())
  89. {
  90. case KeyEvent.VK_ESCAPE:
  91. gsm.setState("menu");
  92. break;
  93. }
  94. }
  95. @Override
  96. public void keyTyped(KeyEvent e) {}
  97. }