private static int[] EachPlayerIO(){
		// This will take inputs of visions for each player in turn, and give them their
		// visions immediately.
		
		int[] randOrder = getRandomOrdering(NumPlayers);
		 // randOrder now contains a randomised ordering of indices.
		
		boolean[] CanSee = RunningGame.CheckLiveSeers();
		boolean[] CanWolf = RunningGame.CheckLiveWolves();
		int[] Attacks = new int[NumPlayers];
		for(int i = 0; i < NumPlayers; i++){
			int n = randOrder[i];
			if(CanSee[n]){
				int Target = ui.inputSeerTarget(n+1);
				byte Vision = RunningGame.HaveSingleVision(n+1,Target);
				ui.displaySingleVision(n+1,Target,Vision);
				RunningGame.SingleVisionAllStates(n+1, Target, Vision);
				History.SaveVision(RunningGame.getRoundNum(), n+1, Target, Vision);
				RunningGame.UpdateProbabilities();
				CanSee = RunningGame.CheckLiveSeers();
				CanWolf = RunningGame.CheckLiveWolves();
			}
			if(CanWolf[n]){
				int Target = ui.InputSingleWolfTarget(n+1);
				Attacks[n] = Target;
				History.SaveAttack(RunningGame.getRoundNum(), (n+1), Target);
			} else {
				Attacks[n] = 0;
			}
		}		
		return Attacks;
	}