package model.state; import java.awt.Color; import java.awt.Graphics2D; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.Iterator; import main.Window; import model.GameStateManager; import model.objects.Ball; import model.objects.Player; import model.objects.ShootingLine; import resources.image.Images; import resources.image.Images.ImageType; public class PlayState extends State{ Player player; ArrayList lines; ArrayList balls; public PlayState(GameStateManager gsm) { super("play", gsm); player = new Player(Images.getImage(ImageType.PLAYER1), 40, 550); lines = new ArrayList(); balls = new ArrayList(); balls.add(new Ball(5, 10, Color.red, 50, 50)); } /* INIT AND EXIT */ @Override public void init() { System.out.println("Starting play state"); } @Override public void exit() { System.out.println("Stopping play state"); } /* UPDATE */ @Override public void update() { if(player.getX() + 30 + player.getWidth() >= Window.WIDTH) { player.setX(Window.WIDTH - 30 - player.getWidth()-1); } if(player.getX() - 30 <= 0) { player.setX(32); } player.update(); Iterator i = lines.iterator(); while(i.hasNext()){ ShootingLine l = i.next(); if(l.getMaxHeight() < 0){ i.remove(); }else{ l.setLength(l.getLength() +1); } } } @Override public void paint(Graphics2D g2d) { g2d.drawString("Press ESC to stop the game", Window.WIDTH/2, Window.HEIGHT/2); g2d.drawImage(Images.getImage(ImageType.BACKGROUND),null,0,0); for(ShootingLine l:lines){ l.paint(g2d); } for(Ball b: balls){ b.paint(g2d); } player.paint(g2d); } /* EVENTS */ @Override public void keyPressed(KeyEvent e) { switch(e.getKeyCode()) { case KeyEvent.VK_RIGHT: player.setX(player.getX()+10); break; case KeyEvent.VK_LEFT: player.setX(player.getX()-10); break; case KeyEvent.VK_SPACE: if(lines.size() == 0){ lines.add(new ShootingLine((int)player.getX()+player.getWidth()/2, 600)); } } } @Override public void keyReleased(KeyEvent e) { switch(e.getKeyCode()) { case KeyEvent.VK_ESCAPE: gsm.setState("menu"); break; } } @Override public void keyTyped(KeyEvent e) {} }