以下是一个简单的贪吃蛇代码示例,使用Java编写:

import java.awt.Color;
import java.awt.Dimension;
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;
    public static final int WIDTH = 500, HEIGHT = 500;
    private Thread thread;
    private boolean running = false;
    private boolean right = true, left = false, up = false, down = false;
    private BodyPart b;
    private ArrayList<BodyPart> snake;
    private int xCoor = 10, yCoor = 10, size = 5;
    private int ticks = 0;
    private Point apple;
    private Random r;
    public SnakeGame() {
        setFocusable(true);
        setPreferredSize(new Dimension(WIDTH, HEIGHT));
        addKeyListener(this);
        snake = new ArrayList<BodyPart>();
        r = new Random();
        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(xCoor, yCoor, 10);
            snake.add(b);
        }
        ticks++;
        if (ticks > 250000) {
            if (right)
                xCoor++;
            if (left)
                xCoor--;
            if (up)
                yCoor--;
            if (down)
                yCoor++;
            ticks = 0;
            b = new BodyPart(xCoor, yCoor, 10);
            snake.add(b);
            if (snake.size() > size) {
                snake.remove(0);
            }
        }
        if (apple != null) {
            if (xCoor == apple.x && yCoor == apple.y) {
                size++;
                apple.setLocation(r.nextInt(49), r.nextInt(49));
            }
        } else {
            apple = new Point(r.nextInt(49), r.nextInt(49));
        }
        for (int i = 0; i < snake.size(); i++) {
            if (xCoor == snake.get(i).getxCoor() && yCoor == snake.get(i).getyCoor()) {
                if (i != snake.size() - 1) {
                    stop();
                }
            }
        }
        if (xCoor < 0 || xCoor > 49 || yCoor < 0 || yCoor > 49) {
            stop();
        }
    }
    public void paint(Graphics g) {
        g.clearRect(0, 0, WIDTH, HEIGHT);
        g.setColor(Color.BLACK);
        g.fillRect(0, 0, WIDTH, HEIGHT);
        g.setColor(Color.WHITE);
        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);
        }
        g.setColor(Color.RED);
        g.fillRect(apple.x * 10, apple.y * 10, 10, 10);
    }
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        SnakeGame snakeGame = new SnakeGame();
        frame.add(snakeGame);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("Snake Game");
        frame.pack();
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
    }
    public void run() {
        while (running) {
            tick();
            repaint();
        }
    }
    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;
        }
    }
    public void keyReleased(KeyEvent e) {
    }
    public void keyTyped(KeyEvent e) {
    }
}
class BodyPart {
    private int xCoor, yCoor, width, height;
    public BodyPart(int xCoor, int yCoor, int tileSize) {
        this.xCoor = xCoor;
        this.yCoor = yCoor;
        width = tileSize;
        height = tileSize;
    }
    public void tick() {
    }
    public void draw(Graphics g) {
        g.setColor(Color.GREEN);
        g.fillRect(xCoor * width, yCoor * height, width, height);
    }
    public int getxCoor() {
        return xCoor;
    }
    public void setxCoor(int xCoor) {
        this.xCoor = xCoor;
    }
    public int getyCoor() {
        return yCoor;
    }
    public void setyCoor(int yCoor) {
        this.yCoor = yCoor;
    }
}

该代码使用Java Swing库创建一个游戏窗口,其中包含了一个贪吃蛇游戏。游戏窗口可以通过键盘上的方向键来控制贪吃蛇的移动方向,并在窗口内随机生成苹果,当贪吃蛇吃到苹果时,贪吃蛇的长度会增加。游戏窗口还包含了一个计分器,用于显示贪吃蛇的长度。

贪吃蛇代码java

原文地址: https://www.cveoy.top/t/topic/bKw1 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录