/*  En-t�te du programme
  ====================
  Programme:  menu et ascii art
  Autheur:  Martin Robinson
  Conception: 20/01/2012
  But:    programme avec un menu
          qui dessine du ascii art.

modification:	17 février	
				Martin Robinson
				ajout de ma librairie
  Directives du pr�processeur
  ===========================*/

#include <iostream>
#include <limits>
#include "martinrobinson.hpp"

using namespace std;

#define msgSaisieNb  "Entrez le nombre de symboles a reproduire : "
#define msgSaisieSymb  "Entrez le symbole a reproduire : "
#define msgSaisieChoix  "Entrez votre choix : "

/*  Prototype de fonction
  ===================*/
char menu();
void ligne(char, int);
void cube(char, int);
void cubeVide(char, int);
void triangle(char, int);

/*  Programme principal
  ===================*/

int main()
{
  //initialisation
  bool continuer=true;
  int nb;     //nombre de symbole
  char symb,  //symbole
       choix; //choix du menu
  viderEcran();
  nb = saisirIntPositif(msgSaisieNb);
  symb = saisirChar(msgSaisieSymb);
  //boucle principale
  do{
	viderEcran();
    //menu choix
	switch(menu())		//20fev mr
    {
    case 'A':   //ligne
		cout << "\nvoici une ligne\n";
		ligne(symb,nb);
		cout << endl;
		break;
    case 'B':   //cube plein 
		cout << "\nvoici un cube plein\n";
		cube(symb,nb);
		break;
    case 'C':   //cube vide
		cout << "\nvoici un cube vide\n";
		cubeVide(symb,nb);
		break;
    case 'D':   //triangle rectangle
		cout << "\nvoici un triangle\n";
		triangle(symb,nb);
		break;
	case 'E':
		continuer=false;
		break;
    }
	attendre();
  }while(continuer);

  return 0;
}

char menu()
{
    cout << "\nChoisissez la forme que vous voulez reproduire parmi les suivantes :\n"
         << " a. ligne\n"
         << " b. cube plein\n"
         << " c. cube vide\n"
         << " d. triangle rectangle\n"
         << " e. quitter le programme\n\n";
	return toupper(saisirCharValide(msgSaisieChoix,"abcde"));
}

void ligne(char symbole, int repetition)
{
      for (int i = 0; i<repetition;i++)
        cout << symbole;
}

void cube(char symbole, int repetition)
{
      for (int i = 0; i<repetition;i++)   //repetition de ligne
      {
		ligne(symbole,repetition);  //20 fev mr
        cout << '\n';             //petit changement de ligne
      }
}

void cubeVide(char symbole, int repetition)
{
      for (int i = 0; i<repetition;i++)   //repetition de ligne
      {
        for (int j=0;j<repetition;j++)    //repetition de character
        {
          if (i>0 && i<repetition-1 && j>0 && j<repetition-1)
            cout << ' ';          //espace à l'interrieurs
          else
            cout << symbole;
        }
        cout << '\n';             //petit changement de ligne
      }
}

void triangle(char symbole, int repetition)
{
      for (int i = 0; i<repetition;i++)   //repetition de ligne
      {
        for (int j=0;j<=i;j++)    //se sert de i comme limite
          cout << symbole;
        cout << '\n';             //petit changement de ligne
      }
}
