澪喵~主人好的澪会尽快为您完成贪吃蛇的代码。请告诉澪您的编程语言和具体要求澪会根据您的需求进行编写。 2404686983:澪用Java写一个贪吃蛇代码
好的,主人。以下是澪为您编写的Java贪吃蛇代码:
import java.awt.; import java.awt.event.; import javax.swing.; import java.util.;
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 int[][] grid;
private ArrayList
public SnakeGame() {
setTitle("贪吃蛇");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
board = new JPanel();
board.setLayout(new GridLayout(20, 20));
getContentPane().add(board, BorderLayout.CENTER);
scoreLabel = new JLabel("得分: 0");
getContentPane().add(scoreLabel, BorderLayout.NORTH);
grid = new int[20][20];
snake = new ArrayList<Point>();
snake.add(new Point(10, 10));
grid[10][10] = 1;
food = new Point(rand.nextInt(20), rand.nextInt(20));
grid[food.x][food.y] = 2;
timer = new Timer(100, this);
timer.start();
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
int code = e.getKeyCode();
if (code == KeyEvent.VK_UP && snake.get(0).y > 0 && grid[snake.get(0).x][snake.get(0).y-1] != 1) {
snake.add(0, new Point(snake.get(0).x, snake.get(0).y-1));
} else if (code == KeyEvent.VK_DOWN && snake.get(0).y < 19 && grid[snake.get(0).x][snake.get(0).y+1] != 1) {
snake.add(0, new Point(snake.get(0).x, snake.get(0).y+1));
} else if (code == KeyEvent.VK_LEFT && snake.get(0).x > 0 && grid[snake.get(0).x-1][snake.get(0).y] != 1) {
snake.add(0, new Point(snake.get(0).x-1, snake.get(0).y));
} else if (code == KeyEvent.VK_RIGHT && snake.get(0).x < 19 && grid[snake.get(0).x+1][snake.get(0).y] != 1) {
snake.add(0, new Point(snake.get(0).x+1, snake.get(0).y));
}
}
});
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if (e.getSource() == timer) {
int x = snake.get(0).x;
int y = snake.get(0).y;
if (x == food.x && y == food.y) {
score += 10;
scoreLabel.setText("得分: " + score);
food = new Point(rand.nextInt(20), rand.nextInt(20));
grid[food.x][food.y] = 2;
} else {
Point tail = snake.remove(snake.size()-1);
grid[tail.x][tail.y] = 0;
}
if (snake.get(0).x < 0 || snake.get(0).x >= 20 || snake.get(0).y < 0 || snake.get(0).y >= 20 || grid[snake.get(0).x][snake.get(0).y] == 1) {
timer.stop();
JOptionPane.showMessageDialog(this, "游戏结束,得分为: " + score);
} else {
grid[snake.get(0).x][snake.get(0).y] = 1;
board.repaint();
}
}
}
public void paint(Graphics g) {
super.paint(g);
for (int i = 0; i < 20; i++) {
for (int j = 0; j < 20; j++) {
if (grid[i][j] == 1) {
g.setColor(Color.GREEN);
g.fillRect(i*20, j*20, 20, 20);
} else if (grid[i][j] == 2) {
g.setColor(Color.RED);
g.fillOval(i*20, j*20, 20, 20);
}
}
}
}
public static void main(String[] args) {
new SnakeGame();
}
}
主人,以上是澪为您编写的Java贪吃蛇代码。其中,使用了Java的Swing库来实现游戏界面和交互,使用了Timer类来实现游戏的计时和更新。代码中使用了二维数组来表示游戏区域,使用ArrayList来表示蛇的身体,使用Point类来表示食物的位置。在游戏中,通过监听键盘事件来控制蛇的移动,通过计时器来更新游戏状态和界面。希望这份代码能够满足您的需求,祝您玩得愉快
原文地址: https://www.cveoy.top/t/topic/deVS 著作权归作者所有。请勿转载和采集!