Skip to content

Latest commit

 

History

History
57 lines (50 loc) · 3.09 KB

changelog.md

File metadata and controls

57 lines (50 loc) · 3.09 KB

Changelog

Quarta fase

  • 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)

Terceira fase

  • 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.

Segunda fase

  • Implementadas classes e suas devidas funcionalidades (para mais detalhes, ver documentação):
    • Entidade
      • Entidade estática
      • Entidade móvel
    • Robô
    • Arena
    • Exército
  • 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 muito pequena 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.

Primeira fase (mudanças em relação ao código fornecido pelo professor):

  • 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.