贪吃蛇代码块:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Snake extends JPanel {
private static final long serialVersionUID = 1L;
private int row = 25;
private int col = 25;
private int size = 20;
private int snakeX;
private int snakeY;
private String fangxiang = "R";
private int sizetmp = 4;
private int[][] snake = new int[row * col][2];
private int foodX;
private int foodY;
private int score = 0;
public Snake() {
initGame();
}
public void initGame() {
snake[0][0] = 6;
snake[0][1] = 6;
snake[1][0] = 5;
snake[1][1] = 6;
snake[2][0] = 4;
snake[2][1] = 6;
snake[3][0] = 3;
snake[3][1] = 6;
snakeX = snake[0][0] * size;
snakeY = snake[0][1] * size;
foodX = (int) (Math.random() * row) * size;
foodY = (int) (Math.random() * col) * size;
}
@Override
protected void paintComponent(Graphics g) {
g.fillRect(0, 0, size * row, size * col);
g.setColor(Color.BLACK);
for (int i = 0; i < sizetmp; i++) {
g.fill3DRect(snake[i][0] * size, snake[i][1] * size, size - 1,
size - 1, true);
}
switch (fangxiang) {
case "U":
g.fill3DRect(snakeX, snakeY - size, size - 1, size - 1, true);
break;
case "D":
g.fill3DRect(snakeX, snakeY + size, size - 1, size - 1, true);
break;
case "L":
g.fill3DRect(snakeX - size, snakeY, size - 1, size - 1, true);
break;
case "R":
g.fill3DRect(snakeX + size, snakeY, size - 1, size - 1, true);
break;
default:
break;
}
g.fillOval(foodX, foodY, size, size);
}
public void move() {
switch (fangxiang) {
case "U":
snakeY -= size;
break;
case "D":
snakeY += size;
break;
case "L":
snakeX -= size;
break;
case "R":
snakeX += size;
break;
default:
break;
}
sessionOver();
if (snakeX == foodX && snakeY == foodY) {
sizetmp++;
score += 10;
foodX = (int) (Math.random() * row) * size;
foodY = (int) (Math.random() * col) * size;
}
snake[0][0] = snakeX / size;
snake[0][1] = snakeY / size;
for (int i = sizetmp - 1; i > 0; i--) {
snake[i][0] = snake[i - 1][0];
snake[i][1] = snake[i - 1][1];
}
}
public void sessionOver() {
if (snakeX < 0 || snakeX > row * size - size || snakeY < 0
|| snakeY > col * size - size) {
initGame();
sizetmp = 4;
}
for (int i = 4; i < sizetmp; i++) {
if (snakeX == snake[i][0] * size
&& snakeY == snake[i][1] * size) {
initGame();
sizetmp = 4;
}
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("贪吃蛇");
Snake snake = new Snake();
frame.add(snake);
frame.setSize(500, 500);
frame.setResizable(false);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.addKeyListener(new KeyListener() {
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
public void keyPressed(KeyEvent e) {
int keycodes = e.getKeyCode();
switch (keycodes) {
case KeyEvent.VK_UP:
snake.fangxiang = "U";
break;
case KeyEvent.VK_DOWN:
snake.fangxiang = "D";
break;
case KeyEvent.VK_LEFT:
snake.fangxiang = "L";
break;
case KeyEvent.VK_RIGHT:
snake.fangxiang = "R";
break;
default:
break;
}
}
});
while (true) {
try {
snake.move();
Thread.sleep(200);
snake.repaint();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具