一、前言

 

GPT-4o("o"代表"全能")具备处理各种文本、声音和图像资料的能力,能够输出多种格式的文本、声音和图像。

GPT-4o 的推出标志着 AI 技术的重大突破。它不再局限于单一媒介,而是首次实现了文本、语音和图像的无缝整合。这种多媒体的即时响应能力完全突破了传统人机交互的界限,使交流变得更加自然和流畅,引领了一场全新的交互革命。用户无需在不同的应用间切换来适应各种输入输出形式,GPT-4o 可以一站式处理所有信息类型,无论是文字问题、语音命令还是图像分析,都能迅速提供准确的反馈,大幅提升了效率和用户体验,开启了交流的新时代。

在最新版本的 ChatGPT 中,这种能力得到了进一步加强,使得处理不同媒体形式的输入输出更加轻松自如。无论是日常对话和娱乐,还是专业领域的任务,如编程、数据分析、图形设计或视频编辑,GPT-4o 都能轻松胜任,成为用户必不可少的生产力工具。

二、ChatGPT 4o 国内直接使用

介绍

ChatGPT4o功能:GPT-4o文本对话(支持联网查询)、Code Copilot(写代码、改bug、算法优化等)、DALL-E AI绘画、AI语音对话(练习英语口语、模拟技术面试)、论文插件Consensus、专职家教(精通语数外,拍照上传即可识别问题,给出权威回答,亦可用于模拟考试)、上传文件、数据分析插件Data Analyst等100+GPTS插件

网址:https://ssas.kupepoem.cn

网站优点:

  1. 支持OpenAI最新的ChatGPT4o。

  2. 同时支持PC、手机、平板。

  3. 不需要国外特殊网络,可以直接使用,非常方便 。

  4. 系统运行非常稳定 。

 

支持官方最新推出的ChatGPT4o

支持官方最新出的GPTs,100+大模型

写作相关的

生产力相关的

研究与分析相关的

教育相关的

编程相关的

Code Copilot AI编程大模型

探索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>() {@Overridepublic 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() {@Overridepublic 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();}}// 绘制游戏内容@Overrideprotected 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);}// 每次定时器触发时调用@Overridepublic void actionPerformed(ActionEvent e) {if (running && !paused) {checkFoodCollision();checkCollision();move();}repaint();}// 键盘事件处理,控制贪吃蛇的方向和重新开始游戏private class SnakeKeyAdapter extends KeyAdapter {@Overridepublic 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);}
}

三、感受

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/90727.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/90727.shtml
英文地址,请注明出处:http://en.pswp.cn/web/90727.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

社交电商推客系统全栈开发指南:SpringCloud+分润算法+Flutter跨端

一、推客系统概述与市场背景推客系统&#xff08;TuiKe System&#xff09;是一种基于社交关系的营销推广平台&#xff0c;通过用户分享商品或服务链接&#xff0c;实现裂变式传播和精准营销。近年来&#xff0c;随着社交电商的蓬勃发展&#xff0c;推客系统已成为企业获客的重…

网安-中间件-Redis未授权访问漏洞

目录 Redis Redis持久化 动态修改配置 使用反弹连接的情况 常见监听端口的方式 常见建立反弹连接的方式 流程 Linux crontab cron文件存储路径 利用Redis实现攻击 1.webshell提权案例 2.定时任务shell反弹案例 3.SSH Key getshell案例 ​编辑Redis其他利用方式 …

【c++深入系列】:万字详解栈和队列和deque(附模拟实现的源码)

&#x1f525; 本文专栏&#xff1a;c &#x1f338;作者主页&#xff1a;努力努力再努力wz &#x1f4aa; 今日博客励志语录&#xff1a; 石头能被水滴穿&#xff0c;不是因为水有多强&#xff0c;而是因为它从未停过。 ★★★ 本文前置知识&#xff1a; 模版 栈 那么栈这个…

速通python加密之RSA加密

RSA加密 RSA加密是一种非对称加密算法&#xff08;与AES等对称加密不同&#xff09;&#xff0c;由罗纳德李维斯特&#xff08;Ron Rivest&#xff09;、阿迪萨莫尔&#xff08;Adi Shamir&#xff09;和伦纳德阿德曼&#xff08;Leonard Adleman&#xff09;于1977年提出&…

Java BeanUtils 类详解:作用、语法与示例

一、BeanUtils 的核心作用BeanUtils 是 Apache Commons 和 Spring Framework 提供的工具类&#xff0c;主要用于简化 JavaBean 的操作。核心功能包括&#xff1a;属性拷贝&#xff1a;对象间同名属性自动复制动态访问&#xff1a;通过字符串名称操作属性类型转换&#xff1a;自…

PyCharm高效开发全攻略

安装与基础配置下载PyCharm专业版或社区版&#xff08;免费&#xff09;并完成安装。首次启动时选择默认设置或自定义主题、字体大小等界面偏好。配置Python解释器路径&#xff08;推荐使用虚拟环境&#xff09;&#xff0c;确保项目依赖隔离。快捷键与导航熟悉核心快捷键能大幅…

Pycharm 给 python 程序打包EXE的配置和方法

前言: Python 语言的设计变得越来越简单,它有很多可以使用的库,所以尤其在人工智能时代,Python语言被广泛应用。但是Python语言和windows系统的兼容性稍微偏弱,如何生成windows可以执行的exe文件。是要一个很复杂的配置过程,本文就会做一个介绍。 本文,通过一个Python…

【Linux | 网络】传输层(UDP和TCP)

目录一、再谈端口号1.1 端口号1.2 端口号的范围划分1.3 常见知名端口号1.4 netstat 命令1.5 进程与端口号的关系1.6 pidof 命令二、UDP协议2.1 UDP协议段格式2.2 如何理解UDP报头和UDP报文2.2.1 UDP报头2.2.2 UDP报文和UDP报文的管理2.2.3 UDP封装过程2.3 UDP的特点2.4 UDP的缓…

mybatisX的自定义模板生成

在idea中使用mybtais的自定义模板生成&#xff0c;可以帮我们省去很多重复的代码。 打开一个项目&#xff0c;我们要修改的主要就两个文件&#xff0c;一个是生成的mapper接口&#xff0c;另一个是xml文件&#xff1a; 相应的mapper接口模板为&#xff1a; package ${mapper…

miniz:一个轻量级、高性能的开源压缩库

目录 1.简介 2.核心特性 3.基本使用示例 4.与 ZLIB 的对比 5.使用场景 6.注意事项 1.简介 miniz 是一个轻量级、高性能的开源压缩库&#xff0c;专注于提供 ZLIB/GZIP 兼容的压缩和解压缩功能。它的核心优势在于体积小巧&#xff08;单文件实现&#xff09;、跨平台支持和…

Jenkins接口自动化测试(构建)平台搭建

Python接口自动化测试零基础入门到精通&#xff08;2025最新版&#xff09;自动化测试流程 在进行平台搭建前&#xff0c;我们首先要问自己&#xff1a;我需要搭建的平台的功能是什么&#xff0c;要实现什么目标&#xff1f; 在我的理解中&#xff0c;自动化构建平台的执行流…

Day 22: 复习

机器学习数据处理与降维技术复习总结 前言 经过6天的学习&#xff0c;我们系统地学习了从基础的Numpy数组操作到高级的降维算法&#xff0c;这些内容构成了机器学习数据预处理的重要知识体系。本文将对这一系列学习内容进行全面复习和总结&#xff0c;帮助大家建立完整的知识…

力扣 hot100 Day56

46. 全排列 给定一个不含重复数字的数组 nums &#xff0c;返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 //抄的 class Solution { private:vector<vector<int>>result;vector<int> path; public:void backtracking(vector<int>& nu…

Android 编码规范全指南

在 Android 开发领域&#xff0c;代码不仅是功能实现的载体&#xff0c;更是团队协作与项目迭代的基础。一套完善的编码规范&#xff0c;能让代码从 “可运行” 升级为 “易维护、可扩展、低风险”。本文基于 Google、Square 等顶尖团队的实践经验&#xff0c;结合国内 Android…

[RPA] Excel中的字典处理

案例1一个Excel文件总共有2个Sheet页&#xff0c;分别为总表和对照表通过对照表sheet页&#xff0c;设置价格对照字典对照表循环总表sheet页&#xff0c;根据循环到的商品名称&#xff0c;找到对应字典中的价格&#xff0c;并计算出总价总表将总价写入到Excel表中C列&#xff0…

基于NSGAII优化算法的车间生产调度matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.部分程序 4.算法理论概述 5.参考文献 6.完整程序 1.程序功能描述 车间生产调度是制造业的核心环节&#xff0c;其目标是在满足设备约束、工序优先级等条件下&#xff0c;优化多个相互冲突的生产指标&#xff08;如…

Cmake、VS2019、C++、openGLopenCV环境安装

在 CMake 和 Visual Studio 2019 环境下安装和配置 OpenGL、OpenCV 以及 CUDA 可能会有些复杂&#xff0c;因为涉及的组件多且相互依赖。以下是一个详细的指南&#xff0c;帮助您逐步完成安装和配置。 1. 前提条件 在开始之前&#xff0c;请确保您已安装以下软件&#xff1a; …

视频二维码在产品设备说明书中的应用

在当今数字化的时代&#xff0c;传统的产品设备说明书正面临着一场变革。文字和图片虽然能提供基本信息&#xff0c;但在复杂设备的安装、操作和故障排除方面&#xff0c;往往显得力不从心。而视频二维码的出现&#xff0c;为这一困境提供了完美的解决方案&#xff0c;它将冰冷…

【Pytest 使用教程】

pytest 使用 test_basic.py Pytest 完全实战手册 一、核心概念与基础 1、在pytest框架下运行测试用例&#xff0c;最基础的一共有三点。导入pytest的包写一个方法&#xff0c;或者类。后面运行的时候&#xff0c;相当于运行这个方法&#xff0c;或者类里的方法&#xff0c;无需…

基于OpenOCD 的 STM32CubeIDE 开发烧录调试环境搭建 DAPLINK/STLINK

需要部署一个开发环境,实现h7的板子通过daplink功能给目标板烧写程序(同事要将这个过程用fpga实现),需要通过openocd+gdb+daplink stm32; 总结:单条命令执行太麻烦,参考4写成脚本文件: 独立脚本使用Openocd ​ 在**“在Stm32CubeIDE环境下使用DAP-Link仿真”**一文中…