Delen via


AI gebruiken om een C++-consoletoepassing te maken in Visual Studio

In deze zelfstudie leert u hoe u GitHub Copilot gebruikt om snel een C++-consoletoepassing te maken in Visual Studio. U maakt een consoleversie van Conway's Game of Life, een klassieke mobiele automaton.

Conway's Game of Life werd bedacht door wiskundige John Conway. Het bestaat uit een raster van cellen die levend of dood kunnen zijn. Het spel ontwikkelt zich automatisch op basis van eenvoudige regels en produceert complexe, veranderende patronen die laten zien hoe ingewikkeld gedrag kan ontstaan uit eenvoudige wiskundige regels.

GitHub Copilot is een door AI gemaakte coderingsassistent waarmee u sneller code kunt schrijven, fouten kunt verminderen en nieuwe oplossingen kunt verkennen. Enkele voordelen van het gebruik van Copilot bij het coderen in C++:

  • Genereer volledige C++-functies of -klassen terwijl u typt.
  • Suggesties voor codevoltooiingen op basis van opmerkingen of prompts in gewone taal.
  • Hulp krijgen bij complexe algoritmen, gegevensstructuren en standaardbibliotheekgebruik.
  • Leer nieuwe API's en moderne C++-patronen via voorbeelden in context.
  • Ontvang contextbewuste suggesties op basis van uw opmerkingen of code.
  • Fouten in uw code opsporen.
  • Bestaande code vereenvoudigen en herstructureren.

Vereiste voorwaarden

  • Visual Studio 2022 of hoger met de desktopontwikkeling waarop de C++ -workload is geïnstalleerd.
  • GitHub Copilot. Zie Aan de slag met GitHub Copilot voor meer informatie.

Controleer of de C++-workload is geïnstalleerd:

  1. Visual Studio Installer openen

  2. Selecteer Wijzigen naast uw Visual Studio-installatie

  3. Controleer of desktopontwikkeling met C++ is ingeschakeld:

    Schermopname van het Installatieprogramma van Visual Studio met het tabblad Workloads geselecteerd. Desktopontwikkeling met c++ is geselecteerd.

  4. Als deze niet is geïnstalleerd, selecteert u deze en kiest u Wijzigen.

Zie GitHub Copilot-installatie en -status beheren voor meer informatie over het installeren van Copilot.

Een project maken

Visual Studio maakt gebruik van projecten om de code voor een app en oplossingen te ordenen om uw projecten te organiseren. Een project bevat alle opties, configuraties en regels die worden gebruikt om uw apps te bouwen. Hiermee wordt de relatie tussen alle bestanden van het project en eventuele externe bestanden beheerd. Als u uw app wilt maken, maakt u eerst een nieuw project en een nieuwe oplossing.

  1. Open Visual Studio en selecteer Een nieuw project maken.

  2. Zoek naar 'Console-app' en selecteer de console-app-sjabloon voor C++.

    Schermopname van het dialoogvenster Een nieuw project maken.

    Het dialoogvenster Een nieuw project maken wordt weergegeven met de Console App-sjabloon geselecteerd. De sjabloon zegt: Code uitvoeren in een Windows-terminal. Drukt standaard 'hallo wereld' af. Bevat de tags c++, Windows en Console.

  3. Kies Volgende.

  4. Stel de projectnaam in op Life en kies de locatie voor het project.

  5. Klik op Creëren.

  6. Zodra het project is geopend, zoekt u het Life.cpp bestand in Solution Explorer.

  7. Open Life.cpp en verwijder de standaardcode 'Hallo, Wereld!' om opnieuw te beginnen.

Copilot gebruiken om een app te maken

U geeft aan Copilot door de gewenste functionaliteit te beschrijven. In deze sectie leert u hoe u Copilot vraagt om een implementatie van Conway's Game of Life te genereren.

  1. Open het Copilot-chatvenster door het Copilot-pictogram op de werkbalk te selecteren:

    Schermopname van het dropdownmenu voor het GitHub-pictogram. Chatvenster openen geselecteerd.

  2. Voer in het chatvenster de volgende prompt in:

    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 genereert C++-code voor Conway's Game of Life.

  4. Kopieer de gegenereerde code en plak deze in het lege Life.cpp bestand.

  5. Bouw het project door op F6 te drukken of > te selecteren.

  6. Voer het programma uit door op F5 of Ctrl+F5 te drukken.

Opmerking

De exacte code die door Copilot wordt gegenereerd, kan enigszins verschillen van uitvoering tot uitvoering en model, maar de kernfunctionaliteit moet consistent zijn. Als de gegenereerde code niet onmiddellijk wordt gecompileerd, kunt u Copilot vragen om compilatiefouten op te lossen. Copilot wordt mogelijk gemaakt door AI, dus verrassingen en fouten zijn mogelijk. Zie Veelgestelde vragen over Copilotvoor meer informatie.

Voorbeeld van typische gegenereerde codestructuur

Uw gegenereerde code bevat waarschijnlijk de volgende belangrijke onderdelen:

  • Headers voor consolemanipulatie, genereren van willekeurige getallen en timing
  • Een 2D-matrix of vector die het gameraster vertegenwoordigt
  • Functies voor het initialiseren van het raster, het toepassen van Conway-regels en het weergeven van de huidige status
  • Een hoofdlus die doorgaat totdat een toets wordt ingedrukt

Hier volgt een voorbeeld van de code die Copilot heeft gegenereerd met behulp van de vorige prompt:

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

Wanneer u de toepassing uitvoert, ziet u een geanimeerde weergave van Conway's Game of Life met patronen die zich in de loop van de tijd ontwikkelen. Druk op een toets om het programma af te sluiten.

Schermopname van Conway Life dat wordt uitgevoerd in een opdrachtvenster, waarin het veranderende raster met cellen wordt weergegeven.

In het voorgaande codevoorbeeld genereert de code een waarschuwing: Return value ignored: '_getch'. U kunt Copilot vragen om het probleem op te lossen. Selecteer de code-editor en druk op Alt+/ (Windows) om de Copilot-chat te openen en voer vervolgens het volgende in:

Schermopname van het Copilot-chatvenster. De tekst: Waarschuwing C6031 herstellen bevindt zich in het chatvenster.

Copilot stelt een oplossing voor om de retourwaarde correct te verwerken. Als u de wijzigingen wilt accepteren, selecteert u Tab:

Schermopname van de voorgestelde wijzigingen in Copilot. Tab om te accepteren. Alt+Del om te verwijderen.

Gefeliciteerd! U hebt GitHub Copilot gebruikt om een volledig functionele Game of Life-consoletoepassing van Conway te maken in C++. U hebt geleerd hoe u het volgende kunt doen:

  • Een effectieve prompt maken om C++-code te genereren
  • De chatinterface van Copilot gebruiken om een volledig nieuwe toepassing te maken
  • Compilatiewaarschuwingen oplossen met AI-hulp

Uw promptvaardigheden verbeteren

Zie deze vragende resources voor betere resultaten met Copilot:

Probleemoplossingsproces

Ontbrekende console-app-sjabloon

In het dialoogvenster Nieuw project moet een console-app-sjabloon met C++-, Windows- en consoletags worden weergegeven. Als u deze niet ziet, wordt deze mogelijk uit de lijst gefilterd of is deze mogelijk niet geïnstalleerd. Controleer eerst de filtervervolgkeuzelijsten boven aan de lijst met sjablonen. Stel deze in op C++, Windows en Console. De sjabloon voor de C++ -console-app moet worden weergegeven. anders is de desktopontwikkeling met C++ -werkbelasting niet geïnstalleerd.

Als u desktopontwikkeling wilt installeren met C++, kunt u het installatieprogramma rechtstreeks vanuit het dialoogvenster Een nieuw project maken uitvoeren. Kies de koppeling Meer hulpprogramma's en functies installeren onderaan het dialoogvenster Een nieuw project maken , onder de lijst met sjablonen. Als het dialoogvenster Gebruikersaccountbeheer machtigingen aanvraagt, kiest u Ja. Controleer in het installatieprogramma of de desktopontwikkeling met C++ -werkbelasting is gecontroleerd. Kies Vervolgens Wijzigen om uw Visual Studio-installatie bij te werken.

Copilot reageert niet

  • Zorg ervoor dat u een actief GitHub Copilot-abonnement hebt.
  • Log uit en log weer in bij uw GitHub-account in Visual Studio

Gegenereerde code compileert niet

  • Vraag Copilot om specifieke compilatiefouten op te lossen door het foutbericht in copilot-chat te plakken.
  • Verfijn uw prompt om specifieker te zijn over wat u met de app wilt doen.

Volgende stappen