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.2
make >= 3.2
g++ >= 6.0
(são usadas features do C++11)Python 2.7.12
TKinter
Tk
Pygame 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 assembler
no Linux oubuild.bat
no 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. -Bbuild
ou, 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/VirtualMachine
oubin/VirtualMachine.exe
- Daniel Martinez
- Lucas Moretto
- Pedro Paulo Bambace