通义灵码是阿里云推出的智能编程助手安装插件并登录阿里云账号即可在IDE中直接使用支持代码补全、智能问答及单元测试生成等功能。通义灵码的VS Code插件没有下架只是最近经历了一次重要的品牌更名和服务升级。你可能会发现在扩展商店里找不到“通义灵码”但搜索“Qoder CN”就能找到它。产品更名2026年5月20日阿里云将“通义灵码Lingma”正式升级更名为“Qoder CN”。官方网站https://lingma.aliyun.com/lingma/不知道为啥这东西要改头换面新产品升级直接换名字也换了官网地址https://qoder.com.cn/通义灵码和qoder有什么区别qoder的插件和独立IDE有什么区别vscode中的通义灵码在vscode插件中搜索“通义灵码”结果如下图所示安装第一个qoder cn。安装成功之后左侧状态栏多一个图标点击有提示要进行登录的界面进行登陆要先注册阿里云账号登录完成之后界面如下。其中有几个点进行说明左上角有一排按钮其中一个有提示credits套餐余量的类似token消耗默认赠送300credits(价值8元左右)一个月有效期。点击那个查看详情可以进入网页后台对消费进行详细查看。右下角也有个图标这个达标工作状态如果仍然在思考会是一个圆圈一直转停了则是思考完了。左下角是一个对话框是给AI下发指令的窗口。可以进行选择是智能问答还是智能体前者是只是进行回答和提示后者可以直接帮你操作也可以进行大模型的切换网上找点C代码(一个框框版本的贪吃蛇游戏)进行测试#include iostream #include windows.h #include time.h #include conio.h #define H 22 #define W 22 using namespace std; class chessboard { public: char qp[H][W]; int i, j, x1, y1; chessboard(); // 构造函数 void food(); void prt(int grade, int score, int gamespeed); }; chessboard::chessboard() // 初始化地图 { for (i 1; i H - 2; i) for (j 1; j W - 2; j) qp[i][j] ; // 中间空白区域 for (i 0; i H - 1; i) qp[0][i] qp[H - 1][i] #; for (i 1; i H - 2; i) qp[i][0] qp[i][W - 1] #; // 边框 food(); // 初始化食物 } void chessboard::food() // 随机产生食物 { srand(time(0)); do { x1 rand() % W - 2 1; y1 rand() % H - 2 1; } while (qp[x1][y1] ! ); qp[x1][y1] $; // 生成食物 } void chessboard::prt(int grade, int score, int gamespeed) // 打印 { system(cls);//实现动画效果 cout endl; for (i 1; i H-1; i) { cout \t; for (j 1; j W-1; j) cout qp[i][j] ; if (i 0) cout \tGrade: grade; if (i 2) cout \tScore: score; if (i 4) cout \tAutomatic forward; if (i 5) cout \ttime interval: gamespeed ms; cout endl; } } class snake : public chessboard // 继承了chessboard函数 { public: int zb[2][100]; long start; int head, tail, grade, score, gamespeed, length, timeover, x, y; char direction; snake(); void move(); }; snake::snake() // 构造函数 { // cout\n\n\t\tThe game is about to begin!endl; // for(i3;i0;i--)//倒计时效果 // { // startclock(); // while(clock()-start1000); // system(cls);//清屏 // if(i0) // cout \n\n\t\tCountdown: i endl; // } for (i 1; i 3; i) // 初始化尾巴 qp[1][i] *; qp[1][4] ; // 初始化头 for (i 0; i 4; i) // zb数组存放打印点的横纵坐标第一行x第二行y { zb[0][i] 1; zb[1][i] i 1; } } void snake::move() { score 0; head 3, tail 0; grade 1, length 4; gamespeed 500; direction 77; // 右 while (1) { timeover 1; start clock(); /* 有键盘输入时kbhit函数返回1反之0。 该空循环的作用当到达时间或有键盘输入时跳出循环 */ while ((timeover (clock() - start gamespeed)) !kbhit()); //如果在超时前收到键盘信号timeover1更新方向如果超时timeover0不更新方向按原方向运动。 if (timeover) { getch(); // 按下某个字符时无需回车自动读取 direction getch(); } switch (direction) // 控制移动 { // xy存放头的坐标 case 72: x zb[0][head] - 1; y zb[1][head]; break; // 上 case 80: x zb[0][head] 1; y zb[1][head]; break; // 下 case 75: x zb[0][head]; y zb[1][head] - 1; break; // 左 case 77: x zb[0][head]; y zb[1][head] 1; break; // 右 } // if (x 0 || x 21 || y 0 || y 21) // 撞墙over // { // system(cls); // cout \tGame over! endl; // system(pause); // break; // } if (qp[x][y] ! !(x x1 y y1)) // 到达的目标不为空且没吃到食物撞墙、撞尾巴over { system(cls); cout \tGame over! endl; system(pause); break; } if (x x1 y y1) // 吃到食物那一帧的处理 { length; score score 100; if (length 8) // 随着时间推移越来越快难度增大 { length - 8; // 每吃8个增加一次难度 grade; if (gamespeed 200) gamespeed 550 - grade * 50; } qp[x][y] ; // 吃到食物后食物处为头 qp[zb[0][head]][zb[1][head]] *; // 原本头变成* head (head 1) % 100; // zb变长取整数的最后二位数 zb[0][head] x; // 更新头坐标 zb[1][head] y; food(); // 吃到食物后更新食物 prt(grade, score, gamespeed); } else // 没吃到食物移动 {//实现贪吃蛇移动方式的算法 qp[zb[0][tail]][zb[1][tail]] ; // 更新最后的一个点为空 tail (tail 1) % 100;//更新最后一个点后倒数第二个点就成了尾巴 qp[zb[0][head]][zb[1][head]] *; // 更新头点为* head (head 1) % 100;//%100是在数组溢出时回到开头重新使用 zb[0][head] x; zb[1][head] y; qp[zb[0][head]][zb[1][head]] ; // 更新头点 prt(grade, score, gamespeed); } } } int main() { // 创建游戏对象棋盘和贪吃蛇实例 chessboard cb; snake s; s.move(); }游戏效果如下图1.统计代码行数在左下角对话框里面输入上述提示语AI会自动统计并展示如下结果2.断网测试我们把自己网络断了再次进行测试可见这玩意儿其实就是个客户端真正干活的是后台断了网不干活3.右键菜单在代码窗口右键可见多一个栏目Qoder CN,有四个子菜单解释代码、生成单元测试、生成注释、优化代码。可以先选中具体代码在进行对应的条目进行工作。我们选中一段代码选择解释代码效果如下图我们全选代码选择生成单元测试会看到同目录下生成一些单元测试文件。我们选中main函数体选择生成注释。如果当初选择的是问答模式则AI会给我回答如何切换为智能体的模式AI会直接修改我们的代码并且给出前后对比我们选中main函数体选择优化代码可以看到也可以进行代码优化4.代码格式化我们发下代码写的格式不好有的缩进都没做好可以在代码框里输入“代码格式化”可以AI对代码进行了格式化。5.修改游戏背景色为红色我们尝试让AI帮我们修改一下程序背景色可以看到AI对代码进行了调整运行效果也变成了红色这个是让我听吃惊的这玩意儿真能理解代码呀6.去除多余的注释测试成功不做截图7.添加必要的注释测试成功不做截图8.重构一下代码。是代码可读性更好一些测试成功不做截图9.给chessboard添加一个排序冒泡函数输入参数了类型为std::listint,实现从小到大排序测试成功不做截图10.给当前项目生成一个C简单工程并输出helloworld前面都是测试修改工程的这次测试新建一个工程也成功了11.给当前项目生成一个C工程该工程是一款贪吃游戏既然上述成功了加大难度也成功了12.给当前项目生成一个C工程该工程是一款贪吃游戏带有图形界面的失败了编译不过连续几次让他解决编译错误问题始终没解决掉13.给黑框框贪吃蛇游戏设置背景图失败了因为本来就是console工程没有渲染引擎他也不知道该怎么加14.解决12号编译错误解决几次没有成功15.检查有几个地方可能发生内存泄露随机在代码里添加如下代码然后问AI上述问题AI成功找到int *p1 new int(10);int *p2 new int[10];16.查出来程序崩溃原因随机在代码里添加如下代码然后问AI上述问题AI成功找到int *p1 new int(10);p1[2] 2;
AI编程5:阿里云的Qoder CN
通义灵码是阿里云推出的智能编程助手安装插件并登录阿里云账号即可在IDE中直接使用支持代码补全、智能问答及单元测试生成等功能。通义灵码的VS Code插件没有下架只是最近经历了一次重要的品牌更名和服务升级。你可能会发现在扩展商店里找不到“通义灵码”但搜索“Qoder CN”就能找到它。产品更名2026年5月20日阿里云将“通义灵码Lingma”正式升级更名为“Qoder CN”。官方网站https://lingma.aliyun.com/lingma/不知道为啥这东西要改头换面新产品升级直接换名字也换了官网地址https://qoder.com.cn/通义灵码和qoder有什么区别qoder的插件和独立IDE有什么区别vscode中的通义灵码在vscode插件中搜索“通义灵码”结果如下图所示安装第一个qoder cn。安装成功之后左侧状态栏多一个图标点击有提示要进行登录的界面进行登陆要先注册阿里云账号登录完成之后界面如下。其中有几个点进行说明左上角有一排按钮其中一个有提示credits套餐余量的类似token消耗默认赠送300credits(价值8元左右)一个月有效期。点击那个查看详情可以进入网页后台对消费进行详细查看。右下角也有个图标这个达标工作状态如果仍然在思考会是一个圆圈一直转停了则是思考完了。左下角是一个对话框是给AI下发指令的窗口。可以进行选择是智能问答还是智能体前者是只是进行回答和提示后者可以直接帮你操作也可以进行大模型的切换网上找点C代码(一个框框版本的贪吃蛇游戏)进行测试#include iostream #include windows.h #include time.h #include conio.h #define H 22 #define W 22 using namespace std; class chessboard { public: char qp[H][W]; int i, j, x1, y1; chessboard(); // 构造函数 void food(); void prt(int grade, int score, int gamespeed); }; chessboard::chessboard() // 初始化地图 { for (i 1; i H - 2; i) for (j 1; j W - 2; j) qp[i][j] ; // 中间空白区域 for (i 0; i H - 1; i) qp[0][i] qp[H - 1][i] #; for (i 1; i H - 2; i) qp[i][0] qp[i][W - 1] #; // 边框 food(); // 初始化食物 } void chessboard::food() // 随机产生食物 { srand(time(0)); do { x1 rand() % W - 2 1; y1 rand() % H - 2 1; } while (qp[x1][y1] ! ); qp[x1][y1] $; // 生成食物 } void chessboard::prt(int grade, int score, int gamespeed) // 打印 { system(cls);//实现动画效果 cout endl; for (i 1; i H-1; i) { cout \t; for (j 1; j W-1; j) cout qp[i][j] ; if (i 0) cout \tGrade: grade; if (i 2) cout \tScore: score; if (i 4) cout \tAutomatic forward; if (i 5) cout \ttime interval: gamespeed ms; cout endl; } } class snake : public chessboard // 继承了chessboard函数 { public: int zb[2][100]; long start; int head, tail, grade, score, gamespeed, length, timeover, x, y; char direction; snake(); void move(); }; snake::snake() // 构造函数 { // cout\n\n\t\tThe game is about to begin!endl; // for(i3;i0;i--)//倒计时效果 // { // startclock(); // while(clock()-start1000); // system(cls);//清屏 // if(i0) // cout \n\n\t\tCountdown: i endl; // } for (i 1; i 3; i) // 初始化尾巴 qp[1][i] *; qp[1][4] ; // 初始化头 for (i 0; i 4; i) // zb数组存放打印点的横纵坐标第一行x第二行y { zb[0][i] 1; zb[1][i] i 1; } } void snake::move() { score 0; head 3, tail 0; grade 1, length 4; gamespeed 500; direction 77; // 右 while (1) { timeover 1; start clock(); /* 有键盘输入时kbhit函数返回1反之0。 该空循环的作用当到达时间或有键盘输入时跳出循环 */ while ((timeover (clock() - start gamespeed)) !kbhit()); //如果在超时前收到键盘信号timeover1更新方向如果超时timeover0不更新方向按原方向运动。 if (timeover) { getch(); // 按下某个字符时无需回车自动读取 direction getch(); } switch (direction) // 控制移动 { // xy存放头的坐标 case 72: x zb[0][head] - 1; y zb[1][head]; break; // 上 case 80: x zb[0][head] 1; y zb[1][head]; break; // 下 case 75: x zb[0][head]; y zb[1][head] - 1; break; // 左 case 77: x zb[0][head]; y zb[1][head] 1; break; // 右 } // if (x 0 || x 21 || y 0 || y 21) // 撞墙over // { // system(cls); // cout \tGame over! endl; // system(pause); // break; // } if (qp[x][y] ! !(x x1 y y1)) // 到达的目标不为空且没吃到食物撞墙、撞尾巴over { system(cls); cout \tGame over! endl; system(pause); break; } if (x x1 y y1) // 吃到食物那一帧的处理 { length; score score 100; if (length 8) // 随着时间推移越来越快难度增大 { length - 8; // 每吃8个增加一次难度 grade; if (gamespeed 200) gamespeed 550 - grade * 50; } qp[x][y] ; // 吃到食物后食物处为头 qp[zb[0][head]][zb[1][head]] *; // 原本头变成* head (head 1) % 100; // zb变长取整数的最后二位数 zb[0][head] x; // 更新头坐标 zb[1][head] y; food(); // 吃到食物后更新食物 prt(grade, score, gamespeed); } else // 没吃到食物移动 {//实现贪吃蛇移动方式的算法 qp[zb[0][tail]][zb[1][tail]] ; // 更新最后的一个点为空 tail (tail 1) % 100;//更新最后一个点后倒数第二个点就成了尾巴 qp[zb[0][head]][zb[1][head]] *; // 更新头点为* head (head 1) % 100;//%100是在数组溢出时回到开头重新使用 zb[0][head] x; zb[1][head] y; qp[zb[0][head]][zb[1][head]] ; // 更新头点 prt(grade, score, gamespeed); } } } int main() { // 创建游戏对象棋盘和贪吃蛇实例 chessboard cb; snake s; s.move(); }游戏效果如下图1.统计代码行数在左下角对话框里面输入上述提示语AI会自动统计并展示如下结果2.断网测试我们把自己网络断了再次进行测试可见这玩意儿其实就是个客户端真正干活的是后台断了网不干活3.右键菜单在代码窗口右键可见多一个栏目Qoder CN,有四个子菜单解释代码、生成单元测试、生成注释、优化代码。可以先选中具体代码在进行对应的条目进行工作。我们选中一段代码选择解释代码效果如下图我们全选代码选择生成单元测试会看到同目录下生成一些单元测试文件。我们选中main函数体选择生成注释。如果当初选择的是问答模式则AI会给我回答如何切换为智能体的模式AI会直接修改我们的代码并且给出前后对比我们选中main函数体选择优化代码可以看到也可以进行代码优化4.代码格式化我们发下代码写的格式不好有的缩进都没做好可以在代码框里输入“代码格式化”可以AI对代码进行了格式化。5.修改游戏背景色为红色我们尝试让AI帮我们修改一下程序背景色可以看到AI对代码进行了调整运行效果也变成了红色这个是让我听吃惊的这玩意儿真能理解代码呀6.去除多余的注释测试成功不做截图7.添加必要的注释测试成功不做截图8.重构一下代码。是代码可读性更好一些测试成功不做截图9.给chessboard添加一个排序冒泡函数输入参数了类型为std::listint,实现从小到大排序测试成功不做截图10.给当前项目生成一个C简单工程并输出helloworld前面都是测试修改工程的这次测试新建一个工程也成功了11.给当前项目生成一个C工程该工程是一款贪吃游戏既然上述成功了加大难度也成功了12.给当前项目生成一个C工程该工程是一款贪吃游戏带有图形界面的失败了编译不过连续几次让他解决编译错误问题始终没解决掉13.给黑框框贪吃蛇游戏设置背景图失败了因为本来就是console工程没有渲染引擎他也不知道该怎么加14.解决12号编译错误解决几次没有成功15.检查有几个地方可能发生内存泄露随机在代码里添加如下代码然后问AI上述问题AI成功找到int *p1 new int(10);int *p2 new int[10];16.查出来程序崩溃原因随机在代码里添加如下代码然后问AI上述问题AI成功找到int *p1 new int(10);p1[2] 2;