Me ajudem

[code]public class GuessGame
{
Player p1;
Player p2;
Player p3;
public void startGame()
{
p1 = new Player();
p2 = new Player();
p3 = new Player();

		int guessp1 = 0; 
		int guessp2 = 0;
		int guessp3 = 0;
		
		boolean p1isRight = false;
		boolean p2isRight = false;
		boolean p3isRight = false;
		
		int targetNumber = (int)(Math.random() * 10);
		System.out.println("Estou pensando em um numero entre 0 e 9");
		
		while (true)
		{
			System.out.println("O numero a adivinha é: "+ targetNumber);
			p1.guess();
			p2.guess();
			p3.guess();
			
			guessp1 = p1.number;
			System.out.println("O jogador um forneceu " + guessp1);
			guessp2 = p2.number;
			System.out.println("O jogador dois forneceu " + guessp2);
			guessp3 = p3.number;
			System.out.println("O jogador tres forneceu " + guessp3);
			
			if (guessp1 == targetNumber)
			{
				p1isRight = true;
			}
			if (guessp2 == targetNumber)
			{
				p2isRight = true;
			}
			if (guessp3 == targetNumber)
			{
				p3isRight = true;
			}
			if (p1isRight || p2isRight || p3isRight)
			{
				System.out.println("Temos um vencedor");
				System.out.println("O jagador 1 acertou" + p1isRight);
				System.out.println("O jagador 2 acertou" + p2isRight);
				System.out.println("O jagador 3 acertou" + p3isRight);
				break;
			}
			else
			{
				System.out.println("Os jogadores terão que tentar novamente");
			}
		}
	}

}

class Player
{
int number = 0;
public void guess()
{
number = (int)(Math.random() * 10);
System.out.println("Estou pensando em " + number);
}
}
class GameLauncher
{
public static void main (String args[])
{
GuessGame game = new GuessGame();
game.startGame();
}
}[/code]

Pessoal ali na classe GuessGame, foram criados 3 variaveis de instancias, Player p1, Player p2, Player p3 porque foram criadas essas variaveis com o mesmo nome da segunda classe Player e porque foram criados tres objetos player e atribuidos a eles as variaveis de instacias no metodo startGame???

Pergunta pra quem desenvolveu, parece que isto simula 3 jogadores, simples assim.

Nas linhas 3, 4 e 5 os objetos do tipo Player (classes definem tipos) foram declarados. Já nas linhas 8, 9 e 10 esses mesmos três objetos foram instânciados (chamada do construtor da classa, no caso um construtor default).

Para entender bem os termos classe, tipo, objeto, instância, declaração e instânciação leia um tutorial de orientação a objetos.

Uma sugestão é o da Sun: http://java.sun.com/docs/books/tutorial/java/concepts/index.html - Tradução independente: http://programacaoemjava.blogspot.com/2009/01/conceitos-orientao-objetos.html