- Correção de bugs (em relação a requisitos da terceira fase):
- Resolvida segfault ao modificar uma célula entre uma chamada de SEE e ATR
- Resolvida segfault ao chamar ATR em uma célula de fora da Arena
- Corrigido bug no qual a arena não atualizava corretamente em alguns casos
- Robôs adicionados além dos que cabem na base não correm o risco de ocupar inicialmente uma base inimiga
- Adicionado montador para linguagem de alto nível
- Implementadas variaveis booleanas
- Implementado operadores booleanos
- Implementado else
- Implementadas chamadas de sistema
- Implementado for
- Manager agora aceita tanto arquivos .gubi (assembly) quanto arquivos .gubic (alto nível)
- Implementado manager.py
- É possível alterar mais facilmente a configuração de diversos elementos da arena.
- Maior facilidade para adicionar robôs e exércitos.
- Geração de arenas aleatórias.
- Importação de arenas salvas.
- Arena agora pode ser inicializada com um terreno definido.
- Implementadas classes e suas devidas funcionalidades (para mais detalhes, ver documentação):
- Entidade
- Entidade estática
- Entidade móvel
- Robô
- Arena
- Exército
- Entidade
- Implementado sistema de log com 4 níveis de verbosidade (Debug, Info, Warn, Error)
- Refatorada pilha de execução usando nova implementação da StackFrame
- Adicionadas propriedades ao robô, incluindo número de cristais, HP, e combustível.
- Execução de código agora gasta uma quantidade
muitopequena de combustível a cada instrução, e quando ele acaba, a execução é interrompida. - Implementado escalonador que executa cada máquina virtual da arena por uma quantidade limitada de ciclos de cada vez.
- Instrução PRN agora imprime ID do robô e nome do exército de origem.
- Implementadas chamadas de sistema
- Implementadas instruções adicionais SYS, ATR e SEE.
- Implementada matriz e movimentação hexagonal.
- Robôs agora podem trabalhar com diversos tipos de dados.
- Refatorado código para C++.
- Implementado arquivo CMakeLists para construção do projeto cross-platform.
- Implementação completa do montador builder.py.
- Corrigido bug do montador no qual CALLs e JMP para labels posteriores gerava código inválido.
- Implementado espaço para variáveis locais na pilha de execução.
- Implementadas instruções ALC e FRE, para alocação e liberação de memória local respectivamente.
- Implementadas instruções STL e RCE como especificado na documentação.
- Corrigida instrução RET como especificado na documentação.
- Implementação própria de pilha para tornar possível alocar espaços de memória dentro dela.
- Criado script de execução e build automático com detecção de erros para Windows.