This problem concerns the fourth requirement: The run methods of all players who did not win (those who were interrupted) should display [getName() + ":lost"]. For example: [Gates:lost] Validation seems to be broken - the requirement is listed as failed even though the output is correct. Here's the complete output (via println):
Gates:Start game
Smith:Start game
Gates:Gather resources
Gates:Grow economy
Smith:Gather resources
Gates:Kill enemies
Gates:won!
Smith:lost
Jones:lost
This is exactly what the requirement says. I also tried several obvious variations (blank after the colon, exclamation mark at the end and so on) but to no avail. Can anyone help? Side note: Jones never gets to make a move because Gates's rate is five times as high and so Gates makes the final move before Jones even starts. If l let everyone make a move before the first delay then first requirement is listed as failed (even though it says 'at regular intervals', not 'after regular delays' - which looks like a classical fence post error). P.S: I had the sneaking suspicion that the issue might be breaking the loop on isWinnerFound instead of waiting for interruption; however, removing the break condition and adding gamer.interrupt() to the post-game loop did not change anything. P.P.S.: my intuition regarding the missing interrupt was correct insofar as the interruption is necessary for the timely ending of the game (i.e. for pulling the losers out of Thread.sleep(). However, this doesn't change anything with regard to the fourth requirement failing.