public class Game {

	private Level levelOne;
	private Level levelTwo;
	private Level levelThree;

	boolean isBonus;
	
	//dummy property added to simulate playManyTimes()
	int gameScore=0;
	
	// constructor implemented to create objects of Game class
	// also to set the value of isBonus property
	public Game(Level l1, Level l2, Level l3, boolean bonus)
	{
		levelOne = l1;
		levelTwo= l2;
		levelThree = l3;
		isBonus= bonus;
	}
	
	public boolean isBonus()
	{
		return isBonus;
	}
	
	
	public void play()
	{
		
	}
	
	public int getScore()
	{
		int score =0;
		if (levelOne.goalReached())
		{
			score = score + levelOne.getPoints();
			if (levelTwo.goalReached())
			{
				score = score + levelTwo.getPoints();
				if (levelThree.goalReached())
				{
					score = score + levelThree.getPoints();
				}
			}
		}
		
		if (isBonus()) score = score *3;
		return score;
	}
	
	// This is the correct implementation of the playManyTimes()
//	public int playManyTimes(int num)
//	{
//		int maxScore=0;
//		int score=0;
//		
//		play();
//		maxScore = getScore();
//		
//		for (int i=2; i<=num; i++)
//		{
//			play();
//			score= getScore();
//			if (score > maxScore) maxScore = score;
//		}
//		return maxScore;
//	}
	
	
	// dummy methods added to simulate playManyTimes()
	private void setGameScore(int score)
	{
		 gameScore = score;
	}
	
	private int getGameScore()
	{
		return gameScore;
	}
	
	//dummy for simulation
	public int playManyTimes(int num)
	{
		int maxScore=0;
		int score=0;
		
		setGameScore(75);
		play();
		maxScore = getGameScore();
		
		for (int i=2; i<=num; i++)
		{
			if (i==2) setGameScore(50);
			if (i==3) setGameScore(90);
			if (i==4) setGameScore(20);
			
			play();
			score= getGameScore();
			if (score > maxScore) maxScore = score;
		}
		return maxScore;
	}

}
