Usar a IA para criar um aplicativo de console C++ no Visual Studio

Este tutorial mostra como usar o GitHub Copilot para criar rapidamente um aplicativo de console C++ no Visual Studio. Você cria uma versão do console do Conway's Game of Life, um autômato de celular clássico.

Conway's Game of Life foi criado pelo matemático John Conway. Consiste em uma grade de células que podem estar vivas ou mortas. O jogo evolui automaticamente com base em regras simples e produz padrões complexos e em evolução que demonstram como o comportamento intrincado pode emergir de regras matemáticas básicas.

O GitHub Copilot é um assistente de codificação alimentado por IA que ajuda você a escrever código mais rapidamente, reduzir erros e explorar novas soluções. Alguns benefícios de usar Copilot ao codificar em C++:

  • Gere classes ou funções C++ inteiras conforme você digita.
  • Sugira completamentos de código baseados em comentários ou prompts em linguagem simples.
  • Obtenha ajuda com algoritmos complexos, estruturas de dados e uso padrão da biblioteca.
  • Aprenda novas APIs e padrões C++ modernos por meio de exemplos no contexto.
  • Receba sugestões sensíveis ao contexto com base em seus comentários ou em seu código.
  • Depure erros no seu código.
  • Simplifique e refatore o código existente.

Pré-requisitos

  • Visual Studio 2022 ou posterior com o workload Desenvolvimento para desktop com C++ instalado.
  • GitHub Copilot. Para obter mais informações, consulte Introdução ao GitHub Copilot.

Para verificar se você tem a carga de trabalho do C++ instalada:

  1. Abra o Instalador do Visual Studio.

  2. Selecione Modify ao lado da instalação do Visual Studio.

  3. Verifique se o desenvolvimento para Desktop com C++ está marcado:

    Captura de tela do Instalador do Visual Studio com a guia Cargas de trabalho selecionada e Desenvolvimento para Desktop com C++ selecionado.

  4. Se ele não estiver instalado, selecione-o e escolha Modificar.

Para obter mais informações sobre como instalar o Copilot, consulte Gerenciar a instalação e o estado do GitHub Copilot.

Criar um projeto

O Visual Studio usa projetos para organizar o código de um aplicativo e soluções para organizar seus projetos. Um projeto contém as opções, as configurações e as regras usadas para criar seus aplicativos. Ele gerencia a relação entre os arquivos do projeto e todos os arquivos externos. Para criar seu aplicativo, primeiro, crie um novo projeto e uma solução.

  1. Abra o Visual Studio e selecione Criar um novo projeto.

  2. Pesquise o Aplicativo de Console e selecione o modelo de Aplicativo de Console para C++.

    Captura de tela da caixa de diálogo Criar um novo projeto.

    A caixa de diálogo Criar um novo projeto é mostrada com o modelo de Aplicativo de Console selecionado. O modelo diz: Executar código em um Terminal do Windows. Imprime Olá, Mundo por padrão. Tem as tags C++, Windows e Console.

  3. Selecione Próximo.

  4. Defina o nome Life do projeto e escolha o local do projeto.

  5. Selecione Criar.

  6. Depois que o projeto for aberto, localize o arquivo Life.cpp no Gerenciador de Soluções.

  7. Abra Life.cpp e exclua o código padrão "Olá, Mundo!" para começar do zero.

Usar o Copilot para criar um aplicativo

Você solicita o Copilot descrevendo a funcionalidade desejada. Nesta seção, você aprenderá a pedir ao Copilot que gere uma implementação do Jogo da Vida de Conway.

  1. Abra a janela de chat do Copilot selecionando o ícone copilot na barra de ferramentas:

    Captura de tela do ícone do GitHub com Open Chat selecionado.

  2. Na janela de chat, insira o seguinte prompt:

    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 gera código C++ para o Jogo da Vida de Conway. Copie o código gerado e cole-o no arquivo vazio Life.cpp .

  4. Compile o projeto pressionando F6 ou selecionando Compilar>Compilar Solução.

  5. Execute o programa pressionando F5 ou Ctrl+F5.

Observação

O código exato gerado por Copilot pode variar ligeiramente de execução para execução e modelo para modelo, mas a funcionalidade principal deve ser consistente. Se o código gerado não for compilado imediatamente, você poderá pedir ao Copilot para corrigir erros de compilação. Copilot é alimentado pela IA, portanto, surpresas e erros são possíveis. Para obter mais informações, consulte Perguntas frequentes sobre o Copilot.

Exemplo de estrutura de código gerada típica

O código gerado provavelmente inclui estes componentes principais:

  • Cabeçalhos para manipulação de console, geração de número aleatório e temporização
  • Uma matriz 2D ou um vetor para representar o tabuleiro do jogo
  • Funções para inicializar a grade, aplicar as regras de Conway e exibir o estado atual
  • Um loop principal que continua até que uma tecla seja pressionada

Aqui está um exemplo do código gerado pelo Copilot usando o prompt anterior:

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

Ao executar o aplicativo, você deverá ver uma exibição animada do Jogo da Vida de Conway com padrões evoluindo ao longo do tempo. Para sair do programa, pressione uma tecla.

Captura de tela do Conway Life em execução em uma janela de comando, exibindo a grade em evolução das células.

No exemplo de código anterior, o código gera um aviso: Return value ignored: '_getch'. Você pode pedir a Copilot para corrigi-lo. Selecione o editor de código e pressione Alt+/ (Windows) para abrir o chat do Copilot e, em seguida, insira:

Screenshot da janela de chat Copilot em que você pode pedir Copilot para corrigir um problema.

Copilot sugere uma correção para manipular o valor retornado corretamente. Para aceitar as alterações, selecione Tab:

Captura de tela das alterações propostas pelo Copilot, explicação sobre o uso de Tab para aceitar ou Alt+Del para descartar.

Parabéns! Você usou o GitHub Copilot com êxito para criar um aplicativo de console do Game of Life do Conway totalmente funcional no C++. Você aprendeu a:

  • Criar um prompt efetivo para gerar código C++
  • Usar a interface de chat do Copilot para criar um aplicativo inteiro do zero
  • Corrigir avisos de compilação com assistência de IA

Melhore suas habilidades de criação de prompts

Para obter melhores resultados com o Copilot, consulte estes recursos de sugestão.

Resolução de problemas

Modelo ausente de aplicativo de console

A caixa de diálogo Novo Projeto deve mostrar um modelo de Aplicativo de Console que tenha marcas C++, Windows e Console . Se você não vê-lo, ele pode ser filtrado para fora da lista ou pode não ser instalado. Primeiro, verifique os menus de filtro na parte superior da lista de modelos. Defina-os como C++, Windows e Console. O modelo do Aplicativo de Console do C++ deverá aparecer; caso contrário, a carga de trabalho de desenvolvimento para área de trabalho com C++ não está instalada.

Para instalar Desenvolvimento desktop com C++, você pode executar o instalador diretamente a partir da caixa de diálogo Criar um novo projeto. Escolha o link Instalar mais ferramentas e recursos na parte inferior da caixa de diálogo Criar um novo projeto , abaixo da lista de modelos. Se a caixa de diálogo Controle de Conta de Usuário solicitar permissões, escolha Sim. No instalador, verifique se a carga de trabalho Desenvolvimento de desktop com C++ está marcada. Em seguida, escolha Modificar para atualizar a instalação do Visual Studio.

Copilot não está respondendo

  • Verifique se você tem uma assinatura ativa do GitHub Copilot.
  • Tente sair e voltar para sua conta GitHub em Visual Studio.

O código gerado não é compilado

  • Peça ao Copilot para corrigir erros de compilação específicos colando a mensagem de erro no chat do Copilot.
  • Tente refinar seu prompt para ser mais específico sobre o que você deseja que o aplicativo faça.

Consulte também