当前位置:AIGC资讯 > AIGC > 正文

GPT和Copilot联手,AI编程进入新纪元

❤️作者主页:小虚竹

❤️作者简介:大家好,我是小虚竹。2022年度博客之星🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆

❤️技术活,该赏

❤️点赞 👍 收藏 ⭐再看,养成习惯

文末有提供贪吃蛇游戏的最终源码~

文章目录

一、Code Copilot AI编程大模型 操作指导 用Java编写一个二分查找的代码,添加中文注释。 生成一个java实战课程设计:做一个贪吃蛇游戏 升级改进 提供源码 三、感受

一、Code Copilot AI编程大模型

操作指导

ChatGPT 4o国内直接访问地址:https://share.xuzhugpt.cloud/

上plus的车

输入购买的授权码即可。
默认就是 gpt-4o大模型

探索GPT–>编程–》选择Code Copilot

开始聊天。

进入聊天界面。

用Java编写一个二分查找的代码,添加中文注释。

输入:

用Java编写一个二分查找的代码,添加中文注释。


给出了完整的Java代码类,代码中也包含了完善的注释。并给出了很清晰的解析和进一步优化建议。
把代码拷到idea里运行。验证下结果:

结果是正确的。

生成一个java实战课程设计:做一个贪吃蛇游戏

输入:

你是一位java技术专家,游戏开发高手,请用java开发一个贪吃蛇游戏,添加中文注释,有个开始按钮和暂停按钮。



给了两个类的完整代码。还给了改进建议,我们先去idea运行看看。
把代码复制进来。

运行代码。结果:


程序有点小问题,蛇吃不到食物。如图。蛇跟食物会重叠一部分

让 Code Copilot 帮我解决这个问题。
直接把出问题的截图给它。

重新生成的代码复制到idea中。
运行结果,可以正常吃到蛇了。

初步的贪吃蛇游戏就做成功了。

升级改进


给了改进建议思路,虚竹哥是听人劝,吃饱饭。改~
输入:

再添加计分系统,显示玩家的得分列表。


把生成的代码复制到idea中运行;

玩两把。

得分列表有了,但感觉没啥特点。再加点需求
输入:

得分列表按分数降序,每个得分旁边增加一列:游戏结束时间。


代码复制到idea中。运行。
再玩两把。嗯,效果可以。

提供源码

有需要自取。
ScoreManager.java - 管理分数的类

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

public class ScoreManager {
    private List<ScoreEntry> scores;

    public ScoreManager() {
        scores = new ArrayList<>();
    }

    public void addScore(int score) {
        scores.add(new ScoreEntry(score, new Date()));
        // 按分数降序排列
        Collections.sort(scores, new Comparator<ScoreEntry>() {
            @Override
            public int compare(ScoreEntry s1, ScoreEntry s2) {
                return Integer.compare(s2.getScore(), s1.getScore());
            }
        });
    }

    public List<ScoreEntry> getScores() {
        return scores;
    }

    public static class ScoreEntry {
        private int score;
        private Date date;

        public ScoreEntry(int score, Date date) {
            this.score = score;
            this.date = date;
        }

        public int getScore() {
            return score;
        }

        public String getDate() {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return sdf.format(date);
        }
    }
}

SnakeGame.java - 主类

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class SnakeGame extends JFrame {
    private GamePanel gamePanel;
    private JButton startButton;
    private JButton pauseButton;
    private JButton scoreButton;
    private JLabel scoreLabel;
    private ScoreManager scoreManager;

    public SnakeGame() {
        setTitle("贪吃蛇游戏");
        setSize(600, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);

        scoreManager = new ScoreManager();
        gamePanel = new GamePanel(scoreManager);
        startButton = new JButton("开始");
        pauseButton = new JButton("暂停");
        scoreButton = new JButton("显示得分");
        scoreLabel = new JLabel("得分: 0");

        // 开始按钮的功能:开始游戏
        startButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                gamePanel.startGame();
                gamePanel.requestFocusInWindow(); // 使游戏面板获得键盘焦点
            }
        });

        // 暂停按钮的功能:暂停游戏
        pauseButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                gamePanel.pauseGame();
            }
        });

        // 显示得分按钮的功能:显示玩家得分列表
        scoreButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                showScoreList();
            }
        });

        // 控制面板包含开始、暂停按钮和得分显示
        JPanel controlPanel = new JPanel();
        controlPanel.add(startButton);
        controlPanel.add(pauseButton);
        controlPanel.add(scoreButton);
        controlPanel.add(scoreLabel);

        add(gamePanel, BorderLayout.CENTER);
        add(controlPanel, BorderLayout.SOUTH);

        // 注册游戏面板的得分更新监听器
        gamePanel.setScoreListener(new GamePanel.ScoreListener() {
            @Override
            public void scoreUpdated(int score) {
                scoreLabel.setText("得分: " + score);
            }
        });
    }

    // 显示得分列表
    private void showScoreList() {
        StringBuilder scoresText = new StringBuilder("玩家得分列表:\n");
        for (ScoreManager.ScoreEntry scoreEntry : scoreManager.getScores()) {
            scoresText.append("得分: ").append(scoreEntry.getScore())
                      .append(" 时间: ").append(scoreEntry.getDate()).append("\n");
        }

        JOptionPane.showMessageDialog(this, scoresText.toString(), "得分列表", JOptionPane.INFORMATION_MESSAGE);
    }

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                SnakeGame game = new SnakeGame();
                game.setVisible(true);
            }
        });
    }
}

GamePanel.java - 游戏面板类

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Random;

public class GamePanel extends JPanel implements ActionListener {
    private final int TILE_SIZE = 20; // 每个格子的大小
    private final int WIDTH = 600;    // 游戏面板的宽度
    private final int HEIGHT = 600;   // 游戏面板的高度
    private final int ALL_TILES = (WIDTH * HEIGHT) / (TILE_SIZE * TILE_SIZE); // 总格子数

    private final int[] x = new int[ALL_TILES]; // 贪吃蛇的x坐标
    private final int[] y = new int[ALL_TILES]; // 贪吃蛇的y坐标

    private int snakeLength; // 贪吃蛇的长度
    private int foodX;       // 食物的x坐标
    private int foodY;       // 食物的y坐标
    private int score;       // 玩家得分
    private boolean running = false; // 游戏是否在进行中
    private boolean paused = false;  // 游戏是否暂停

    private Timer timer;     // 定时器控制游戏速度
    private char direction = 'R'; // 贪吃蛇的初始方向
    private ScoreListener scoreListener;
    private ScoreManager scoreManager;

    public GamePanel(ScoreManager scoreManager) {
        this.scoreManager = scoreManager;
        setBackground(Color.BLACK);
        setFocusable(true);
        setPreferredSize(new Dimension(WIDTH, HEIGHT));
        addKeyListener(new SnakeKeyAdapter());

        initGame();
    }

    public void setScoreListener(ScoreListener listener) {
        this.scoreListener = listener;
    }

    // 初始化游戏状态
    private void initGame() {
        snakeLength = 3;
        for (int i = 0; i < snakeLength; i++) {
            x[i] = 100 - i * TILE_SIZE;
            y[i] = 100;
        }
        placeFood();
        score = 0;
        if (scoreListener != null) {
            scoreListener.scoreUpdated(score);
        }
        timer = new Timer(140, this);
    }

    // 开始游戏
    public void startGame() {
        if (!running) {
            running = true;
            paused = false;
            initGame(); // 重新初始化游戏状态
            timer.start();
        } else if (paused) {
            paused = false;
            timer.start();
        }
    }

    // 暂停游戏
    public void pauseGame() {
        if (running) {
            paused = true;
            timer.stop();
        }
    }

    // 绘制游戏内容
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        if (running) {
            draw(g);
        } else {
            showGameOver(g);
        }
    }

    // 绘制贪吃蛇和食物
    private void draw(Graphics g) {
        g.setColor(Color.RED);
        g.fillRect(foodX, foodY, TILE_SIZE, TILE_SIZE);

        for (int i = 0; i < snakeLength; i++) {
            if (i == 0) {
                g.setColor(Color.GREEN);
            } else {
                g.setColor(Color.ORANGE);
            }
            g.fillRect(x[i], y[i], TILE_SIZE, TILE_SIZE);
        }
    }

    // 显示游戏结束信息
    private void showGameOver(Graphics g) {
        String msg = "游戏结束。得分: " + score;
        Font font = new Font("Helvetica", Font.BOLD, 40);
        FontMetrics metrics = getFontMetrics(font);

        g.setColor(Color.RED);
        g.setFont(font);
        g.drawString(msg, (WIDTH - metrics.stringWidth(msg)) / 2, HEIGHT / 2);

        // 显示继续游戏的选项
        msg = "按空格键继续游戏";
        font = new Font("Helvetica", Font.BOLD, 20);
        metrics = getFontMetrics(font);
        g.setFont(font);
        g.setColor(Color.WHITE);
        g.drawString(msg, (WIDTH - metrics.stringWidth(msg)) / 2, HEIGHT / 2 + 40);

        // 保存当前得分到得分列表
        scoreManager.addScore(score);
    }

    // 检查贪吃蛇是否吃到食物
    private void checkFoodCollision() {
        if ((x[0] == foodX) && (y[0] == foodY)) {
            snakeLength++;
            score++;
            if (scoreListener != null) {
                scoreListener.scoreUpdated(score);
            }
            placeFood();
        }
    }

    // 移动贪吃蛇
    private void move() {
        for (int i = snakeLength; i > 0; i--) {
            x[i] = x[(i - 1)];
            y[i] = y[(i - 1)];
        }

        switch (direction) {
            case 'U':
                y[0] -= TILE_SIZE;
                break;
            case 'D':
                y[0] += TILE_SIZE;
                break;
            case 'L':
                x[0] -= TILE_SIZE;
                break;
            case 'R':
                x[0] += TILE_SIZE;
                break;
        }
    }

    // 检查贪吃蛇是否碰到自己或边界
    private void checkCollision() {
        for (int i = snakeLength; i > 0; i--) {
            if ((x[0] == x[i]) && (y[0] == y[i])) {
                running = false;
            }
        }

        if (x[0] < 0 || x[0] >= WIDTH || y[0] < 0 || y[0] >= HEIGHT) {
            running = false;
        }

        if (!running) {
            timer.stop();
        }
    }

    // 随机放置食物,并确保食物不与蛇重叠
    private void placeFood() {
        boolean valid;
        do {
            valid = true;
            int r = (int) (Math.random() * (WIDTH / TILE_SIZE));
            foodX = ((r * TILE_SIZE));

            r = (int) (Math.random() * (HEIGHT / TILE_SIZE));
            foodY = ((r * TILE_SIZE));

            for (int i = 0; i < snakeLength; i++) {
                if (x[i] == foodX && y[i] == foodY) {
                    valid = false;
                    break;
                }
            }
        } while (!valid);
    }

    // 每次定时器触发时调用
    @Override
    public void actionPerformed(ActionEvent e) {
        if (running && !paused) {
            checkFoodCollision();
            checkCollision();
            move();
        }
        repaint();
    }

    // 键盘事件处理,控制贪吃蛇的方向和重新开始游戏
    private class SnakeKeyAdapter extends KeyAdapter {
        @Override
        public void keyPressed(KeyEvent e) {
            int key = e.getKeyCode();

            if (key == KeyEvent.VK_SPACE && !running) {
                startGame();
            }

            if ((key == KeyEvent.VK_LEFT) && (direction != 'R')) {
                direction = 'L';
            }

            if ((key == KeyEvent.VK_RIGHT) && (direction != 'L')) {
                direction = 'R';
            }

            if ((key == KeyEvent.VK_UP) && (direction != 'D')) {
                direction = 'U';
            }

            if ((key == KeyEvent.VK_DOWN) && (direction != 'U')) {
                direction = 'D';
            }
        }
    }

    // 定义得分监听器接口
    public interface ScoreListener {
        void scoreUpdated(int score);
    }
}

三、感受

好用的功能太多太多,我就不在这个一一列举了,有兴趣的可以自行尝试。

有提供免费的授权码可体验~

有提供免费的授权码可体验~

有提供免费的授权码可体验~

私信虚竹哥,获取体验码~
国内可直接使用~

总结

❤️作者主页:小虚竹


❤️作者简介:大家好,我是小虚竹。2022年度博客之星🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作者🏆,阿里云专家博主🏆,51CTO专家博主🏆


❤️技术活,该赏


❤️点赞 👍 收藏 ⭐再看,养成习惯



文末有提供贪吃蛇游戏的最终源码~



文章目录



一、Code Copilot AI编程大模型
操作指导
用Java编写一个二分查找的代码,添加中文注释。
生成一个java实战课程设计:做一个贪吃蛇游戏
升级改进
提供源码
三、感受




一、Code Copilot AI编程大模型



操作指导


ChatGPT 4o国内直接访问地址:https://share.xuzhugpt.cloud/

上plus的车

输入购买的授权码即可。
默认就是 gpt-4o大模型

探索GPT–>编程–》选择Code Copilot

开始聊天。

进入聊天界面。



用Java编写一个二分查找的代码,添加中文注释。


输入:



用Java编写一个二分查找的代码,添加中文注释。





给出了完整的Java代码类,代码中也包含了完善的注释。并给出了很清晰的解析和进一步优化建议。
把代码拷到idea里运行。验证下结果:

结果是正确的。



生成一个java实战课程设计:做一个贪吃蛇游戏


输入:



你是一位java技术专家,游戏开发高手,请用java开发一个贪吃蛇游戏,添加中文注释,有个开始按钮和暂停按钮。






给了两个类的完整代码。还给了改进建议,我们先去idea运行看看。
把代码复制进来。


运行代码。结果:


程序有点小问题,蛇吃不到食物。如图。蛇跟食物会重叠一部分

让 Code Copilot 帮我解决这个问题。
直接把出问题的截图给它。

重新生成的代码复制到idea中。
运行结果,可以正常吃到蛇了。

初步的贪吃蛇游戏就做成功了。



升级改进



给了改进建议思路,虚竹哥是听人劝,吃饱饭。改~
输入:



再添加计分系统,显示玩家的得分列表。




把生成的代码复制到idea中运行;

玩两把。

得分列表有了,但感觉没啥特点。再加点需求
输入:



得分列表按分数降序,每个得分旁边增加一列:游戏结束时间。




代码复制到idea中。运行。
再玩两把。嗯,效果可以。



提供源码


有需要自取。
ScoreManager.java - 管理分数的类


import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
public class ScoreManager {
private List<ScoreEntry> scores;
public ScoreManager() {
scores = new ArrayList<>();
}
public void addScore(int score) {
scores.add(new ScoreEntry(score, new Date()));
// 按分数降序排列
Collections.sort(scores, new Comparator<ScoreEntry>() {
@Override
public int compare(ScoreEntry s1, ScoreEntry s2) {
return Integer.compare(s2.getScore(), s1.getScore());
}
});
}
public List<ScoreEntry> getScores() {
return scores;
}
public static class ScoreEntry {
private int score;
private Date date;
public ScoreEntry(int score, Date date) {
this.score = score;
this.date = date;
}
public int getScore() {
return score;
}
public String getDate() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.format(date);
}
}
}

SnakeGame.java - 主类


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class SnakeGame extends JFrame {
private GamePanel gamePanel;
private JButton startButton;
private JButton pauseButton;
private JButton scoreButton;
private JLabel scoreLabel;
private ScoreManager scoreManager;
public SnakeGame() {
setTitle("贪吃蛇游戏");
setSize(600, 600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
scoreManager = new ScoreManager();
gamePanel = new GamePanel(scoreManager);
startButton = new JButton("开始");
pauseButton = new JButton("暂停");
scoreButton = new JButton("显示得分");
scoreLabel = new JLabel("得分: 0");
// 开始按钮的功能:开始游戏
startButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
gamePanel.startGame();
gamePanel.requestFocusInWindow(); // 使游戏面板获得键盘焦点
}
});
// 暂停按钮的功能:暂停游戏
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
gamePanel.pauseGame();
}
});
// 显示得分按钮的功能:显示玩家得分列表
scoreButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
showScoreList();
}
});
// 控制面板包含开始、暂停按钮和得分显示
JPanel controlPanel = new JPanel();
controlPanel.add(startButton);
controlPanel.add(pauseButton);
controlPanel.add(scoreButton);
controlPanel.add(scoreLabel);
add(gamePanel, BorderLayout.CENTER);
add(controlPanel, BorderLayout.SOUTH);
// 注册游戏面板的得分更新监听器
gamePanel.setScoreListener(new GamePanel.ScoreListener() {
@Override
public void scoreUpdated(int score) {
scoreLabel.setText("得分: " + score);
}
});
}
// 显示得分列表
private void showScoreList() {
StringBuilder scoresText = new StringBuilder("玩家得分列表:\n");
for (ScoreManager.ScoreEntry scoreEntry : scoreManager.getScores()) {
scoresText.append("得分: ").append(scoreEntry.getScore())
.append(" 时间: ").append(scoreEntry.getDate()).append("\n");
}
JOptionPane.showMessageDialog(this, scoresText.toString(), "得分列表", JOptionPane.INFORMATION_MESSAGE);
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
SnakeGame game = new SnakeGame();
game.setVisible(true);
}
});
}
}

GamePanel.java - 游戏面板类


import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.util.Random;
public class GamePanel extends JPanel implements ActionListener {
private final int TILE_SIZE = 20; // 每个格子的大小
private final int WIDTH = 600; // 游戏面板的宽度
private final int HEIGHT = 600; // 游戏面板的高度
private final int ALL_TILES = (WIDTH * HEIGHT) / (TILE_SIZE * TILE_SIZE); // 总格子数
private final int[] x = new int[ALL_TILES]; // 贪吃蛇的x坐标
private final int[] y = new int[ALL_TILES]; // 贪吃蛇的y坐标
private int snakeLength; // 贪吃蛇的长度
private int foodX; // 食物的x坐标
private int foodY; // 食物的y坐标
private int score; // 玩家得分
private boolean running = false; // 游戏是否在进行中
private boolean paused = false; // 游戏是否暂停
private Timer timer; // 定时器控制游戏速度
private char direction = 'R'; // 贪吃蛇的初始方向
private ScoreListener scoreListener;
private ScoreManager scoreManager;
public GamePanel(ScoreManager scoreManager) {
this.scoreManager = scoreManager;
setBackground(Color.BLACK);
setFocusable(true);
setPreferredSize(new Dimension(WIDTH, HEIGHT));
addKeyListener(new SnakeKeyAdapter());
initGame();
}
public void setScoreListener(ScoreListener listener) {
this.scoreListener = listener;
}
// 初始化游戏状态
private void initGame() {
snakeLength = 3;
for (int i = 0; i < snakeLength; i++) {
x[i] = 100 - i * TILE_SIZE;
y[i] = 100;
}
placeFood();
score = 0;
if (scoreListener != null) {
scoreListener.scoreUpdated(score);
}
timer = new Timer(140, this);
}
// 开始游戏
public void startGame() {
if (!running) {
running = true;
paused = false;
initGame(); // 重新初始化游戏状态
timer.start();
} else if (paused) {
paused = false;
timer.start();
}
}
// 暂停游戏
public void pauseGame() {
if (running) {
paused = true;
timer.stop();
}
}
// 绘制游戏内容
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (running) {
draw(g);
} else {
showGameOver(g);
}
}
// 绘制贪吃蛇和食物
private void draw(Graphics g) {
g.setColor(Color.RED);
g.fillRect(foodX, foodY, TILE_SIZE, TILE_SIZE);
for (int i = 0; i < snakeLength; i++) {
if (i == 0) {
g.setColor(Color.GREEN);
} else {
g.setColor(Color.ORANGE);
}
g.fillRect(x[i], y[i], TILE_SIZE, TILE_SIZE);
}
}
// 显示游戏结束信息
private void showGameOver(Graphics g) {
String msg = "游戏结束。得分: " + score;
Font font = new Font("Helvetica", Font.BOLD, 40);
FontMetrics metrics = getFontMetrics(font);
g.setColor(Color.RED);
g.setFont(font);
g.drawString(msg, (WIDTH - metrics.stringWidth(msg)) / 2, HEIGHT / 2);
// 显示继续游戏的选项
msg = "按空格键继续游戏";
font = new Font("Helvetica", Font.BOLD, 20);
metrics = getFontMetrics(font);
g.setFont(font);
g.setColor(Color.WHITE);
g.drawString(msg, (WIDTH - metrics.stringWidth(msg)) / 2, HEIGHT / 2 + 40);
// 保存当前得分到得分列表
scoreManager.addScore(score);
}
// 检查贪吃蛇是否吃到食物
private void checkFoodCollision() {
if ((x[0] == foodX) && (y[0] == foodY)) {
snakeLength++;
score++;
if (scoreListener != null) {
scoreListener.scoreUpdated(score);
}
placeFood();
}
}
// 移动贪吃蛇
private void move() {
for (int i = snakeLength; i > 0; i--) {
x[i] = x[(i - 1)];
y[i] = y[(i - 1)];
}
switch (direction) {
case 'U':
y[0] -= TILE_SIZE;
break;
case 'D':
y[0] += TILE_SIZE;
break;
case 'L':
x[0] -= TILE_SIZE;
break;
case 'R':
x[0] += TILE_SIZE;
break;
}
}
// 检查贪吃蛇是否碰到自己或边界
private void checkCollision() {
for (int i = snakeLength; i > 0; i--) {
if ((x[0] == x[i]) && (y[0] == y[i])) {
running = false;
}
}
if (x[0] < 0 || x[0] >= WIDTH || y[0] < 0 || y[0] >= HEIGHT) {
running = false;
}
if (!running) {
timer.stop();
}
}
// 随机放置食物,并确保食物不与蛇重叠
private void placeFood() {
boolean valid;
do {
valid = true;
int r = (int) (Math.random() * (WIDTH / TILE_SIZE));
foodX = ((r * TILE_SIZE));
r = (int) (Math.random() * (HEIGHT / TILE_SIZE));
foodY = ((r * TILE_SIZE));
for (int i = 0; i < snakeLength; i++) {
if (x[i] == foodX && y[i] == foodY) {
valid = false;
break;
}
}
} while (!valid);
}
// 每次定时器触发时调用
@Override
public void actionPerformed(ActionEvent e) {
if (running && !paused) {
checkFoodCollision();
checkCollision();
move();
}
repaint();
}
// 键盘事件处理,控制贪吃蛇的方向和重新开始游戏
private class SnakeKeyAdapter extends KeyAdapter {
@Override
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_SPACE && !running) {
startGame();
}
if ((key == KeyEvent.VK_LEFT) && (direction != 'R')) {
direction = 'L';
}
if ((key == KeyEvent.VK_RIGHT) && (direction != 'L')) {
direction = 'R';
}
if ((key == KeyEvent.VK_UP) && (direction != 'D')) {
direction = 'U';
}
if ((key == KeyEvent.VK_DOWN) && (direction != 'U')) {
direction = 'D';
}
}
}
// 定义得分监听器接口
public interface ScoreListener {
void scoreUpdated(int score);
}
}


三、感受


好用的功能太多太多,我就不在这个一一列举了,有兴趣的可以自行尝试。


有提供免费的授权码可体验~


有提供免费的授权码可体验~


有提供免费的授权码可体验~


私信虚竹哥,获取体验码~
国内可直接使用~

更新时间 2024-09-26