Também pode ser vista em docs/VirtualMachine.
Veja também as instruções adicionais implementadas e o funcionamento da linguagem de alto nível.
Para executar o projeto é necessário ter instaladas e no PATH do seu sistema as seguintes ferramentas:
CMake >= 3.2make >= 3.2g++ >= 6.0(são usadas features do C++11)Python 2.7.12TKinterTkPygame 1.9.3- Linux:
xterm - Windows:
MinGW >= 2013072200
Nosso projeto é dividido em 4 módulos:
- Assembler: Responsável por transformar o código de alto nível em assembly, ambos no padrão especificado acima e pelos PDFs do projeto. Ele lê arquivos .gubic e transforma-os em .gubi.
- Manager: Interface gráfica utilizada para configurar os parâmetros da VirtualMachine. Responsável pela transformação do código assembly (gerado pelo Assembler ou especificado manualmente) em um formato que possa ser compilado juntamente com a VirtualMachine, com as devidas configurações, exércitos e robôs. Ele lê arquivos .gubi ou .gubic e gera o main.cpp no local apropriado, e em seguida, o compila usando CMake, e o executa.
- VirtualMachine: É a parte central do projeto, que executa o código compilado para cada um dos robôs, e gerencia as interações entre eles, mostrando o seu resultado tanto como texto no log quanto no visualizador da arena GameView.
- GameView: Responsável por mostrar o status da arena e dos robôs em uma interface gráfica.
Inicialmente, é necessário criar um arquivo assembly ( .gubi ) ou um arquivo de linguagem de alto nível ( .gubic )de teste de acordo com as especificações do projeto e salvá-lo em qualquer local (Há alguns exemplos em Project/data. Veja mais detalhes aqui).
Em seguida, é necessario compilar o assembler, localizado em Project/Assembler, usando para isso o comando make assembler no Linux ou build.bat no Windows.
Para executar o projeto, deve ser executado, usando Python2, o arquivo Project/Manager/manager.py. Esse script gerará um novo main.cpp e o executará.
As configurações da arena podem ser alteradas nas na seção Arena settings. A seguir, o terreno da arena deve ser especificado. Ele pode ser importado de um arquivo ou gerado aleatóriamente.
Para adicionar um robô a um dos exércitos, clicar em Add Robots e selecionar um arquivo com seu código. Se esse arquivo tiver a extensão .gubic, ele será montado/convertido para seu código assembly antes de ser adicionado à maquina virtual. É possível selecionar quantos robôs devem estar em cada exército com cada um dos programas. Além disso, é possível adicionar novos exércitos e renomeá-los.
Ao clicar em Save and Run, o arquivo Project/VirtualMachine/src/main.cpp será substituido por um novo contendo as alterações feitas, ele será compilado usando o CMake e executado em uma nova janela.
Informações adicionais de depuração são escritas na saida padrão do console.
-
Entrar no diretório do Assembler.
cd Project/Assembler -
Compilar o Assembler usando
make assemblerno Linux oubuild.batno Windows -
Criar um arquivo main.cpp, usando para isso o manager.py encontrado em
Project/Manager/, e salvá-lo sobre o existente emProject/VirtualMachine/src/main.cpp -
cd Project/VirtualMachine -
Dentro da pasta
Project/VirtualMachine/, checar o ambiente e criar a estrutura necessária para a compilação usando, no Linux, o comandocmake -H. -Bbuildou, no Windows,cmake -H. -G "MinGW Makefiles" -Bbuild -
Compilar os arquivos usando o comando
cmake --build build -- -j3. O binário estará na pastaProject/VirtualMachine/bin/ -
Executar o binário compilado dentro da pasta bin
bin/VirtualMachineoubin/VirtualMachine.exe
- Daniel Martinez
- Lucas Moretto
- Pedro Paulo Bambace
