Précédente Accueil Remonter Suivante

MENU EXERCICES

Visual Basic for MS-DOS

 

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
 

 

 

Précédente Accueil Remonter Suivante