DECLARE SUB fleches (v%, h%, w$(), np%, r%, coul%, drap%, v2%, h3%)
DECLARE SUB attendre (tx!)
DECLARE SUB MousePoll (row%, col%, lButton%, rButton%)
DECLARE SUB cadre (v%, h%, l%, nli%, c%)
DECLARE SUB centre (v%, coul%, ph$)
DECLARE SUB getinvimouse (rr%)
DECLARE SUB titre (w$)
DECLARE SUB trouvemot (m$, m$(), nm%)
DECLARE SUB choixtexte (texte%, nbtextes%, nbparag%(), parag$(),
titr$())
DECLARE SUB afformate2 (m$(), nm%)
DECLARE SUB motpasse (f%)
DECLARE SUB titrenb (w$)
DECLARE SUB nbexo_moy (eleve%, moyenne$(), nombre$(),
niveauxfrancais1%(), niveauxfrancais2%(), niveauxmath1%(),
niveauxmath3%(), niveauxlecture%(), niveauxgeometrie%(), VarEnreg AS
ANY)
DECLARE SUB calmoy (t$(), moy$(), niveaux%())
DECLARE SUB flechesmenu (w$(), r%, coul%)
DEFINT A-Z
'Menu exercices
'Clerc Daniel 18/12/2007
'version 1.4.4
'variables globales
COMMON SHARED eleve, lecture$, rt$, li$, gg$, couleur, noir, bleu,
vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune,
blancbrill
' Inclut les fichiers contenant les déclarations relatives aux
procédures appelées.
'$INCLUDE: 'MOUSE.BI'
'$INCLUDE: 'VBDOS.BI'
SCREEN 9
SCREEN 0
CONST FALSE = 0
CONST TRUE = NOT FALSE
' Vérifie que le gestionnaire de souris est installé.
MouseInit
' Affiche le pointeur de la souris.
MouseShow
rt$ = CHR$(17) + CHR$(196) + CHR$(217)
gg$ = " " + CHR$(24) + " " + CHR$(25) + " puis " + rt$ + " "
gg2$ = " " + CHR$(24) + " " + CHR$(25) + " " + CHR$(27) + " " +
CHR$(26) + " puis " + rt$ + " "
programme$ = "menuexo" '===
TYPE TypeEnreg
nom AS STRING * 20
prenom AS STRING * 20
nbexo AS STRING * 21
divers AS STRING * 50
notes AS STRING * 3000
END TYPE
DIM VarEnreg AS TypeEnreg
DIM w$(21)
DIM niveauxmath1(21), niveauxmath3(21), niveauxfrancais1(21),
niveauxfrancais2(21), niveauxgeometrie(21), niveauxlecture(11)
DIM moyenne$(7), nombre$(7)
DIM act$(10), ac$(10)
couleur = 1
IF couleur = 1 THEN
noir = 0: bleu = 1: vert = 2: rouge = 4: marron = 6: blanc = 7:
vertclair = 10: cyanclair = 11: rougeclair = 12: jaune = 14:
blancbrill = 15
ELSE
noir = 0: bleu = 0: vert = 15: rouge = 7: marron = 7: blanc = 7:
vertclair = 15: cyanclair = 15: rougeclair = 15: jaune = 15:
blancbrill = 15
END IF
ON ERROR GOTO erreur '===
OPEN "pointeur.dat" FOR INPUT AS #1
INPUT #1, eleve, sens, couleur, texte, lecture$
CLOSE
DATA FRANCAIS Cycle 2,FRANCAIS Cycle 3,MATHS Cycle 2,MATHS Cycle
3,LECTURE Cycle 2,LECTURE Cycle 3,GEOMETRIE-MESURES,Fin
dat = 8
FOR i = 1 TO dat: READ act$(i): NEXT
DATA exo_fr1,exo_fr2,exo_ma1,exo_ma2,exo_le,exo_le,exo_ge
FOR i = 1 TO 7: READ ac$(i): NEXT
IF eleve <> 0 THEN
OPEN "fichier.dat" FOR RANDOM AS #1 LEN = LEN(VarEnreg)
GET #1, eleve, VarEnreg
nom$ = RTRIM$(VarEnreg.nom)
pre$ = RTRIM$(VarEnreg.prenom)
CLOSE
GOSUB init
CALL nbexo_moy(eleve, moyenne$(), nombre$(), niveauxfrancais1(),
niveauxfrancais2(), niveauxmath1(), niveauxmath3(),
niveauxlecture(), niveauxgeometrie(), VarEnreg)
FOR i = 1 TO 7
moyenne$(i) = LTRIM$(STR$(INT(VAL(moyenne$(i)))))
IF moyenne$(i) = "0" THEN moyenne$(i) = " "
NEXT
END IF
debut:
COLOR , bleu, noir: CLS : KEY OFF: LOCATE , , 0
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &H9F)'non numérique
POKE &H417, (PEEK(&H417) AND &HBF) 'minus
CALL cadre(7, 8, 64, 12, rouge)
l = 30
l3$ = SPACE$(l) + "│"
l4$ = STRING$(l, "─") + "┼" + STRING$(l + 1, "─")
l5$ = STRING$(l, "─") + "┬" + STRING$(l + 1, "─")
l6$ = STRING$(l, "─") + "┴" + STRING$(l + 1, "─")
COLOR blanc, rouge
h = 10
LOCATE 9, h: PRINT l5$
'LOCATE , h: PRINT l3$
FOR i = 1 TO 3
LOCATE , h: PRINT l3$
LOCATE , h: PRINT l4$
NEXT
LOCATE , h: PRINT l3$
LOCATE , h: PRINT l6$
IF eleve <> 0 THEN
COLOR , bleu
CALL centre(5, jaune, pre$ + " " + nom$)
COLOR jaune, rouge
LOCATE 8, 10: PRINT "Exo. Moy. Activités"; : LOCATE , 43: PRINT
"Exo. Moy. Activités"
'placer les moyennes genérales et le nombre de notes
COLOR , noir
v = 10
LOCATE v
FOR i = 1 TO 4
LOCATE v, 10
PRINT " "
LOCATE v, 13 - LEN(nombre$(i))
COLOR blancbrill
PRINT nombre$(i)
LOCATE v, 15
PRINT " "
LOCATE v, 17 - LEN(moyenne$(i))
m = VAL(moyenne$(i))
IF m > 7 THEN
COLOR vert
ELSEIF m > 4 THEN
COLOR jaune
ELSE
COLOR rougeclair
END IF
PRINT moyenne$(i)
v = v + 2
NEXT
v = 10
LOCATE v
FOR i = 5 TO 7
LOCATE v, 43
PRINT " "
LOCATE v, 46 - LEN(nombre$(i))
COLOR blancbrill
PRINT nombre$(i)
LOCATE v, 48
PRINT " "
LOCATE v, 50 - LEN(moyenne$(i))
m = VAL(moyenne$(i))
IF m > 7 THEN
COLOR vert
ELSEIF m > 4 THEN
COLOR jaune
ELSE
COLOR rougeclair
END IF
PRINT moyenne$(i)
v = v + 2
NEXT
ELSE
CALL centre(8, jaune, "Choix de l'activité")
END IF
COLOR , bleu
CALL centre(19, blanc, gg2$)
' (v%, h%, ll%, nm%, h3%, w$(), r, coul)
'CALL fleches2(12, 21, 4, dat, 43, act$(), act, rouge)
CALL flechesmenu(act$(), act, rouge)
SELECT CASE act
CASE 8, 0
LOCATE , , 0
COLOR , noir: CLS
RUN "menu"
CASE 5, 6
IF act = 5 THEN lecture$ = "fichier1.txt" ELSE lecture$ =
"fichier2.txt"
OPEN lecture$ FOR INPUT AS #1
'nbtextes
INPUT #1, nbtextes
IF nbtextes = 0 THEN
CLOSE
BEEP
CALL titre("Lecture")
CALL centre(10, rougeclair, "Il n'y a pas de texte")
CALL centre(14, jaune, "Vous allez devoir en introduire un ou
plusieurs.")
CALL centre(16, jaune, "-> Gestion des textes : option 'Ajouter'")
COLOR , noir
CALL centre(23, blanc, "Tapez " + rt$)
w$ = INPUT$(1)
COLOR , noir: CLS : RUN "gestion"
END IF
'titres$
FOR i = 1 TO nbtextes
LINE INPUT #1, titr$(i)
NEXT
'nbparag
FOR i = 1 TO nbtextes
INPUT #1, nbparag(i)
NEXT
'paragraphe$
FOR i = 1 TO nbtextes
FOR j = 1 TO nbparag(i)
LINE INPUT #1, parag$(i, j)
parag$(i, j) = LTRIM$(parag$(i, j))
parag$(i, j) = RTRIM$(parag$(i, j)) + " "
NEXT j
NEXT i
CLOSE
CALL choixtexte(texte, nbtextes, nbparag(), parag$(), titr$())
CASE 7 'géométrie
SCREEN 9
SCREEN 0
END SELECT
'quitter
LOCATE , , 0
OPEN "pointeur.dat" FOR OUTPUT AS #1
WRITE #1, eleve, 1, 1, texte, lecture$
CLOSE
COLOR , noir: CLS : RUN ac$(act)
END
init:
'data francais niveau 1
DATA Alphabet,1
DATA Orthographe,4
DATA Recolle le mot,3
DATA Devine le mot,3
DATA Trie les mots,2
DATA Mémorise les mots,3
DATA Cherche le mot,4
DATA Trouve l'intrus,2
DATA Copie un texte,4
DATA Sépare les mots,4
DATA Fabrique la phrase,2
DATA Phrase transformée,2
DATA Classe des mots,2
DATA Groupe des noms,2
DATA Féminin des noms,3
DATA Pluriel des noms,2
DATA Trouve le verbe,2
DATA Infinitif,2
DATA Passé Présent Futur,2
DATA Trouve le temps,2
DATA Conjugaison,4
FOR i = 1 TO 21: READ w$(i), niveauxfrancais1(i): NEXT
'data francais niveau 2
DATA Phrase éclatée,3
DATA Orthographe des mots,2
DATA Mot éclaté,4
DATA Tri des mots,2
DATA Nature des mots,3
DATA Homonymes,2
DATA Genre et nombre,2
DATA Ponctuation,3
DATA Accord du nom,4
DATA Accord des adjectifs,4
DATA Participe passé,2
DATA Accord part. passé,4
DATA Fonctions,2
DATA Infinitif,3
DATA Radical des verbes,2
DATA Groupe des verbes,2
DATA Temps des verbes,2
DATA Accord des verbes,2
DATA Temps simples,4
DATA Temps composés,4
DATA Intrus,3
FOR i = 1 TO 21: READ w$(i): READ niveauxfrancais2(i): NEXT
'data geometrie
DATA Droite-Gauche,3
DATA Verticale-Horizont,2
DATA Reconnaissance,3
DATA Figures simples,1
DATA Triangles,1
DATA Quadrilatères,1
DATA Vocabulaire,2
DATA Parallèle-Perpend,2
DATA Convexe-Concave,1
DATA Coordonnées,3
DATA Reproduction,4
DATA Frises,4
DATA Agrandir-Réduire,2
DATA Symétrie,4
DATA Périmètre-Aire,1
DATA Solides,2
DATA Nom des angles,1
DATA Valeur des angles,2
DATA Heures-Minutes,4
DATA Orthographe,3
DATA Intrus,2
FOR i = 1 TO 21: READ w$(i), niveauxgeometrie(i): NEXT
'data pour lecture niv 1 & 2
DATA Recopier,1
DATA Ecrire,1
DATA Séparer,1
DATA Recoller,1
DATA Deviner,1
DATA Compter,1
DATA Chercher,1
DATA Repérer,1
DATA Trouver,1
DATA Reconstituer,1
DATA Ponctuer,1
FOR i = 1 TO 11: READ w$(i), niveauxlecture(i): NEXT
'data pour math niv 1
DATA Décomposition,2
DATA Tables d'additions,4
DATA Tableau d'additions,4
DATA Additions,4
DATA Orthographe,2
DATA Valeur des chiffres,2
DATA Nombres en chiffres,3
DATA Nombres en lettres,3
DATA Nombres rangés,3
DATA Suite des nombres,2
DATA Avant - Après,3
DATA Tables de multi.,4
DATA Multiplications,4
DATA Soustractions,4
DATA Double des nombres,3
DATA Moitié des nombres,3
DATA Compter,4
DATA Heure et minutes,2
DATA Reproduction,2
DATA Frises,2
DATA Coordonnées,3
FOR i = 1 TO 21: READ w$(i), niveauxmath1(i): NEXT
'data pour math niveau 2
DATA Valeur des chiffres,2
DATA Tri des nombres,3
DATA Orthographe,2
DATA Nombres en lettres,3
DATA Nombres en chiffres,3
DATA Règle graduée,2
DATA Encadrement,2
DATA Chiffres romains,3
'calcul
DATA Additions,3
DATA Soustractions,3
DATA Tables de multi.,4
DATA Tableau de multi.,2
DATA Multiplications,4
DATA Divisions,4
DATA Calcul mental,3
DATA "Dix-cent-mille",4
DATA Moitié d'un nombre,3
DATA Nombre à trouver,4
DATA Fractions,2
DATA Mémorise,2
'problèmes
DATA Problèmes,3
FOR i = 1 TO 21: READ w$(i), niveauxmath3(i): NEXT
RETURN
erreur:
SCREEN 0
COLOR , bleu: CLS
BEEP
CALL cadre(8, 5, 70, 9, rouge)
COLOR , rouge
CALL centre(10, blanc, "ATTENTION")
IF ERR = 5 THEN
CALL centre(12, blancbrill, "Votre ordinateur ne possède pas de
carte graphique EGA ou VGA.")
CALL centre(14, blancbrill, "Les activités de GEOMETRIE et de
MESURES ne sont pas accessibles.")
COLOR , noir
CALL getinvimouse(w)
RUN
END IF
SELECT CASE ERR
CASE 71
CALL centre(12, blancbrill, "Disque non prêt")
CASE 70
CALL centre(12, blancbrill, "Disquette protégée")
CASE 53, 57, 72
CALL centre(12, blancbrill, "Problème sur le disque")
CASE 61
CALL centre(12, blancbrill, "Disque plein")
CASE 25, 26, 68
CALL centre(12, blancbrill, "Imprimante non prête")
CASE 27
CALL centre(12, blancbrill, "Imprimante sans papier")
CASE ELSE
CALL centre(12, blancbrill, "Erreur système n°" + LTRIM$(STR$(ERR)))
CALL centre(14, blancbrill, "Essayez de relancez le programme.")
CLOSE
w$ = INPUT$(1)
COLOR , noir: CLS
END
END SELECT
CALL centre(14, blancbrill, "Corrigez puis tapez " + rt$ + " [Echap]
= Fin")
CALL getinvimouse(r)
IF r = 27 THEN COLOR , noir: CLS : END
COLOR , bleu: CLS : RUN programme$
RESUME
DEFINT A-Z
SUB afformate2 (m$(), nm)
i = 1: l2 = 0
DO
l = LEN(m$(i))
l2 = l2 + l
IF l2 > 80 THEN
PRINT : i = i - 1: l2 = 0
ELSEIF l2 = 80 THEN
PRINT m$(i); : l2 = 0
ELSEIF l2 = 80 - 1 THEN
PRINT m$(i): l2 = 0
ELSE
PRINT m$(i); " "; : l2 = l2 + 1
END IF
i = i + 1
LOOP WHILE i <= nm
PRINT
END SUB
DEFINT A-Z
SUB attendre (tx!)
tx! = tx! * 2
debut! = TIMER
DO
fin! = TIMER
LOOP WHILE fin! - debut! < tx!
END SUB
DEFINT A-Z
SUB cadre (v%, h%, l%, nli%, c)
'c est l'intérieur
'le fond écran est bleu
v2 = v
'cadre
COLOR c, 1 'bleu
LOCATE v2, h
PRINT STRING$(l + 2, 220)
FOR i = 1 TO nli - 2
v2 = v2 + 1: LOCATE v2, h
PRINT STRING$(l + 2, 219)
NEXT
COLOR , 1 'bleu
LOCATE v2 + 1, h: PRINT CHR$(223)
COLOR , 0
LOCATE v + 1
FOR i = 1 TO nli - 1
LOCATE , h + l + 2
PRINT " "
NEXT
LOCATE v2 + 1, h + 1
PRINT STRING$(l + 1, 223)
END SUB
DEFINT A-Z
SUB cadrenb (v, h, l, nli)
COLOR blanc, noir
LOCATE v, h, 0: PRINT "┌"; STRING$(l, 196); "┐"
FOR i = 1 TO nli - 2
v = v + 1
LOCATE v, h
PRINT "│"; SPACE$(l); "│"
NEXT
LOCATE v + 1, h: PRINT "└"; STRING$(l, 196); "┘"
COLOR blancbrill
END SUB
DEFINT A-Z
SUB calmoy (t$(), moy$(), niveaux())
'29/3/95
debut = 1
FOR Valeur = 1 TO 21
fin = debut + (niveaux(Valeur) - 1)
GOSUB calcul
debut = fin + 1
NEXT
EXIT SUB
calcul:
tt = 0: nt = 0
FOR j = debut TO fin
IF t$(j) <> " " THEN tt = tt + VAL(t$(j)): nt = nt + 1
NEXT j
IF nt = 0 THEN moy$(Valeur) = "" ELSE moy$(Valeur) =
LTRIM$(STR$(INT(INT(tt / nt) * 10) / 10))
RETURN
END SUB
DEFINT A-Z
SUB centre (v, coul, ph$)
COLOR coul
LOCATE v, INT((41) - LEN(ph$) / 2): PRINT ph$
COLOR 15
END SUB
DEFINT A-Z
SUB choixtexte (texte, nbtextes, nbparag(), parag$(), titr$())
'11/10/96
DIM pp$(11), m$(400), p2$(2)
menutexte:
'choix du texte
CALL titre("Choix du texte")
v2 = 8
w$ = LTRIM$(STR$(nbtextes)) + " texte": IF nbtextes > 1 THEN w$ = w$
+ "s"
w$ = w$ + " dans la bibliothèque"
CALL centre(v2 - 3, jaune, w$)
FOR i = 1 TO nbtextes: pp$(i) = "Texte" + STR$(i): NEXT
COLOR cyanclair
FOR j = 1 TO nbtextes
LOCATE v2 - 1 + j, 16
PRINT pp$(j)
LOCATE v2 - 1 + j, 55 - LEN(STR$(nbparag(j)))
PRINT "("; MID$(STR$(nbparag(j)), 2); " parag.)"
NEXT j
COLOR blancbrill, noir
LOCATE 23, 1: PRINT "["; : COLOR jaune: PRINT "Echap"; : COLOR
blancbrill: PRINT "] = Fin"
LOCATE 23, 57: PRINT "["; : COLOR jaune: PRINT "*"; : COLOR
blancbrill: PRINT "] = Gestion des textes"
LOCATE 23, 31: COLOR blanc: PRINT gg$
COLOR , bleu
DO
v = v2
CALL fleches(8, 28, titr$(), nbtextes, texte, marron, 1, 23, 32)
IF texte = 42 THEN
'l'étoile
CALL motpasse(f)
IF f = 1 THEN
OPEN "pointeur.dat" FOR OUTPUT AS #1
WRITE #1, eleve, 1, 1, texte, lecture$
CLOSE
COLOR , noir: CLS : RUN "gestion"
ELSE
COLOR , noir: CLS : RUN "menuexo"
END IF
END IF
IF texte = 0 THEN COLOR , noir: CLS : RUN "menuexo"
LOOP WHILE texte = 0
' tester la longueur totale du texte
l = 0
FOR i = 1 TO nbparag(texte)
l = l + LEN(parag$(texte, i))
NEXT i
titr$ = titr$(texte) + " (texte " + LTRIM$(STR$(texte)) + ")"
CALL titre(titr$)
COLOR , bleu
nl = 16: LOCATE 2, 1
FOR ir = 1 TO nbparag(texte)
m$ = parag$(texte, ir)
IF nl < 6 THEN
COLOR , noir
nl = 16: CALL centre(23, blanc, "Tapez " + rt$)
CALL getinvimouse(r)
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)
VIEW PRINT 4 TO 18: COLOR , bleu: CLS 2: VIEW PRINT
LOCATE 2, 1
END IF
PRINT : PRINT
CALL trouvemot(m$, m$(), nm)
CALL afformate2(m$(), nm)
nl = nl - (INT(LEN(m$) / 80) + 2)
NEXT ir
'fin
LOCATE 23, 20: COLOR jaune, noir: PRINT "D'accord ? ";
p2$(1) = "oui"
p2$(2) = "non"
COLOR blanc, noir
LOCATE 23, 50: PRINT gg$
CALL fleches(22, 38, p2$(), 2, choix, noir, 0, 23, 50)
SELECT CASE choix
CASE 0, 2
GOTO menutexte
CASE 1
COLOR , noir: CLS
END SELECT
END SUB
DEFINT A-Z
SUB fleches (v, h, w$(), np, r, coul, drap, v2, h3)
'PRINT v2, h3
'v2 et h3 sont la ligne colonne des fleches
DIM p$(np)
souris = 0
LOCATE , , 0
FOR i = 1 TO np: p$(i) = w$(i): NEXT
l2 = 0
FOR i = 1 TO np
l1 = LEN(p$(i)): IF l2 < l1 THEN l2 = l1
NEXT
FOR i = 1 TO np
p$(i) = p$(i) + SPACE$(l2 - LEN(p$(i)))
NEXT
'souris
v_mini = v: v_maxi = v_mini + np - 1
h_mini = h - 1: h_maxi = LEN(p$(1)) + h_mini + 1
'LOCATE 22, 1: PRINT v_mini, v_maxi, h_mini, h_maxi '===
'cadre
IF drap = 1 THEN
CALL cadre(v - 1, h - 3, l2 + 4, np + 2, coul)
END IF
COLOR blancbrill, coul
LOCATE v
FOR i = 1 TO np
LOCATE , h - 1: PRINT " "; p$(i); " "
NEXT
vt = v - 1
LOCATE v, h - 1
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(1); " "
COLOR blancbrill, coul
DO
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &H9F)'non numérique
POKE 1050, PEEK(1052)
DEF SEG
DO
r$ = INKEY$
' Obtient l'emplacement de la souris et l'état des boutons.
MousePoll v_mouse, h_mouse, lButton, rButton
'LOCATE 21, 1: PRINT "Position de la souris : "; v_mouse; ", ";
h_mouse '===
IF lButton THEN
IF v_mouse >= v_mini AND v_mouse <= v_maxi THEN
IF h_mouse >= h_mini AND h_mouse <= h_maxi THEN
LOCATE v_mini
FOR i = 1 TO np
LOCATE , h_mini: PRINT " "; p$(i); " "
NEXT
calcul = v_mouse - v_mini + 1
LOCATE v_mouse, h_mini
COLOR coul, blancbrill
PRINT " "; p$(calcul); " "
CALL attendre(.3)
r = calcul
EXIT SUB
ELSE
BEEP
END IF
ELSEIF v_mouse = v2 AND h_mouse = h3 THEN
rr = 72 'fleche haut
souris = 1
CALL attendre(.2)
EXIT DO
ELSEIF v_mouse = v2 AND h_mouse = h3 + 2 THEN
rr = 80 'fleche bas
souris = 1
CALL attendre(.2)
EXIT DO
ELSEIF v_mouse = v2 AND (h_mouse >= h3 + 9 AND h_mouse <= h3 + 11)
THEN
rr = 13
souris = 1
CALL attendre(.3)
EXIT DO
ELSEIF v_mouse = 23 AND (h_mouse >= 1 AND h_mouse <= 13) THEN
rr = 27
souris = 1
CALL attendre(.3)
EXIT DO
ELSEIF v_mouse = 23 AND (h_mouse >= 57 AND h_mouse <= 80) THEN
rr = 42 'l'étoile *
souris = 1
CALL attendre(.3)
EXIT DO
ELSE
BEEP
END IF
END IF
LOOP WHILE r$ = ""
IF souris = 0 AND LEN(r$) < 2 THEN
rr = ASC(r$)
ELSEIF souris = 0 THEN
rr = ASC(RIGHT$(r$, 1))
END IF
SELECT CASE rr
CASE 27
r = 0: EXIT SUB
CASE 42, 36, 56, 230, 43
r = 42: EXIT SUB
END SELECT
LOCATE v, h - 1: PRINT " "; p$(v - vt); " "
IF rr = 72 THEN v = v - 1: IF v = vt THEN v = vt + np
IF rr = 80 THEN v = v + 1: IF v = vt + np + 1 THEN v = vt + 1
LOCATE v, h - 1
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(v - vt); " "
COLOR blancbrill, coul
LOOP WHILE rr <> 13
r = v - vt
COLOR blancbrill
END SUB
DEFINT A-Z
SUB flechesmenu (w$(), r, coul)
nm = 8
DIM p$(nm)
CONST gauche = 75, droite = 77, bas = 80, haut = 72
h1 = 20: h3 = 53
'on met des espaces à la fin
FOR i = 1 TO nm
p$(i) = w$(i)
NEXT
GOSUB afficheliste
l2 = 0
FOR i = 1 TO nm
l1 = LEN(p$(i)): IF l2 < l1 THEN l2 = l1
NEXT
FOR i = 1 TO nm
p$(i) = p$(i) + SPACE$(l2 - (LEN(p$(i))))
NEXT
'+++
h = h1: v = 10
r = 1
DO
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
LOCATE v, h - 1
PRINT " "; p$(r); " "
COLOR blancbrill, coul
hh = h: vv = v
'fleches
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &H9F)'non numérique
POKE &H417, (PEEK(&H417) AND &HBF) 'minus
POKE 1050, PEEK(1052)
DEF SEG
souris = 0
DO
r$ = INKEY$
' Obtient l'emplacement de la souris et l'état des boutons.
MousePoll v_mouse, h_mouse, lButton, rButton
'LOCATE 23, 1: PRINT "Position de la souris : "; v_mouse; ", ";
h_mouse '===
IF lButton THEN
IF v_mouse = 19 THEN
IF h_mouse = 33 THEN
'fleche haut
rr = haut
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse = 35 THEN
'fleche bas
rr = bas
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse = 37 THEN
'fleche gauche
rr = gauche
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse = 39 THEN
'fleche droite
rr = droite
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse >= 46 AND h_mouse <= 48 THEN
'entree
r$ = CHR$(13)
CALL attendre(.3)
souris = 0
EXIT DO
ELSE
BEEP
END IF
ELSEIF v_mouse = 10 THEN
IF h_mouse >= 19 AND h_mouse <= 38 THEN
'francais I
GOSUB afficheliste
r = 1
LOCATE v_mouse, 19
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSEIF h_mouse >= 52 AND h_mouse <= 71 THEN
'lecture I
GOSUB afficheliste
r = 5
LOCATE v_mouse, 52
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSE
BEEP
END IF
ELSEIF v_mouse = 12 THEN
IF h_mouse >= 19 AND h_mouse <= 38 THEN
'francais cm
GOSUB afficheliste
r = 2
LOCATE v_mouse, 19
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSEIF h_mouse >= 52 AND h_mouse <= 71 THEN
'lecture cm
GOSUB afficheliste
r = 6
LOCATE v_mouse, 52
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSE
BEEP
END IF
ELSEIF v_mouse = 14 THEN
IF h_mouse >= 19 AND h_mouse <= 38 THEN
'math I
GOSUB afficheliste
r = 3
LOCATE v_mouse, 19
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSEIF h_mouse >= 52 AND h_mouse <= 71 THEN
'géométrie
GOSUB afficheliste
r = 7
LOCATE v_mouse, 52
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSE
BEEP
END IF
ELSEIF v_mouse = 16 THEN
IF h_mouse >= 19 AND h_mouse <= 38 THEN
'math cm
GOSUB afficheliste
r = 4
LOCATE v_mouse, 19
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSEIF h_mouse >= 52 AND h_mouse <= 71 THEN
'fin
GOSUB afficheliste
r = 8
LOCATE v_mouse, 52
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSE
BEEP
END IF
ELSE
BEEP
END IF
END IF
LOOP WHILE r$ = ""
IF souris = 0 AND LEN(r$) < 2 THEN
rr = ASC(r$)
ELSEIF souris = 0 THEN
rr = ASC(RIGHT$(r$, 1))
END IF
SELECT CASE rr
CASE gauche
h = h - (h3 - h1)
IF h < h1 THEN
v = v - 2: h = h3
END IF
IF v < 10 THEN
v = 16
END IF
CASE droite
h = h + (h3 - h1)
IF h > h3 THEN
v = v + 2: h = h1
END IF
IF v > 16 THEN
v = 10
END IF
CASE bas
v = v + 2
IF v > 16 THEN
IF h = h1 THEN
h = h3: v = 10
ELSEIF h = h3 THEN
h = h1: v = 10
END IF
END IF
CASE haut
v = v - 2
IF v < 10 THEN
IF h = h3 THEN
h = h1: v = 16
ELSEIF h = h1 THEN
h = h3: v = 16
END IF
END IF
CASE 13
GOSUB calculr
EXIT SUB
CASE 27
r = 0
EXIT SUB
END SELECT
COLOR blancbrill, coul
LOCATE vv, hh - 1
PRINT " "; p$(r); " "
GOSUB calculr
LOOP
EXIT SUB
calculr:
SELECT CASE v
CASE 10
IF h = h1 THEN r = 1 ELSE r = 5
CASE 12
IF h = h1 THEN r = 2 ELSE r = 6
CASE 14
IF h = h1 THEN r = 3 ELSE r = 7
CASE 16
IF h = h1 THEN r = 4 ELSE r = 8
END SELECT
RETURN
afficheliste:
COLOR blancbrill, coul
LOCATE 10
FOR i = 1 TO 4
LOCATE , h1 - 1: PRINT " "; p$(i); " ": PRINT
NEXT
LOCATE 10
FOR i = 5 TO 8
LOCATE , h3 - 1: PRINT " "; p$(i); " ": PRINT
NEXT
RETURN
END SUB
DEFINT A-Z
SUB getinvimouse (rr%)
DEF SEG = 0
POKE 1050, PEEK(1052)
DEF SEG
DO
r$ = INKEY$
' Obtient l'emplacement de la souris et l'état des boutons.
MousePoll v_mouse, h_mouse, lButton, rButton
IF lButton THEN
r$ = CHR$(13)
CALL attendre(.5)
END IF
LOOP WHILE r$ = ""
IF LEN(r$) < 2 THEN rr = ASC(r$) ELSE rr = ASC(RIGHT$(r$, 1))
END SUB
DEFINT A-Z
SUB motpasse (f)
DIM w$(6)
f = 1
END SUB
DEFINT A-Z
SUB nbexo_moy (eleve, moyenne$(), nombre$(), niveauxfrancais1(),
niveauxfrancais2(), niveauxmath1(), niveauxmath3(),
niveauxlecture(), niveauxgeometrie(), VarEnreg AS TypeEnreg)
DIM t$(100), moy$(21), no$(11, 10)
OPEN "fichier.dat" FOR RANDOM AS #1 LEN = LEN(VarEnreg)
GET #1, eleve, VarEnreg
'francais 1++++++++++++++++++++++++++++++++
'francais niv 1 est en 1°
nombre$(1) = LTRIM$(STR$(VAL(MID$(VarEnreg.nbexo, 1, 3))))
resultat$ = MID$(VarEnreg.notes, 1, 400)
j = 1
FOR i = 1 TO 200 STEP 2
t$(j) = MID$(resultat$, i, 2)
j = j + 1
NEXT
CALL calmoy(t$(), moy$(), niveauxfrancais1())
'moy générale
tt = 0: nt = 0
FOR j = 1 TO 21
IF moy$(j) <> "" THEN tt = tt + VAL(moy$(j)): nt = nt + 1
NEXT j
IF nt = 0 THEN moyenne$(1) = " " ELSE moyenne$(1) =
LTRIM$(STR$(INT((tt / nt) * 10) / 10))
'francais 2++++++++++++++++++++++++++++++++
'francais est en 2°
nombre$(2) = LTRIM$(STR$(VAL((MID$(VarEnreg.nbexo, 4, 3)))))
resultat$ = MID$(VarEnreg.notes, 401, 400)
j = 1
FOR i = 1 TO 200 STEP 2
t$(j) = MID$(resultat$, i, 2)
j = j + 1
NEXT
CALL calmoy(t$(), moy$(), niveauxfrancais2())
'moy générale
tt = 0: nt = 0
FOR j = 1 TO 21
IF moy$(j) <> "" THEN tt = tt + VAL(moy$(j)): nt = nt + 1
NEXT j
IF nt = 0 THEN moyenne$(2) = " " ELSE moyenne$(2) =
LTRIM$(STR$(INT((tt / nt) * 10) / 10))
'math 1 ++++++++++++++++++++++++++++++++
'math niv 1 est en 3°
nombre$(3) = LTRIM$(STR$(VAL(MID$(VarEnreg.nbexo, 7, 3))))
resultat$ = MID$(VarEnreg.notes, 801, 400)
j = 1
FOR i = 1 TO 200 STEP 2
t$(j) = MID$(resultat$, i, 2)
j = j + 1
NEXT
CALL calmoy(t$(), moy$(), niveauxmath1())
'moy générale
tt = 0: nt = 0
FOR j = 1 TO 21
IF moy$(j) <> "" THEN tt = tt + VAL(moy$(j)): nt = nt + 1
NEXT j
IF nt = 0 THEN moyenne$(3) = " " ELSE moyenne$(3) =
LTRIM$(STR$(INT((tt / nt) * 10) / 10))
'math 2 ++++++++++++++++++++++++++++++++
'math niv 2 en 4°
nombre$(4) = LTRIM$(STR$(VAL(MID$(VarEnreg.nbexo, 10, 3))))
resultat$ = MID$(VarEnreg.notes, 1201, 400)
j = 1
FOR i = 1 TO 200 STEP 2
t$(j) = MID$(resultat$, i, 2)
j = j + 1
NEXT
CALL calmoy(t$(), moy$(), niveauxmath3())
'moy générale
tt = 0: nt = 0
FOR j = 1 TO 21
IF moy$(j) <> "" THEN tt = tt + VAL(moy$(j)): nt = nt + 1
NEXT j
IF nt = 0 THEN moyenne$(4) = " " ELSE moyenne$(4) =
LTRIM$(STR$(INT((tt / nt) * 10) / 10))
'geometrie ++++++++++++++++++++++++++++++++
'géométrie en 5°
nombre$(7) = LTRIM$(STR$(VAL(MID$(VarEnreg.nbexo, 13, 3))))
resultat$ = MID$(VarEnreg.notes, 1601, 400)
j = 1
FOR i = 1 TO 200 STEP 2
t$(j) = MID$(resultat$, i, 2)
j = j + 1
NEXT
CALL calmoy(t$(), moy$(), niveauxgeometrie())
'moy générale
tt = 0: nt = 0
FOR j = 1 TO 21
IF moy$(j) <> "" THEN tt = tt + VAL(moy$(j)): nt = nt + 1
NEXT j
IF nt = 0 THEN moyenne$(7) = " " ELSE moyenne$(7) =
LTRIM$(STR$(INT((tt / nt) * 10) / 10))
'lecture 1 ++++++++++++++++++++++++++++++++
'lecture niv 1 est en 6° position
nombre$(5) = LTRIM$(STR$(VAL(MID$(VarEnreg.nbexo, 16, 3))))
resultat$ = MID$(VarEnreg.notes, 2001, 400)
'possibilité de 20 exercices enregistré sur 10 (2 caractères)
j = 1
FOR i = 1 TO 400 STEP 40 '(10 textes)
t$(j) = MID$(resultat$, i, 40)
j = j + 1
NEXT
FOR text = 1 TO 10
pointeur = 1
FOR matier = 1 TO 11
no$(matier, text) = MID$(t$(text), pointeur, 2)
pointeur = pointeur + 2
NEXT matier
NEXT text
'moyenne générale
tt = 0: nt = 0
FOR i = 1 TO 10
FOR j = 1 TO 11
IF no$(j, i) <> " " THEN tt = tt + VAL(no$(j, i)): nt = nt + 1
NEXT j
NEXT i
IF tt <> 0 THEN moyenne$(5) = LTRIM$(STR$(INT((tt / nt) * 10) / 10))
ELSE moyenne$(5) = " "
'lecture 2 ++++++++++++++++++++++++++++++++
'lecture niv 2 est en 7° position
nombre$(6) = LTRIM$(STR$(VAL(MID$(VarEnreg.nbexo, 19, 3))))
resultat$ = MID$(VarEnreg.notes, 2401, 400)
'possibilité de 20 exercices enregistré sur 10 (2 caractères)
j = 1
FOR i = 1 TO 400 STEP 40 '(10 textes)
t$(j) = MID$(resultat$, i, 40)
j = j + 1
NEXT
FOR text = 1 TO 10
pointeur = 1
FOR matier = 1 TO 11
no$(matier, text) = MID$(t$(text), pointeur, 2)
pointeur = pointeur + 2
NEXT matier
NEXT text
'moyenne générale
tt = 0: nt = 0
FOR i = 1 TO 10
FOR j = 1 TO 11
IF no$(j, i) <> " " THEN tt = tt + VAL(no$(j, i)): nt = nt + 1
NEXT j
NEXT i
IF tt <> 0 THEN moyenne$(6) = LTRIM$(STR$(INT((tt / nt) * 10) / 10))
ELSE moyenne$(6) = " "
CLOSE
END SUB
DEFINT A-Z
SUB titre (w$)
IF couleur = 0 THEN CALL titrenb(w$): EXIT SUB
COLOR , noir: CLS
COLOR , vert
LOCATE 3, 1: PRINT SPACE$(80)
CALL centre(3, noir, w$)
LOCATE 21, 1: PRINT SPACE$(80)
VIEW PRINT 4 TO 20: COLOR blancbrill, bleu: CLS 2: VIEW PRINT
END SUB
DEFINT A-Z
SUB titrenb (w$)
COLOR , noir: CLS
CALL centre(1, blanc, w$)
LOCATE 2: COLOR blancbrill: PRINT STRING$(80, 196)
LOCATE 21, 1: PRINT STRING$(80, 196)
VIEW PRINT 3 TO 20: CLS 2: VIEW PRINT
END SUB
DEFINT A-Z
SUB trouvemot (m$, m$(), nm)
jl = 1: mm$ = ""
FOR il = 1 TO LEN(m$)
mm$ = mm$ + MID$(m$, il, 1)
IF ASC(MID$(m$, il, 1)) = 32 THEN m$(jl) = MID$(mm$, 1, LEN(mm$) -
1): mm$ = "": jl = jl + 1: IF LEN(m$(jl - 1)) = 0 THEN jl = jl - 1
NEXT
nm = jl - 1
END SUB
|