java贪吃蛇代码

admin 34 0

贪吃蛇是一个经典的游戏,下面是一个简单的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() {