resizable
dddduser_9487184
java
2 years ago
3.8 kB
5
Indexable
package it.unibo.game.app.view.jswing.impleentation; import java.util.Map; import java.util.Random; import javax.swing.*; import it.unibo.game.Pair; import it.unibo.game.app.model.ball.Ball; import it.unibo.game.app.view.jswing.api.GameView; import it.unibo.game.app.view.jswing.api.UIController; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; public class GameViewImpl extends JPanel implements KeyListener, ActionListener, GameView { private UIController observer; private boolean play = true; public GameViewImpl(UIController control) { setFocusable(true); addKeyListener(this); setLayout(new FlowLayout()); setFocusTraversalKeysEnabled(false); this.observer = control; } @Override public void paintComponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; // Determina la dimensione del pannello int panelWidth = getWidth(); int panelHeight = getHeight(); g.setColor(Color.WHITE); g.fillRect(0, 0, panelWidth, panelHeight); // delta di // getdimension torna le dimensioni del model double deltaH = ( observer.getFrameDim().getX() / observer.getDimension().getX()); double deltaW = ( observer.getFrameDim().getY() / observer.getDimension().getY()); observer.getList().entrySet().stream().forEach(x -> { g2d.setColor(Color.RED); // g2d.draw(new Rectangle2D.Double(x.getKey().getX(),x.getKey().getY(), // observer.getDimensionBrick().getY(), observer.getDimensionBrick().getX())); var rec = new Rectangle2D.Double(x.getKey().getX() * deltaH, x.getKey().getY() * deltaW, observer.getDimensionBrick().getY() * deltaW, observer.getDimensionBrick().getX() * deltaH); g2d.fill(rec); g2d.setColor(Color.BLACK); g2d.draw(rec); }); g2d.setColor(Color.GREEN); g2d.fill(new Ellipse2D.Double(observer.getBall().getX() * deltaH, observer.getBall().getY() * deltaW, observer.getRBall() * deltaW, observer.getRBall() * deltaH)); g2d.setColor(Color.BLACK); g2d.fill(new Rectangle2D.Double(observer.getPadPos().getX() * deltaW, observer.getPadPos().getY() * deltaH, observer.getPadWight() * deltaW, observer.getPadHeight() * deltaH)); g2d.dispose(); } @Override public void actionPerformed(ActionEvent arg0) { repaint(); } @Override public void keyPressed(KeyEvent arg0) { if (arg0.getKeyCode() == KeyEvent.VK_RIGHT) { observer.movePadRight(); } if (arg0.getKeyCode() == KeyEvent.VK_LEFT) { observer.movePadLeft(); } } @Override public void keyReleased(KeyEvent arg0) { // TODO Auto-generated method stub // throw new UnsupportedOperationException("Unimplemented method // 'keyReleased'"); } @Override public void keyTyped(KeyEvent arg0) { // TODO Auto-generated method stub throw new UnsupportedOperationException("Unimplemented method 'keyTyped'"); } @Override public void drawBall(Pair<Integer, Integer> pos, Integer radius, Graphics g) { g.setColor(Color.WHITE); g.drawOval(pos.getX() - radius, pos.getY() - radius, radius * 2, radius * 2); } @Override public void drawPad(Pair<Integer, Integer> pos, Pair<Integer, Integer> dimPad, Graphics g) { g.setColor(Color.GRAY); g.fillRect(pos.getX(), pos.getY(), dimPad.getX(), dimPad.getY()); g.drawRect(pos.getX(), pos.getY(), dimPad.getX(), dimPad.getY()); } }
Editor is loading...