public Arcade(string intCodeMemory, bool insertQuarters = false) { Dictionary <int, long> substitutions = new Dictionary <int, long>(); if (insertQuarters) { substitutions[0] = 2; } _intCode = new IntCode(intCodeMemory, substitutions); _intCode.OnOutput += HandleOnOutput; _intCode.Begin(); while (_intCode.state == IntCode.State.Waiting) { int delta = _ballX - _paddleX; delta = delta == 0 ? 0 : delta / Math.Abs(delta); // -1, 0, 1 _intCode.Input(delta); } if (insertQuarters) { Console.WriteLine("Final score: " + score); } else { RunDiagnosticCheck(); } }
private void ExecuteMoves() { Direction direction; while (_moves.Count > 1) { direction = _moves.Dequeue(); _position += direction; _intCode.Input(InputMap[direction]); } direction = _moves.Dequeue(); _pendingPosition = _position + direction; _intCode.OnOutput += HandleUnknownMove; _intCode.Input(InputMap[direction]); _intCode.OnOutput -= HandleUnknownMove; }
private bool Update() { if (_intCode.state == IntCode.State.Waiting) { _intCode.Input(_whiteTiles.Contains(_pos) ? 1 : 0); } return(_intCode.state != IntCode.State.Complete); }
private void Input(string input, bool print = true) { lastOutput = string.Empty; if (print) { Console.Write("> "); Console.ForegroundColor = ConsoleColor.Yellow; Console.WriteLine(input); } foreach (char c in input) { _intCode.Input((long)c); } Console.ResetColor(); _intCode.Input('\n'); }
private void RunSpringBot(string[] instructions) { Queue <char> input = new Queue <char>(instructions.Aggregate((a, b) => $"{a}\n{b}") + "\n"); _intCode.Reset(); _intCode.Begin(); while (_intCode.state != IntCode.State.Complete && input.Count > 0) { _intCode.Input((long)input.Dequeue()); } }
public void Init(int address) { _intCode.Input(address); }
// Resets and begins the intCode, passing the phase setting as the first input public void Begin(int phase) { _intCode.Reset(); _intCode.Begin(); _intCode.Input(phase); }
public override (string message, object answer) SolvePart1() { _intCode.Begin(); _intCode.Input(1); return("Final output: ", _lastOutput); }