一名后端程序员现在需要你写代码具体写代码内容如下用java写个贪吃蛇 。要求整体内容的风格为:尽量简单直接一点
以下是一个简单的Java贪吃蛇游戏的代码示例:
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class SnakeGame extends JFrame implements ActionListener {
private Random rand = new Random();
private Timer timer;
private JPanel board;
private JLabel scoreLabel;
private int score;
private LinkedList<Point> snake;
private Point food;
private int direction;
public SnakeGame() {
setTitle("Snake Game");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(320, 320);
setResizable(false);
board = new JPanel();
board.setLayout(new GridLayout(20, 20));
for (int i = 0; i < 400; i++) {
board.add(new JLabel());
}
getContentPane().add(board, BorderLayout.CENTER);
scoreLabel = new JLabel("Score: 0");
getContentPane().add(scoreLabel, BorderLayout.SOUTH);
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
if (code == KeyEvent.VK_UP && direction != 2) {
direction = 0;
} else if (code == KeyEvent.VK_RIGHT && direction != 3) {
direction = 1;
} else if (code == KeyEvent.VK_DOWN && direction != 0) {
direction = 2;
} else if (code == KeyEvent.VK_LEFT && direction != 1) {
direction = 3;
}
}
});
timer = new Timer(200, this);
timer.start();
snake = new LinkedList<>();
snake.add(new Point(10, 10));
snake.add(new Point(10, 9));
snake.add(new Point(10, 8));
food = new Point(rand.nextInt(20), rand.nextInt(20));
}
public void actionPerformed(ActionEvent e) {
Point head = snake.getFirst();
Point newHead = new Point(head.x, head.y);
if (direction == 0) {
newHead.y--;
} else if (direction == 1) {
newHead.x++;
} else if (direction == 2) {
newHead.y++;
} else if (direction == 3) {
newHead.x--;
}
if (newHead.x < 0 || newHead.x >= 20 || newHead.y < 0 || newHead.y >= 20) {
gameOver();
return;
}
if (snake.contains(newHead)) {
gameOver();
return;
}
snake.addFirst(newHead);
if (newHead.equals(food)) {
score++;
scoreLabel.setText("Score: " + score);
food.setLocation(rand.nextInt(20), rand.nextInt(20));
} else {
snake.removeLast();
}
updateBoard();
}
private void updateBoard() {
for (int i = 0; i < 400; i++) {
JLabel label = (JLabel) board.getComponent(i);
label.setBackground(null);
}
for (Point p : snake) {
int index = p.y * 20 + p.x;
JLabel label = (JLabel) board.getComponent(index);
label.setBackground(Color.green);
}
int index = food.y * 20 + food.x;
JLabel label = (JLabel) board.getComponent(index);
label.setBackground(Color.red);
}
private void gameOver() {
timer.stop();
JOptionPane.showMessageDialog(this, "Game Over! Your score is " + score);
}
public static void main(String[] args) {
new SnakeGame().setVisible(true);
}
}
这个代码使用Swing编写了一个简单的GUI界面,包含一个20x20的方格板作为游戏区域,一个得分标签,以及一个定时器用于控制游戏的进行。游戏中的蛇由一个LinkedList
原文地址: https://www.cveoy.top/t/topic/8yv 著作权归作者所有。请勿转载和采集!