Snake Game Java
Snake Game Java
*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.LinkedList;
import java.util.Random;
public SnakeGame() {
setBackground(Color.BLACK);
setFocusable(true);
setPreferredSize(new Dimension(WIDTH, HEIGHT));
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
switch (e.getKeyCode()) {
case KeyEvent.VK_UP:
if (direction != 'D') direction = 'U';
break;
case KeyEvent.VK_DOWN:
if (direction != 'U') direction = 'D';
break;
case KeyEvent.VK_LEFT:
if (direction != 'R') direction = 'L';
break;
case KeyEvent.VK_RIGHT:
if (direction != 'L') direction = 'R';
break;
}
}
});
initGame();
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (running) {
g.setColor(Color.RED);
g.fillRect(food.x * DOT_SIZE, food.y * DOT_SIZE, DOT_SIZE, DOT_SIZE);
g.setColor(Color.GREEN);
for (Point p : snake) {
g.fillRect(p.x * DOT_SIZE, p.y * DOT_SIZE, DOT_SIZE, DOT_SIZE);
}
} else {
showGameOver(g);
}
Toolkit.getDefaultToolkit().sync();
}
switch (direction) {
case 'U': newHead.y--; break;
case 'D': newHead.y++; break;
case 'L': newHead.x--; break;
case 'R': newHead.x++; break;
}
if (newHead.equals(food)) {
snake.addFirst(newHead);
spawnFood();
} else {
snake.addFirst(newHead);
snake.removeLast();
}
@Override
public void actionPerformed(ActionEvent e) {
if (running) {
move();
}
repaint();
}