Skip to content
This repository has been archived by the owner on May 17, 2024. It is now read-only.

Commit

Permalink
Création du jeu
Browse files Browse the repository at this point in the history
  • Loading branch information
Feelzor committed Jan 23, 2019
1 parent d683604 commit ed33517
Show file tree
Hide file tree
Showing 4 changed files with 127 additions and 12 deletions.
14 changes: 14 additions & 0 deletions p_combinaisons.adb
Original file line number Diff line number Diff line change
Expand Up @@ -304,5 +304,19 @@ package body p_combinaisons is
close(foutcont);
end fichiersInit;

procedure resultatExiste(fsol: in out text_io.file_type; sol: in string; resultat: out boolean) is
-- {fsol ouvert} => {resultat = true si sol est présent dans fsol}
tmp : string(1..15);
nb: integer;
begin
reset(fsol, IN_FILE);
loop
get_line(fsol, tmp, nb);
exit when end_of_file(fsol) or tmp(1..nb) = sol;
end loop;

resultat := tmp(1..nb) = sol;
end resultatExiste;


end p_combinaisons;
3 changes: 3 additions & 0 deletions p_combinaisons.ads
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,7 @@ package p_combinaisons is
-- {V est de taille 16} =>
-- {Génère Fout.txt et foutcont.txt contenant respectivement toutes les solutions et les solutions contigües}

procedure resultatExiste(fsol: in out text_io.file_type; sol: in string; resultat: out boolean);
-- {fsol ouvert} => {resultat = true si sol est présent dans fsol}

end p_combinaisons;
87 changes: 79 additions & 8 deletions p_vue_graph.adb
Original file line number Diff line number Diff line change
Expand Up @@ -188,19 +188,90 @@ package body p_vue_graph is
ChangerContenu(fen, "ChampNum", trim(Integer'image(combinaisonAct),BOTH));
changerTexte(fen, "Y", '/' & Integer'image(nbCombinaisons));
changerTexte(fen, "ZoneSolution", nouvelleSolution);
actualisationGraph(fen, ancienneSolution, nouvelleSolution);
affichageSol(fen, ancienneSolution, FL_COL1);
affichageSol(fen, nouvelleSolution, FL_WHEAT);
end actualisationInfos;

procedure actualisationGraph(fen: in out TR_Fenetre; combinaisonOld, combinaisonCurr: in string) is
-- {} => {Actualisation de la grille avec la nouvelle combinaison}
procedure affichageSol(fen: in out TR_Fenetre; combinaison: in string; coul: in FL_Color) is
-- {} => {Actualisation de la grille avec la solution de couleur coul}
begin
for i in 1..combinaisonOld'length/2 loop
changerCouleurFond(fen, combinaisonOld(i*2-1..i*2), FL_COL1);
for i in 1..combinaison'length/2 loop
changerCouleurFond(fen, combinaison(i*2-1..i*2), coul);
end loop;
end affichageSol;

for i in 1..combinaisonCurr'length/2 loop
changerCouleurFond(fen, combinaisonCurr(i*2-1..i*2), FL_WHEAT);
procedure debutJeu(fen: in out TR_Fenetre) is
-- {} => {Lance le jeu}
begin
nbCasesSolution := 0;
create(fichierJeu, IN_FILE, "solutionsTrouvees");
-- TODO: ouverture fenetre pseudo
end debutJeu;

function compterPoints return integer is
-- {} => {résultat = nombre de points du joueur}
sol: string(1..15);
nb: integer;
score : integer := 0;
begin
reset(fichierJeu, IN_FILE);
while not end_of_file(fichierJeu) loop
get_line(fichierJeu, sol, nb);
case nb/2 is
when 3 => score := score + 2;
when 4 => score := score + 1;
when 5 => score := score + 2;
when 6 => score := score + 3;
when 7 => score := score + 5;
when others => null;
end case;
end loop;
end;

return score;
end compterPoints;

procedure enregistrerScore(score: in TR_Score) is
-- {} => {le score a été enregistré dans le fichier de scores}
f: p_score_io.file_type;
begin
create(f, APPEND_FILE, "score");
write(f, score);
close(f);
end enregistrerScore;

procedure finJeu is
-- {} => {Finit le jeu}
begin
enregistrerScore((pseudo, compterPoints));
delete(fichierJeu);
-- TODO: fermer la fenêtre
end finJeu;

procedure verifSol(fen: in out TR_Fenetre; solution: in string) is
-- {} => {Vérifie si la solution est correcte}
estValide: boolean;
begin
if nbCasesSolution > 0 then
affichageSol(fen, dernier(1..nbCasesSolution*2), FL_COL1);
end if;
dernier := (others => ' ');
dernier(solution'range) := solution;
nbCasesSolution := solution'length / 2;

resultatExiste(fichierSolution, solution, estValide);
if estValide then -- la solution existe

resultatExiste(fichierJeu, solution, estValide);
if estValide then -- la solution n'a pas encore été découverte
affichageSol(fen, solution, FL_CHARTREUSE);
reset(fichierJeu, APPEND_FILE);
put_line(fichierJeu, solution);
else
affichageSol(fen, solution, FL_WHEAT);
end if;
else
affichageSol(fen, solution, FL_RED);
end if;
end verifSol;

end p_vue_graph;
35 changes: 31 additions & 4 deletions p_vue_graph.ads
Original file line number Diff line number Diff line change
@@ -1,27 +1,54 @@
with p_fenbase, p_combinaisons, text_io;
use p_fenbase, p_combinaisons, text_io;
with p_fenbase, p_combinaisons, text_io, Forms, sequential_IO;
use p_fenbase, p_combinaisons, text_io, Forms;

package p_vue_graph is
type TR_Score is record
pseudo: string(1..20);
score: integer;
end record;

package p_score_io is new sequential_IO(TR_Score); use p_score_io;

nbCasesSolution : integer;
nbCombinaisons : integer;
fichierSolution : text_io.file_type;
combinaisonAct : integer;

dernier : string(1..14);
fichierJeu : text_io.file_type;
pseudo: string(1..20);


procedure afficherGrille(fen: in out TR_Fenetre; x,y: in natural);
-- {} => {Affiche la grille avec le bord gauche à la position (x,y)}

procedure fenetreaccueil;
--{} => {Affiche la fenetre d'Accueil}

procedure appuiBoutonAccueil (Elem : in string; fenetre : in out TR_Fenetre);
--{} => {Affiche la fenetre Solutions}

procedure appuiBoutonSolution (Elem : in string; fenetre : in out TR_Fenetre);

procedure actualisationInfos(fen: in out TR_Fenetre; combinaisonOld: integer);
-- {} => {Actualisation des informations pour la solution nbSol}

procedure actualisationGraph(fen: in out TR_Fenetre; combinaisonOld, combinaisonCurr: in string);
-- {} => {Actualisation de la grille avec la nouvelle combinaison}
procedure debutJeu(fen: in out TR_Fenetre);
-- {} => {Lance le jeu}

function compterPoints return integer;
-- {} => {résultat = nombre de points du joueur}

procedure enregistrerScore(score: in TR_Score);
-- {} => {le score a été enregistré dans le fichier de scores}

procedure finJeu;
-- {} => {Finit le jeu}

procedure affichageSol(fen: in out TR_Fenetre; combinaison: in string; coul: in FL_Color);
-- {} => {Actualisation de la grille avec la solution de couleur coul}

procedure verifSol(fen: in out TR_Fenetre; solution: in string);
-- {} => {Vérifie si la solution est correcte}

end p_vue_graph;

0 comments on commit ed33517

Please sign in to comment.