本教程介绍如何使用 GitHub Copilot 在 Visual Studio 中快速创建C++控制台应用程序。 你可以创建 Conway 的《生活游戏》的主机版本,这是一款经典的手机自动机。
康威的生活游戏是由数学家约翰·康威设计的。 它由可活或死的单元格网格组成。 游戏根据简单的规则自动演变,并产生复杂的不断演变的模式,这些模式演示了复杂行为如何从基本数学规则中浮出水面。
GitHub Copilot 是一种 AI 支持的编码助手,可帮助你更快地编写代码、减少错误并探索新解决方案。 在 C++ 中编码时使用 Copilot 的一些好处:
- 键入时生成整个C++函数或类。
- 根据自然语言注释或提示建议代码补全。
- 获取有关复杂算法、数据结构和标准库使用的帮助。
- 通过上下文示例了解新的 API 和新式C++模式。
- 根据您的注释或代码获取上下文敏感的建议。
- 解决代码中的调试错误。
- 简化和重构现有代码。
先决条件
- 安装了 桌面开发使用 C++ 工作负载 的 Visual Studio 2022 或更高版本。
- GitHub Copilot。 有关详细信息,请参阅 GitHub Copilot 入门。
若要验证是否已安装C++工作负载,
打开 Visual Studio 安装程序
选择 Visual Studio 安装旁边的 “修改 ”
确保选中C++ 桌面开发选项。
如果未安装,请选择它,然后选择 “修改”。
有关安装 Copilot 的详细信息,请参阅管理 GitHub Copilot 安装和状态。
创建项目
Visual Studio 使用 项目 来组织应用的代码,以及用于组织项目 的解决方案 。 项目包含用于生成应用的所有选项、配置和规则。 它管理所有项目文件和任何外部文件之间的关系。 若要创建应用,请先创建新的项目和解决方案。
打开 Visual Studio,然后选择创建新项目。
搜索“控制台应用”,然后选择C++的 控制台应用 模板。
将显示“创建新项目”对话框,其中选择了“控制台应用”模板。 模板显示:在 Windows 终端中运行代码。 默认情况下打印 hello world。 具有标签 c++、Windows 和控制台。
选择“下一步”。
将项目名称设置为 Life ,然后选择项目的位置。
选择 创建。
项目打开后,在解决方案资源管理器中找到
Life.cpp文件。打开
Life.cpp,删除默认的“Hello,World!”代码,以便从头开始。
使用 Copilot 创建应用
您可以通过描述所需功能来引导 Copilot。 在本部分中,你将了解如何指示 Copilot 生成 Conway 生命游戏的实现。
通过选择工具栏中的 Copilot 图标打开 Copilot 聊天窗口:
在聊天窗口中,输入以下提示:
Create a C++ console application that implements Conway's Game of Life. The program should: - Use a 40x20 grid displayed with asterisks (*) for live cells and spaces for dead cells - Start with a random initial pattern - Display each generation for 500ms before showing the next - Allow the user to press any key to exit the program - Include proper headers and use standard C++ practices - Clear the console between generations to provide an animation effectCopilot 为康威的生命游戏生成 C++ 代码。
复制生成的代码并将其粘贴到空
Life.cpp文件中。按 F6 键或选择 生成 > 生成解决方案 来生成项目。
按 F5 或 Ctrl+F5 运行程序。
注释
Copilot 生成的确切代码可能会因每次运行和不同模型而略有不同,但核心功能应保持一致。 如果生成的代码未立即编译,可以要求 Copilot 修复任何编译错误。 Copilot 由 AI 提供支持,因此可能会带来意外和错误。 有关详细信息,请参阅 Copilot 常见问题解答。
典型生成的代码结构示例
生成的代码可能包含以下关键组件:
- 控制台操作、随机数生成和定时的标头
- 用于表示游戏网格的 2D 数组或向量
- 用于初始化网格的函数、应用 Conway 的规则并显示当前状态
- 在按下键之前继续的主循环
下面是 Copilot 使用上一提示生成的代码示例:
// Code generated by GitHub Copilot
#include <iostream>
#include <chrono>
#include <thread>
#include <conio.h> // for _kbhit and _getch
using namespace std;
int step = 0;
const int rows = 20;
const int cols = 40;
void printGrid(int grid[rows][cols])
{
cout << "Step: " << step << endl;
for (int i = 0; i < rows; ++i)
{
for (int j = 0; j < cols; ++j)
{
cout << (grid[i][j] ? '*' : ' ');
}
cout << endl;
}
}
int countNeighbors(int grid[rows][cols], int x, int y)
{
int count = 0;
for (int i = -1; i <= 1; ++i)
{
for (int j = -1; j <= 1; ++j)
{
if (i == 0 && j == 0)
{
continue;
}
int ni = x + i;
int nj = y + j;
if (ni >= 0 && ni < rows && nj >= 0 && nj < cols)
{
count += grid[ni][nj];
}
}
}
return count;
}
void updateGrid(int grid[rows][cols])
{
int newGrid[rows][cols] = { 0 };
for (int i = 0; i < rows; ++i)
{
for (int j = 0; j < cols; ++j)
{
int neighbors = countNeighbors(grid, i, j);
if (grid[i][j] == 1)
{
newGrid[i][j] = (neighbors < 2 || neighbors > 3) ? 0 : 1;
}
else
{
newGrid[i][j] = (neighbors == 3) ? 1 : 0;
}
}
}
// Copy newGrid back to grid
for (int i = 0; i < rows; ++i)
{
for (int j = 0; j < cols; ++j)
{
grid[i][j] = newGrid[i][j];
}
}
}
int main()
{
int grid[rows][cols] = { 0 };
// Initial configuration (a simple glider)
grid[1][2] = 1;
grid[2][3] = 1;
grid[3][1] = 1;
grid[3][2] = 1;
grid[3][3] = 1;
while (true)
{
if (_kbhit()) // Check if a key has been pressed
{
_getch(); // Consume the key
break; // Exit the loop
}
printGrid(grid);
updateGrid(grid);
std::this_thread::sleep_for(std::chrono::milliseconds(100));
cout << "\033[H\033[J"; // Clear the screen
step++;
}
return 0;
}
运行应用程序时,应会看到 Conway 的“生活游戏”的动画显示,模式会随着时间推移而演变。 若要退出程序,请按键。
在前面的代码示例中,该代码生成警告: Return value ignored: '_getch'。 你可以要求科皮洛特修复它。 选择代码编辑器并按 Alt+/ (Windows)打开 Copilot 聊天,然后输入:
Copilot 建议修复以正确处理返回值。 若要接受更改,请选择 Tab:
祝贺! 你已成功使用 GitHub Copilot 在 C++ 中创建功能齐全的 Conway Life 游戏控制台应用程序。 你已了解如何执行以下操作:
- 创建用于生成C++代码的高效提示词
- 使用 Copilot 的聊天界面从头开始创建整个应用程序
- 在 AI 的协助下修复编译时的警告
提高提示技能
有关 Copilot 的更好结果,请参阅以下提示资源:
- GitHub Copilot 文档 - 官方最佳做法和提示
- OpenAI 的 GPT 最佳做法 - 常规 AI 提示技术
- Copilot 提示指南 - 代码生成的具体指南
Troubleshooting
缺少控制台应用模板
“新建项目”对话框应显示具有C++、Windows 和控制台标记的控制台应用模板。 如果未看到它,它可能会被从列表中筛选出来,或者它可能未安装。 首先,检查模板列表顶部的筛选器下拉列表。 将其设置为 C++、 Windows 和 控制台。 应显示C++ 控制台应用 模板;否则,不会安装 具有C++工作负荷的桌面开发 。
若要 使用 C++ 安装桌面开发,可以直接从“ 创建新项目 ”对话框运行安装程序。 选择“创建新项目”对话框底部的“安装更多工具和功能”链接,位于模板列表下方。 如果 用户帐户控制 对话框请求权限,请选择 “是”。 在安装程序中,确保选中C++桌面应用开发工作负载。 然后选择 “修改” 以更新 Visual Studio 安装。
Copilot 未响应
- 确保拥有有效的 GitHub Copilot 订阅。
- 尝试注销并在 Visual Studio 中重新登录到 GitHub 帐户
生成的代码未编译
- 将错误消息粘贴到 Copilot 聊天中,要求 Copilot 修复特定的编译错误。
- 请尝试优化你的提示,以具体说明你希望应用程序执行的工作。
后续步骤
- Visual Studio 中的 GitHub Copilot
- GitHub Copilot 文档 - 深入了解 AI 辅助开发
- 真棒 ChatGPT 提示 - 社区驱动的提示示例以获取灵感