Does setting self.destroyedOpponent to True when you detect that you’re simulated actually do anything? The instance of MeasureBot that knows it destroyed the opponent should be a different instance than the one that is making your moves.
You’re right. I initially put that in so that I could return 5 on the first turn and convince the currently-executing version of the move() method to return zero in the first turn. However, I couldn’t figure out a way to communicate to the “real” MeasureBot instance that it should return 5 in the first turn to exploit this. Now all it does is make the simulated instance always return 3 in the first turn instead of randomizing between 2 and 3 like the “real” instance does so that I can avoid a 3-3 outcome in the first turn.
Does setting self.destroyedOpponent to True when you detect that you’re simulated actually do anything? The instance of MeasureBot that knows it destroyed the opponent should be a different instance than the one that is making your moves.
You’re right. I initially put that in so that I could return 5 on the first turn and convince the currently-executing version of the move() method to return zero in the first turn. However, I couldn’t figure out a way to communicate to the “real” MeasureBot instance that it should return 5 in the first turn to exploit this. Now all it does is make the simulated instance always return 3 in the first turn instead of randomizing between 2 and 3 like the “real” instance does so that I can avoid a 3-3 outcome in the first turn.