Console
Clique sur « Exécuter » pour lancer le programme.
Aucune exécutionCtrl+Entrée : exécuter · Échap : arrêter
Code CoddyRun
@ procédure d'affichage d'une forme selon son code (1 = cercle, 2 = Carré, 3 = Triangle)
procédure dessinerForme(laToile, codeForme, posX, posY)
si codeForme = 1 alors
cercle(laToile, posX, posY, 20, #FF3366)
sinon si codeForme = 2 alors
rectangle(laToile, posX - 20, posY - 20, 40, 40, #3366FF)
sinon
polygone(laToile, posX, posY - 20, posX - 20, posY + 20, posX + 20, posY + 20, #33CC33)
fin si
fin procédure
@ Attribution aléatoire des formes aux 3 variables
forme1, forme2, forme3 est un nombre
forme1 vaut hasard(1, 3)
forme2 vaut hasard(1, 3)
tant que forme2 = forme1
forme2 vaut hasard(1, 3)
fin tant que
forme3 vaut 6 - forme1 - forme2
@ Attribution de valeurs aléatoires (entre 2 et 12)
val1, val2, val3 est un nombre
val1 vaut hasard(2, 12)
val2 vaut hasard(2, 12)
val3 vaut hasard(2, 12)
@ Calcul des 3 premières lignes
res1, res2, res3 est un nombre
res1 vaut val1 * 3
res2 vaut val1 + (val2 * 2)
res3 vaut val2 + (val3 * 2)
@ Construction aléatoire de la question (ligne 4)
q1, q2, q3 est un nombre
vQ1, vQ2, vQ3 est un nombre
q1 vaut hasard(1, 3)
q2 vaut hasard(1, 3)
q3 vaut hasard(1, 3)
// Association des valeurs aux formes tirées pour la question
si q1 = 1 alors
vQ1 vaut val1
sinon si q1 = 2 alors
vQ1 vaut val2
sinon
vQ1 vaut val3
fin si
si q2 = 1 alors
vQ2 vaut val1
sinon si q2 = 2 alors
vQ2 vaut val2
sinon
vQ2 vaut val3
fin si
si q3 = 1 alors
vQ3 vaut val1
sinon si q3 = 2 alors
vQ3 vaut val2
sinon
vQ3 vaut val3
fin si
@ Choix aléatoire de l'opérateur (+ ou x) pour la ligne 4
typeOp est un nombre
typeOp vaut hasard(1, 2)
symboleOp est un texte
totFinal est un nombre
si typeOp = 1 alors
symboleOp vaut "+"
totFinal vaut vQ1 + vQ2 + vQ3
sinon
symboleOp vaut "x"
totFinal vaut vQ1 + (vQ2 * vQ3)
fin si
@ Dessin sur la toile
maToile est une toile
dimension(maToile, 450, 450)
remplir(maToile, #F5F5F5)
// Ligne 1
appelle dessinerForme(maToile, forme1, 60, 60)
label(maToile, 100, 70, "+", #000000,24)
appelle dessinerForme(maToile, forme1, 160, 60)
label(maToile, 200, 70, "+", #000000,24)
appelle dessinerForme(maToile, forme1, 260, 60)
label(maToile, 300, 70, "=", #000000,24)
label(maToile, 340, 70, convertir_texte(res1), #000000, 24)
// Ligne 2
appelle dessinerForme(maToile, forme1, 60, 160)
label(maToile, 100, 170, "+", #000000,24)
appelle dessinerForme(maToile, forme2, 160, 160)
label(maToile, 200, 170, "+", #000000,24)
appelle dessinerForme(maToile, forme2, 260, 160)
label(maToile, 300, 170, "=", #000000,24)
label(maToile, 340, 170, convertir_texte(res2), #000000, 24)
// Ligne 3
appelle dessinerForme(maToile, forme2, 60, 260)
label(maToile, 100, 270, "+", #000000,24)
appelle dessinerForme(maToile, forme3, 160, 260)
label(maToile, 200, 270, "+", #000000,24)
appelle dessinerForme(maToile, forme3, 260, 260)
label(maToile, 300, 270, "=", #000000,24)
label(maToile, 340, 270, convertir_texte(res3), #000000, 24)
// Ligne 4 (Question)
appelle dessinerForme(maToile, q1, 60, 360)
label(maToile, 100, 370, "+", #000000,24)
appelle dessinerForme(maToile, q2, 160, 360)
label(maToile, 200, 370, symboleOp, #000000, 24)
appelle dessinerForme(maToile, q3, 260, 360)
label(maToile, 300, 370, "=", #000000,24)
label(maToile, 340, 370, "?", #FF0000, 24)
@ Affichage et saisie
affiche maToile
repUtilisateur est un nombre
repUtilisateur vaut - 1
tant que repUtilisateur <> totFinal
demande "Quelle est la valeur du point d'interrogation ?" dans repUtilisateur
si repUtilisateur = totFinal alors
couleur(#00AA00, "Gagné ! Excellente déduction.")
sinon
couleur(#FF0000, "Ce n'est pas ça, calcule bien la valeur de chaque forme !")
fin si
fin tant que