simulator.h 947 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. #ifndef SIMULATOR_H
  2. #define SIMULATOR_H
  3. #include <array>
  4. #include <vector>
  5. #include <memory>
  6. #include <climits>
  7. #include <stdint.h>
  8. using namespace std;
  9. #include "program.h"
  10. enum {
  11. CYCLE_TIMEOUT = 100000,
  12. FIELDS_XY = 20,
  13. };
  14. struct Simulator {
  15. size_t cycle = 0;
  16. int32_t pub = 0;
  17. vector<Program> programs;
  18. vector<shared_ptr<Team>> teams;
  19. Simulator();
  20. static Position calcPosition(Position position, Direction direction, int32_t distance);
  21. void decode(Program& program, Task& task, int& v, int*& var_v, int param, int& additionalCycles);
  22. void decodeInstructionParameters(Program& program, Task& task, const Instruction& instruction, int& additionalCycles);
  23. Program* findProgram(Position position);
  24. void removeErroneousPrograms();
  25. void simulate();
  26. void beginInstruction(Program& program, Task& task);
  27. void endInstruction(Program& program, Task& task);
  28. };
  29. #endif // SIMULATOR_H