projeto em C++ Skill Tree

Criar um jogo de Sokoban com desfazer

Crie um Sokoban jogável no terminal em C++, com passos legais, empurrão de uma caixa, verificação real dos alvos e restauração completa do estado.

ProjetoC++

💡 Este tutorial foi traduzido do inglês com assistência de IA. Para ver o original, você pode mudar para a versão em inglês

Introdução

Criar um jogo de Sokoban com desfazer é um projeto prático em C++ para quem já conhece os fundamentos da linguagem. Você criará um jogo de terminal em que o jogador empurra caixas até os alvos, recusa movimentos impossíveis e pode desfazer toda a ação anterior.

O curso combina dois laboratórios guiados com um desafio independente. Primeiro, você implementará os passos, o empurrão de uma única caixa e a verificação real dos alvos. Depois salvará estados completos e os restaurará ao desfazer. Por fim, aplicará as mesmas regras a outro armazém com duas caixas. Cada laboratório fornece seus próprios arquivos; nenhum arquivo ou jogo em execução é transferido do ambiente anterior.

O que você aprenderá

Ao concluir o curso, você poderá:

  • separar as paredes e os alvos fixos das posições variáveis do jogador e das caixas;
  • verificar as condições de movimento e empurrão antes de alterar o estado, para que ações recusadas não mudem nada;
  • determinar a conclusão pela presença de cada caixa em um alvo e recalculá-la após um movimento ou ao desfazer;
  • copiar estados completos para um histórico vector somente em movimentos legais e restaurar com segurança o jogador e todas as caixas;
  • compilar e jogar com um motor C++ reutilizável que aceite diferentes caminhos legais e preserve os níveis originais.

Para quem é este curso

Este curso é indicado para estudantes de C++ que querem usar objetos, cópias por valor e contêineres padrão em um programa interativo com regras claras.

Pré-requisitos: Navegação básica no terminal e familiaridade com classes, funções, strings e vector de C++. Os laboratórios guiados explicam o modelo de terreno fixo, as condições de movimento, os snapshots completos de estado e as operações do histórico.

Ambiente de aprendizagem: A LabEx fornece um ambiente Linux preparado no navegador, com compilador C++17, estrutura de código, níveis pequenos, um exemplo funcional e Terminal. Os comandos do jogo, as mensagens e a saída de comandos permanecem em inglês.

Perguntas frequentes

Vou escrever toda a aplicação do jogo?

Você implementará as funções de movimento, conclusão e desfazer em engine.cpp. O carregamento dos níveis, a exibição em texto e a leitura de comandos estão preparados. Você compilará seu motor em um programa jogável, sem instalação local nem motor gráfico.

Preciso encontrar a solução mais curta?

Não. Diferentes caminhos legais são aceitos. O projeto se concentra em mudanças de estado corretas e em desfazer completamente as ações, não em resolver automaticamente ou minimizar o número de movimentos.

Posso desfazer um empurrão que complete o nível?

Sim. É possível continuar jogando após a conclusão, e desfazer restaura o jogador e todas as caixas, inclusive o estado anterior ao empurrão vencedor. O histórico pertence ao jogo atual em memória; executar novamente o programa inicia um jogo novo, em vez de carregar uma sessão salva.

Professor

labby
Labby
Labby is the LabEx teacher.

Recomendado para Você

no data