贪吃蛇是一个经典的游戏,下面是一个简单的Java版本的贪吃蛇游戏代码,这个代码使用了Java Swing库来创建图形用户界面。
这个代码只是一个基本的实现,没有包含游戏结束的逻辑,也没有包含得分系统。
```java
import javax.swing.*;
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;
public class SnakeGame extends JFrame {
private int gridSize = 20;
private int cellSize = 20;
private int width = 800;
private int height = 600;
private int x = 0;
private int y = 0;
private int dx = 10;
private int dy = 0;
private LinkedList snake;
private Point fruit;
public SnakeGame() {
setTitle("Snake Game");
setSize(width, height);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
setLocationRelativeTo(null);
snake = new LinkedList();
snake.add(new Point(x, y));
spawnFruit();
addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_LEFT && dx == 0) {
dx = -cellSize;
dy = 0;
} else if (key == KeyEvent.VK_RIGHT && dx == 0) {
dx = cellSize;
} else if (key == KeyEvent.VK_UP && dy == 0) {
dx = 0;
dy = -cellSize;
} else if (key == KeyEvent.VK_DOWN && dy == 0) {
dy = cellSize;
}
}
});
Timer timer = new Timer(100, new ActionListener() {
public void actionPerformed(ActionEvent e) {
moveSnake();
checkCollisions();
repaint();
timer.start();
}
private void spawnFruit() {
int maxX = (width - cellSize) / gridSize;
int maxY = (height - cellSize) / gridSize;
int x = (int) (Math.random() * maxX);
int y = (int) (Math.random() * maxY);
fruit = new Point(x * gridSize, y * gridSize);
private void moveSnake() {
Point head = snake.getFirst();
head.translate(dx, dy);
snake.addFirst(head);
if (head.x == fruit.x && head.y == fruit.y) {
spawnFruit();
} else {
snake.removeLast();
}
private void checkCollisions() {
if (head.x < 0 || head.x >= width || head.y < 0 || head.y >= height) {
System.out.println("Game Over!");
System.exit(0);
for (int i = 1; i < snake.size(); i++) {
Point body = snake.get(i);
if (head.x == body.x && head.y == body.y) {
System.out.println("Game Over!");
System.exit(0);
@Override
public void paint(Graphics g) {
super.paint(g);
g.setColor(Color.BLACK);
g.fillRect(0, 0, width, height);
g.setColor(Color.GREEN);
for (Point p : snake) {
g.fillRect(p.x, p.y, cellSize, cellSize);
g.setColor(Color.RED);
g.fillRect(fruit.x, fruit.y, cellSize, cellSize);
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {