共用方式為


使用 AI 在 Visual Studio 中建立 C++ 主控台應用程式

本教學課程示範如何使用 GitHub Copilot 在 Visual Studio 中快速建立 C++ 主控台應用程式。 您創建了一個康威生命遊戲的控制台版本,這是一個經典的細胞自動機。

康威的生命遊戲是由數學家約翰·康威設計的。 它由一個可以是活的或死的細胞網格組成。 遊戲根據簡單的規則自動發展,並產生複雜的、不斷發展的模式,展示如何從基本數學規則中產生複雜的行為。

GitHub Copilot 是一款由 AI 驅動的編碼助手,可幫助您更快地編寫代碼、減少錯誤並探索新的解決方案。 在 C++ 中編碼時使用 Copilot 的一些好處:

  • 在鍵入時產生整個 C++ 函數或類別。
  • 根據自然語言註解或提示來建議程式碼完成。
  • 取得複雜演算法、資料結構和標準程式庫使用的協助。
  • 透過上下文範例學習新的 API 和現代 C++ 模式。
  • 根據您的評論或程式碼接收上下文感知建議。
  • 偵錯程式碼中的錯誤。
  • 簡化和重構現有程式碼。

先決條件

  • Visual Studio 2022 或更高版本,搭配已安裝的 桌面應用程式開發使用C++工作負載
  • GitHub Copilot。 如需詳細資訊,請參閱開始 使用 GitHub Copilot

若要確認您已安裝 C++ 工作負載:

  1. 開啟 Visual Studio 安裝程式

  2. 在 Visual Studio 安裝旁選取 [修改]

  3. 確認已選取 使用 C++ 進行桌面開發

    已選取 [工作負載] 索引標籤的 Visual Studio 安裝程式螢幕擷取畫面。選取使用 C++ 進行桌面開發。

  4. 如果尚未安裝,請選取它,然後選擇 [ 修改]。

如需安裝 Copilot 的詳細資訊,請參閱 管理 GitHub Copilot 安裝和狀態

建立專案

Visual Studio 會使用 專案 來組織應用程式的程式碼,以及組織專案的 解決方案 。 專案包含用來建置應用程式的所有選項、設定和規則。 它管理所有專案檔案與任何外部檔案之間的關係。 若要建立您的應用程式,請先建立新的專案和解決方案。

  1. 開啟 Visual Studio,然後選取 [建立新專案]。

  2. 搜尋「主控台應用程式」,然後選取 C++ 的 主控台應用程式 範本。

    建立新專案對話方塊的螢幕擷取畫面。

    「建立新專案」對話方塊隨即顯示,並選取主控台應用程式範本。 模板說:在 Windows 終端機中運行代碼。 預設列印 "hello world"。 具有 c++、Windows 和 Console 標籤。

  3. 選取 下一步

  4. 將專案名稱設定為 「生活」 ,然後選擇專案的位置。

  5. 選取 ,創建

  6. 專案開啟之後,請在 [方案總管] 中尋找檔案 Life.cpp

  7. 開啟 Life.cpp 並刪除預設的「Hello, World!」程式碼,以從頭開始。

使用 Copilot 建立應用程式

您可以透過描述您想要的功能來提示 Copilot。 在本節中,您將瞭解如何提示 Copilot 產生 Conway 的 Game of Life 實作。

  1. 選取工具列中的 Copilot 圖示,開啟 Copilot 聊天視窗:

    GitHub 圖示下拉選單的螢幕擷取畫面。已選取開啟聊天視窗。

  2. 在聊天視窗中,輸入下列提示:

    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 effect
    
  3. Copilot 為康威的 Game of Life 產生 C++ 程式碼。

  4. 複製產生的程式碼並將其貼到空 Life.cpp 檔案中。

  5. F6 或選取 [建置 > 建置解決方案] 來建置專案。

  6. F5Ctrl+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;
}

當您運行該應用程序時,您應該會看到康威的 Game of Life 的動畫顯示,其模式會隨著時間的推移而演變。 若要退出程式,請按一個鍵。

在命令窗口中運行的 Conway Life 屏幕截圖,顯示不斷發展的單元格網格。

在上述程式碼範例中,程式碼會產生警告: Return value ignored: '_getch'。 您可以要求 Copilot 修復它。 選取程式碼編輯器,然後按 Alt+/ (Windows) 開啟 Copilot 聊天,然後輸入:

Copilot 聊天視窗的螢幕擷取畫面。文字:修復警告 C6031 在聊天視窗中。

Copilot 建議修正以正確處理傳回值。 若要接受變更,請選取 Tab鍵

Copilot 提議變更的螢幕截圖。按 Tab 鍵接受。Alt+Del 丟棄。

祝賀! 您成功使用 GitHub Copilot 在 C++ 中建立功能齊全的 Conway 的 Game of Life 主控台應用程式。 您已學到如何做到以下幾點:

  • 製作有效的提示來產生 C++ 程式碼
  • 使用 Copilot 的聊天介面從頭開始建立整個應用程式
  • 透過 AI 協助修正編譯警告

提高您的提示技巧

若要取得 Copilot 的更好結果,請參閱下列提示資源:

故障排除

缺少主控台應用程式範本

[新增專案] 對話方塊應該會顯示具有 C++Windows主控台標籤的主控台應用程式範本。 如果您沒有看到它,則它可能已從清單中篩選出來,或者可能未安裝。 首先,檢查模板列表頂部的過濾器下拉菜單。 將它們設定為 C++Windows主控台。 C++ 主控台應用程式 範本應該會出現;否則,不會安裝使用 C++ 的桌面開發 工作負載。

若要 使用 C++ 安裝桌面開發,您可以直接從 [建立新專案 ] 對話方塊執行安裝程式。 選擇 [建立新專案] 對話方塊底部、範本清單下方的 [安裝更多工具和功能] 連結。 如果 [ 使用者帳戶控制 ] 對話方塊要求許可,請選擇 [是]。 在安裝程式中,請確定已核取 [ 使用 C++ 進行桌面開發 ] 工作負載。 然後選擇 [修改] 以更新您的 Visual Studio 安裝。

副駕駛沒有回應

  • 請確定您有作用中的 GitHub Copilot 訂用帳戶。
  • 嘗試在 Visual Studio 中登出並重新登入您的 GitHub 帳戶

產生的程式碼無法編譯

  • 要求 Copilot 透過將錯誤訊息貼到 Copilot 聊天中來修復特定的編譯錯誤。
  • 嘗試優化您的提示,以更具體地說明您希望應用程式執行的操作。

後續步驟