Bonjour,
dans le cadre d'un projet universitaire, nous devons coder le jeu des batons (issu de fort-Boyard), le but étant de faire en sorte que l'adversaire retire le dernier baton. Pour cela nous devons proposer le choix du nombre de baton total, et le nombre de baton que l'on peut retirer à chaque tours.
Pour l'instant, je me suis fixer 20 batons. J'ai réussi à afficher les 20 batons avec ce code ci :
Je souhaiterai maintenant faire en sorte qu'à chaque fois que l'on clique dans le fenêtre, un baton s'enlève. Pour moi il y a deux solutions : soit je "repasse" sur mes rectangles en retraçant exactement au même endroit des rectangles blancs. L'autre solution est de faire : clear graph afin de repartir d'une fenêtre vierge, et de regénérer à chaque clic mes batons, en en enlevant un à chaque fois (j'espère être clair ^^).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 let rec batongenerateur (_ : unit) : unit = Graphics.set_color (Graphics.rgb 23 101 125); for i=1 to 20 do Graphics.fill_rect (50*i+20) 200 5 200; done;; batongenerateur();;
J'ai choisit la première solution, la deuxième me semble un peu lourde.
Voilà ce que j'ai fait :
Voici le code présent au départ :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 let enleverbaton (_ : unit) : unit = Graphics.set_color (255 255 255); let s = Graphics.wait_next_event [Graphics.Button_down] in if ((s.Graphics.Button) && (rang<20)) then Graphics.fill_rect (50*!rang+20) 200 5 200; rang:= !rang+1;;
Ce que j'ai fait ne marche pas, j'ai une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #load "graphics.cma";; Graphics.open_graph " 1100x600";; Graphics.set_window_title "Test";; let rang =ref 1;;
enleverbaton() unbound value.
Je sais que ma fonction enleverbaton est incomplète, mais je ne vois pas si je dois utiliser une boucle for avec un if qui vérifie si il y a un clic à l'intérieur de ma fenêtre, ou bien utiliser la récursivité, ou les deux. Bref !
Si vous savez comment faire, je suis preneur d'éléments de réponses pour avancer !
Partager