package lab4;

/**
 * StarPrinter du lab 4 exercise 1
 * @author martin
 *affiche des etoiles en cascade
Écrivez un programme qui affichera les modèles suivants, un en bas de l’autre.
Utilisez des boucles for pour générer les modèles. Tous les astérisques doivent
être affichés avec l’instruction System.out.print(‘*’). Vous pouvez utiliser
aussi l’instruction System.out.println () pour changer de ligne. Aucune autre
instruction n’est pas permise.
 */
public class StarPrinter {
	/*properties*/

	/*functor*/
	private interface printer{
		void print();
	}

	private static printer _star = new printer(){
		public void print(){
			System.out.print("*");
		}
	};

	private static printer _newline = new printer(){
		public void print(){
			System.out.println();
		}
	};

	private static printer _space = new printer(){
		public void print(){
			System.out.print(" ");
		}
	};

	/*constructor*/
	private StarPrinter(){}

	/*main*/
	public static void main(String [] args){
		//a
		for (int i=0;i<10;i++){
			for (int j=0;j<i;j++)
				_star.print();
			_newline.print();
		}
		_newline.print();

		//b
		for (int i=9;i>=0;i--){
			for (int j=0;j<i;j++)
				_star.print();
			_newline.print();
		}
		_newline.print();

		//c
		for (int i=0;i<10;i++){
			for (int j=0;j<10;j++)
				if (j<i)
					_space.print();
				else
					_star.print();
			_newline.print();
		}
		_newline.print();

		//d
		for (int i=0;i<10;i++){
			for (int j=9;j>=0;j--)
				if (j<=i)
					_star.print();
				else
					_space.print();			
			_newline.print();
		}
		_newline.print();

	}
}
