Elagym/Snake

View.java

Opened this issue · 0 comments

package ihm.game;

import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;

import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

//@author Vincent Verbeet
public class View extends JPanel implements KeyListener, ChangeListener {

private static final long serialVersionUID = 1L;
private Model model;

View(final Model m) {
this.model = m;
addKeyListener(this);
setFocusable(true);
setFocusTraversalKeysEnabled(true);
}

protected final void paintComponent(final Graphics g) {
super.paintComponent(g);
drawSnake(g);
if (model.getFoodPos() != null) {
    drawFood(g);
}

}

private void drawSnake(final Graphics g) {
g.setColor(model.getSnakeColor());

ArrayList<Pos> tmp = model.getSnakePos();
for (int i = 0; i < tmp.size(); ++i) {
    g.fillRect(tmp.get(i).getX(), tmp.get(i).getY(), model.getPix(),
        model.getPix());
}

}

private void drawFood(final Graphics g) {
g.setColor(model.getFoodColor());

Pos tmp = model.getFoodPos();
g.fillRect(tmp.getX(), tmp.getY(), model.getPix(), model.getPix());

}

@Override
public final void stateChanged(final ChangeEvent e) {
repaint();

}

@Override
public final void keyPressed(final KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_UP) {
    this.model.up();
} else if (e.getKeyCode() == KeyEvent.VK_DOWN) {
    this.model.down();
} else if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
    this.model.right();
} else if (e.getKeyCode() == KeyEvent.VK_LEFT) {
    this.model.left();
}

}

@Override
public final void keyReleased(final KeyEvent e) {
// TODO Auto-generated method stub

}

@Override
public final void keyTyped(final KeyEvent e) {
// TODO Auto-generated method stub

}

}