program war_machine;

uses wincrt;

var   i,niveau_leader,Ajustement_intelligence,ajustement_sagesse,
      ajustement_charisme,pourcentage_niveau_titre,
      Leadership_factor,
      niveau_officiers,niveau_troupes,nombre_victoires,
      nombre_defaites,experience_factor,
      training_factor, semainesentrainementtroupes,
      semainesentrainementtroupesetleader,troupsonduty,
      equipement_factor, qualitearme, taux_de_base_force            :integer;



      secondearme, classedarmure, rep          :char;



procedure calcul_du_leadership_factor;

begin
writeln('* Leadership Factor');
write('     Niveau d''experience du Leader : ');
readln(niveau_leader);
write('     Ajustement intelligence du leader (langues additionelles) : ');
readln(ajustement_intelligence);
write('     Ajustement Sagesse du leader : ');
readln(ajustement_sagesse);
write('     Ajustement charisme du leader : ');
readln(ajustement_charisme);
write('     Pourcentage de la force au niveau titre (arrondi a un entier) : ');
readln(pourcentage_niveau_titre);
writeln('*********************************');
write('          Leadership Factor : ');
leadership_factor:=niveau_leader+ajustement_intelligence+ajustement_sagesse+ajustement_charisme+2*pourcentage_niveau_titre;
writeln(leadership_factor);
writeln('*********************************');
end;




procedure calcul_du_experience_factor;


begin
writeln('* Experience factor');
writeln('Note : Le facteur apporté par la presence d''Officiers');
writeln(' ne compte que s''il y a au moins un Officier pour 40');
writeln(' hommes de troupe');
write('     Niveau moyen des Officiers (somme des niv/nb d''Officiers) : ');
readln(niveau_officiers);
write('     Niveau moyen des troupes (somme des niv/nb d''hommes) : ');
readln(niveau_troupes);
writeln('     Nombre de victoires de l''armee dans les 10 annees passees');
write('      (represente l''habitude des hommes a se battre en groupe) : ');
readln(nombre_victoires);
write('     Nombre de defaites de l''armee dans les 10 annees passees : ');
readln(nombre_defaites);
if nombre_victoires>10 then nombre_victoires:=10;
if nombre_defaites>10 then nombre_defaites:=10;
experience_factor:=niveau_officiers*3+niveau_troupes*2+nombre_victoires-nombre_defaites;
writeln('************************************');
writeln('          Experience Factor : ',experience_factor);
writeln('************************************');

end;


procedure calcul_du_training_factor;

begin
writeln('NB : les troupes en entrainement coutent 2 fois plus cher...');
write('nombre de semaines d''entrainement dans l''annee ecoulee : ');
readln(semainesentrainementtroupes);
write('nombre de semaines d''entrainement avec le Leader dans l''annee ecoulee : ');
readln(semainesentrainementtroupesetleader);
writeln('nombre de mois pendant lesquels les troupes ont ete de garde pendant');
write('l''annee ecoulee (c''est a dire pas chez eux, mais a la caserne) : ');
readln(troupsonduty);
if semainesentrainementtroupes >20 then semainesentrainementtroupes:=20;
if semainesentrainementtroupesetleader>20 then semainesentrainementtroupesetleader:=20;
if troupsonduty >12 then troupsonduty :=12;

training_factor := semainesentrainementtroupes+semainesentrainementtroupesetleader+troupsonduty;
writeln('************************************');
writeln('          Training Factor : ',training_factor);
writeln('************************************');
end;


procedure calcul_du_equipement_factor;
begin
repeat
writeln('NB : arme normale : 1 ; arme 2 fois plus chere : 2 ; 3 fois plus chere : 3');
write('qualite de l''arme : ');
readln(qualitearme);
until (qualitearme>=1) and (qualitearme<=3);
repeat
write('les troupes ont elles une seconde arme de la meme qualite (o/n) : ');
readln(secondearme);
until (secondearme='o') or (secondearme='O') or (secondearme='n') or (secondearme='N');
repeat
write('les troupes ont elles une classe d''armure inferieure ou egale a 5 (o/n) : ');
readln(classedarmure);
until (classedarmure='o') or (classedarmure='O') or (classedarmure='n') or (classedarmure='N');

equipement_factor:=qualitearme*5;
if (secondearme='o') or (secondearme='O') then equipement_factor:=equipement_factor+5;
if (classedarmure='o') or (classedarmure='O') then equipement_factor:=equipement_factor+5;

writeln('************************************');
writeln('          Equipement Factor : ',equipement_factor);
writeln('************************************');

end;














begin
writeln('******************************************************');
writeln('War Machine By luc Mercury');
for i:=1 to 3 do writeln;
writeln('La personne commandant une armee est appellée Leader');
writeln('Les Officiers aident le Leader a controler l''armee');
writeln('Les chiffres sont tous arrondis a l''entier superieur');
writeln('******************************************************');
for i:=1 to 3 do writeln;
write('voulez vous calculer le taux de base de la force ? (o/n) : ');
readln(rep);
if (rep='o') or (rep='O') then
begin
writeln('Calcul du taux de base de la force');
calcul_du_leadership_factor;
calcul_du_experience_factor;
calcul_du_training_factor;
calcul_du_equipement_factor;
taux_de_base_force:=leadership_factor+experience_factor+training_factor+equipement_factor;
writeln('*****************************************');
writeln('          Taux de base de la force : ',taux_de_base_force);
writeln('*****************************************');
end
                else
begin
write('taux de base de la force : ');
readln(taux_de_base_force);
end;


end.
