Sdílet prostřednictvím


Vytvoření konzolové aplikace jazyka C++ v sadě Visual Studio pomocí AI

V tomto kurzu se dozvíte, jak pomocí GitHub Copilotu rychle vytvořit konzolovou aplikaci jazyka C++ v sadě Visual Studio. Vytvoříte konzolovou verzi hry Conway Game of Life, klasického mobilního automatu.

Conwayův game of Life byl navržen matematikem Johnem Conwayem. Skládá se z mřížky buněk, které mohou být buď živé, nebo mrtvé. Hra se vyvíjí automaticky na základě jednoduchých pravidel a vytváří složité a vyvíjející se vzory, které ukazují, jak složité chování může vycházet ze základních matematických pravidel.

GitHub Copilot je pomocník pro psaní kódu založený na umělé inteligenci, který pomáhá psát kód rychleji, snižovat chyby a zkoumat nová řešení. Některé výhody použití Copilotu při psaní kódu v jazyce C++:

  • Při psaní vygenerujte celé funkce nebo třídy jazyka C++.
  • Navrhněte dokončování kódu na základě komentářů v prostém jazyce nebo výzev.
  • Získejte pomoc se složitými algoritmy, datovými strukturami a standardním využitím knihovny.
  • Seznamte se s novými rozhraními API a moderními vzory jazyka C++ prostřednictvím kontextových příkladů.
  • Získejte návrhy s podporou kontextu na základě komentářů nebo kódu.
  • Ladění chyb v kódu
  • Zjednodušení a refaktoring stávajícího kódu

Požadavky

  • Sada Visual Studio 2022 nebo novější s nainstalovanou úlohou Vývoj desktopových aplikací s C++.
  • GitHub Copilot. Další informace najdete v tématu Začínáme s GitHub Copilotem.

Ověření, že máte nainstalovanou úlohu C++:

  1. Otevření instalačního programu sady Visual Studio

  2. Vyberte Upravit vedle instalace sady Visual Studio.

  3. Ujistěte se, že je zaškrtnuté vývoj desktopových aplikací pomocí jazyka C++ :

    Snímek obrazovky instalačního programu sady Visual Studio s vybranou kartou Úlohy Je vybrán vývoj desktopových aplikací pomocí jazyka c++.

  4. Pokud není nainstalovaný, vyberte ho a zvolte Upravit.

Další informace o instalaci Copilotu najdete v tématu Správa instalace GitHub Copilot a stavu.

Vytvoření projektu

Visual Studio používá projekty k uspořádání kódu pro aplikaci a řešení k uspořádání projektů. Projekt obsahuje všechny možnosti, konfigurace a pravidla používaná k vytváření aplikací. Spravuje vztah mezi všemi soubory projektu a všemi externími soubory. Pokud chcete vytvořit aplikaci, nejprve vytvořte nový projekt a řešení.

  1. Otevřete Visual Studio a vyberte Vytvořit nový projekt.

  2. Vyhledejte "Konzolová aplikace" a vyberte šablonu konzolové aplikace pro C++.

    Snímek obrazovky s dialogovým oknem Vytvořit nový projekt

    Zobrazí se dialogové okno Vytvořit nový projekt s vybranou šablonou konzolové aplikace. Šablona říká: Spustit kód v terminálu Windows. Ve výchozím nastavení vytiskne hello world. Obsahuje značky c++, Windows a konzolu.

  3. Vyberte Další.

  4. Nastavte název projektu na Life a zvolte umístění projektu.

  5. Vyberte Vytvořit.

  6. Po otevření projektu vyhledejte Life.cpp soubor v Průzkumníku řešení.

  7. Otevřete Life.cpp a odstraňte výchozí kód "Hello, World!", abyste mohli začít od začátku.

Vytvoření aplikace pomocí Copilotu

Příkaz Copilot zobrazíte popisem požadovaných funkcí. V této části se dozvíte, jak vyzvat Copilot k vygenerování implementace hry Conwaye Game of Life.

  1. Otevřete okno chatu Copilot výběrem ikony Copilot na panelu nástrojů:

    Snímek obrazovky s rozevíracím seznamem ikon GitHubu Je vybráno okno Otevřít chat.

  2. V okně chatu zadejte následující výzvu:

    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 vygeneruje kód C++ pro Conwayovu hru Života.

  4. Zkopírujte vygenerovaný kód a vložte ho do prázdného Life.cpp souboru.

  5. Sestavte projekt stisknutím klávesy F6 nebo výběrem možnosti Sestavit > řešení.

  6. Spusťte program stisknutím klávesY F5 nebo Ctrl+F5.

Poznámka:

Přesný kód vygenerovaný Copilotem se může mírně lišit od spuštění ke spuštění a od modelu k modelu, ale hlavní funkčnost by měla zůstat konzistentní. Pokud se vygenerovaný kód nekompiluje okamžitě, můžete požádat Copilota, aby opravil případné chyby kompilace. Copilot využívá AI, takže překvapení a chyby jsou možné. Další informace najdete v nejčastějších dotazech ke copilotu.

Příklad typické vygenerované struktury kódu

Vygenerovaný kód bude pravděpodobně obsahovat tyto klíčové komponenty:

  • Hlavičky pro manipulaci s konzolou, generování náhodných čísel a časování
  • 2D pole nebo vektor představující herní mřížku
  • Funkce pro inicializaci mřížky, použití pravidel Conwaye a zobrazení aktuálního stavu
  • Hlavní smyčka, která pokračuje, dokud se stiskne klávesa

Tady je příklad kódu, který copilot vygeneroval pomocí předchozího příkazového řádku:

// 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;
}

Když spustíte aplikaci, měli byste vidět animované zobrazení hry Conwaye Game of Life se vzory, které se v průběhu času vyvíjejí. Pokud chcete program ukončit, stiskněte klávesu.

Snímek obrazovky aplikace Conway Life běžící v příkazovém okně zobrazující vyvíjející se mřížku buněk

V předchozím příkladu kódu vygeneruje kód upozornění: Return value ignored: '_getch'. Můžete požádat Copilot, aby ho opravili. Vyberte editor kódu a stisknutím kláves Alt+/ (Windows) otevřete chat Copilot a zadejte:

Snímek obrazovky s oknem chatu Copilot Text: Oprava upozornění C6031 je v okně chatu.

Copilot navrhuje opravu pro správné zpracování návratové hodnoty. Pokud chcete změny přijmout, vyberte tab:

Snímek obrazovky navrhovaných změn Copilot. Pro přijmutí stiskněte klávesu Tab. Pro zrušení stiskněte Alt+Del.

Gratulujeme! Úspěšně jste použili GitHub Copilot k vytvoření plně funkční konzolové aplikace Conway Game of Life v jazyce C++. Naučili jste se:

  • Vytvoření efektivní výzvy k vygenerování kódu C++
  • Použití chatovacího rozhraní Copilotu k vytvoření celé aplikace od začátku
  • Oprava upozornění kompilace pomocí AI

Vylepšete své schopnosti v promptování

Pro lepší výsledky s Copilotem si prohlédněte tyto doporučující zdroje:

Řešení problémů

Chybějící šablona konzolové aplikace

V dialogovém okně Nový projekt by se měla zobrazit šablona konzolové aplikace , která má značky C++, Windows a Konzola . Pokud ho nevidíte, může se vyfiltrovat ze seznamu nebo se nemusí nainstalovat. Nejprve zkontrolujte rozevírací seznamy filtrů v horní části seznamu šablon. Nastavte je na C++, Windows a konzolu. Měla by se zobrazit šablona konzolové aplikace C++; jinak není nainstalovaná pracovní zátěž vývoje desktopových aplikací s C++.

Pokud chcete nainstalovat vývoj desktopových aplikací pomocí jazyka C++, můžete instalační program spustit přímo z dialogového okna Vytvořit nový projekt . V dolní části dialogového okna Vytvořit nový projekt vyberte odkaz Nainstalovat další nástroje a funkce pod seznamem šablon. Pokud dialogové okno Řízení uživatelských účtů požaduje oprávnění, zvolte Ano. V instalačním programu se ujistěte, že je zaškrtnutá úloha pro vývoj desktopových aplikací v C++. Potom zvolte Upravit a aktualizujte instalaci sady Visual Studio.

Copilot nereaguje

  • Ujistěte se, že máte aktivní předplatné GitHub Copilot.
  • Zkuste se v sadě Visual Studio odhlásit a vrátit se k účtu GitHubu.

Vygenerovaný kód se nekompiluje

  • Požádejte Copilot, aby opravil konkrétní chyby kompilace vložením chybové zprávy do chatu Copilot.
  • Zkuste upřesnit vaši výzvu, aby byla konkrétnější o tom, co má aplikace dělat.

Další kroky