java贪吃蛇代码eclipse
时间: 2023-07-02 21:20:04 浏览: 53
以下是一个简单的Java贪吃蛇游戏的代码,可以在Eclipse中运行。
SnakeGame.java
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class SnakeGame extends JPanel implements Runnable, KeyListener {
private static final long serialVersionUID = 1L;
private static final int WIDTH = 500;
private static final int HEIGHT = 500;
private Thread thread;
private boolean running;
private boolean right = true, left = false, up = false, down = false;
private BodyPart b;
private ArrayList<BodyPart> snake;
private Apple apple;
private ArrayList<Apple> apples;
private Random r;
public SnakeGame() {
setFocusable(true);
addKeyListener(this);
setPreferredSize(new Dimension(WIDTH, HEIGHT));
r = new Random();
snake = new ArrayList<BodyPart>();
apples = new ArrayList<Apple>();
start();
}
public void start() {
running = true;
thread = new Thread(this);
thread.start();
}
public void stop() {
running = false;
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void tick() {
if (snake.size() == 0) {
b = new BodyPart(0, 0, 10);
snake.add(b);
}
if (apples.size() == 0) {
int x = r.nextInt(49);
int y = r.nextInt(49);
apple = new Apple(x, y, 10);
apples.add(apple);
}
for (int i = 0; i < apples.size(); i++) {
if (snake.get(0).getX() == apples.get(i).getX() && snake.get(0).getY() == apples.get(i).getY()) {
snake.add(new BodyPart(snake.get(snake.size() - 1).getX(), snake.get(snake.size() - 1).getY(), 10));
apples.remove(i);
}
}
for (int i = 1; i < snake.size(); i++) {
if (snake.get(0).getX() == snake.get(i).getX() && snake.get(0).getY() == snake.get(i).getY()) {
stop();
}
}
if (snake.get(0).getX() < 0) {
stop();
}
if (snake.get(0).getX() > 49) {
stop();
}
if (snake.get(0).getY() < 0) {
stop();
}
if (snake.get(0).getY() > 49) {
stop();
}
if (!running) {
return;
}
for (int i = snake.size() - 1; i > 0; i--) {
snake.get(i).setX(snake.get(i - 1).getX());
snake.get(i).setY(snake.get(i - 1).getY());
}
if (right) {
snake.get(0).setX(snake.get(0).getX() + 10);
}
if (left) {
snake.get(0).setX(snake.get(0).getX() - 10);
}
if (up) {
snake.get(0).setY(snake.get(0).getY() - 10);
}
if (down) {
snake.get(0).setY(snake.get(0).getY() + 10);
}
}
public void paint(Graphics g) {
g.clearRect(0, 0, WIDTH, HEIGHT);
g.setColor(Color.BLACK);
for (int i = 0; i < WIDTH / 10; i++) {
g.drawLine(i * 10, 0, i * 10, HEIGHT);
}
for (int i = 0; i < HEIGHT / 10; i++) {
g.drawLine(0, i * 10, WIDTH, i * 10);
}
for (int i = 0; i < snake.size(); i++) {
snake.get(i).draw(g);
}
for (int i = 0; i < apples.size(); i++) {
apples.get(i).draw(g);
}
}
@Override
public void run() {
while (running) {
tick();
repaint();
}
}
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_RIGHT && !left) {
up = false;
down = false;
right = true;
}
if (key == KeyEvent.VK_LEFT && !right) {
up = false;
down = false;
left = true;
}
if (key == KeyEvent.VK_UP && !down) {
left = false;
right = false;
up = true;
}
if (key == KeyEvent.VK_DOWN && !up) {
left = false;
right = false;
down = true;
}
}
@Override
public void keyReleased(KeyEvent arg0) {
}
@Override
public void keyTyped(KeyEvent arg0) {
}
public static void main(String[] args) {
JFrame frame = new JFrame("Snake Game");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.add(new SnakeGame());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
BodyPart.java
```java
import java.awt.Color;
import java.awt.Graphics;
public class BodyPart {
private int x;
private int y;
private int width;
private int height;
public BodyPart(int x, int y, int size) {
this.x = x;
this.y = y;
width = size;
height = size;
}
public void draw(Graphics g) {
g.setColor(Color.GREEN);
g.fillRect(x * width, y * height, width, height);
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
Apple.java
```java
import java.awt.Color;
import java.awt.Graphics;
public class Apple {
private int x;
private int y;
private int size;
public Apple(int x, int y, int size) {
this.x = x;
this.y = y;
this.size = size;
}
public void draw(Graphics g) {
g.setColor(Color.RED);
g.fillRect(x * size, y * size, size, size);
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}
```
这是一个基本的贪吃蛇游戏,你可以在Eclipse中运行它。