Précédente Accueil Remonter Suivante

FRANCAIS 2

Visual Basic for MS-DOS

 

 

DECLARE SUB bilan (ma$(), niveaux%(), eleve%, VarEnreg AS ANY, serie$())
DECLARE SUB fleches (v%, h%, w$(), np%, r%, coul%, drap%, v2%, h3%)
DECLARE SUB flechesmenu (w$(), r%, coul%)
DECLARE SUB lettres (x%, y%)
DECLARE SUB niveau (r%, np%)
DECLARE SUB titre ()
DECLARE SUB tableauexo (p$())
DECLARE SUB getinvimouse (rr%)
DECLARE SUB accordv (re%, ni%, t$(), p$(), v$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB conjtc (re%, ni%, PM$(), PF$(), vv$(), pp$(), AUX$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB groupev (re%, ni%, n$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB infinitif (re%, ni%, inf$(), inf2$(), conj$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB radical (re%, ni%, v$(), pp$(), G1$(), G2$(), G3$(), G4$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB recolle (re%, ni%, rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB accopp (re%, ni%, SU$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB fonction (re%, ni%, rt$, gg$, gg2$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB nature (re%, ni%, m$(), mbis$(), rt$, gg$, gg2$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB partpas (re%, ni%, v$(), pp$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB ponctuation (re%, ni%, rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB classement (re%, ni%, mo2$(), mo17$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB conjts (re%, ni%, pp$(), v$(), te$(), E$(), a$(), AL$(), rr$(), SP$(), f$(), b$(), ve$(), IM$(), FU$(), w$(), k$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB gennom (re%, ni%, n$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB intrus (re%, ni%, intrusvoca$(), intrusgram$(), intrusconj$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB ortho (re%, ni%, eleve%, serie$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB pluriel (re%, ni%, n$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB pluriel2 (ni%, re%, rt$, gg2$, pre$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB tempsv (re%, ni%, h%(), l%(), s%(), ppf%(), sc%(), rt$, gg$, gg2$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB accoadj (re%, ni%, adj$(), mp$(), fs$(), fp$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB accoadj2 (ni%, re%, rt$, gg2$, pre$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB accordpp4 (ni%, re%, rt$, gg2$, pre$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB accpartpasse2 (re%, ni%, rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB homonymes (re%, ni%, rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB cadre (v%, h%, l%, nli%, c%)
DECLARE SUB quitter (x%, y%)
DECLARE SUB ouinon (r$)
DECLARE SUB attendre (tx!)
DECLARE SUB calmoy (t$(), moy$(), niveaux%())
DECLARE SUB centre (v%, coul%, ph$)
DECLARE SUB convertir (z$)
DECLARE SUB entree (x%, y%, drapeau%)
DECLARE SUB trouvephrase (re%, ni%, rt$, gg$, gg2$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'EXO bibliothèque
'AAS FRANCAIS cycle 3
'Daniel CLERC 18/12/2007
'version 1.4.3

'===l'enregistrement des notes d'orth se fait à partir de 201 dans le fichier
' DATA Soleil,Mercure,Vénus,Terre,Mars,Jupiter,Saturne,Uranus,Neptune,Pluton
' DATA Paris,Bordeaux,Lyon,Marseille,Strasbourg,Grenoble,Brest,Lille,Nantes,Rennes

DEFINT A-Z

'variables globales
COMMON SHARED ni, rt$, gg$, gg2$, pre$, titr$, prog, eleve, fichier$, 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

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$

programme2$ = "menuexo" '===

ON ERROR GOTO erreur ' ===

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

ma = 21
DIM moy$(ma), niveaux(ma), t$(100), p$(ma), mo2$(60), mo3$(37), mo4$(41)
DIM mo6$(70), mo7$(47), mo10$(49), mo11$(10), mo12$(10), mo13$(10)
DIM mo14$(22), mo15$(48), mo16$(48), mo17$(60), mo18$(30)
DIM pp$(2, 2, 3), v$(15), E$(2, 3), a$(2, 3), AL$(2, 3), rr$(2, 3), te$(2, 3)
DIM SP$(2, 3), f$(2, 3), b$(2, 3), ve$(2, 3), FU$(2, 3), IM$(2, 3), w$(2, 3), k$(2, 3)
DIM vb$(20), PPa$(6), G1$(6), G2$(6), G3$(6), G4$(6), n$(60)
DIM h3(36), l2(36), t2(36), ppf(36), sc(36) 'temps verbes
DIM t2$(3, 3, 6), per$(6), veb$(24), PM$(6), PF$(6), vv$(20), p2$(20), AUX$(6, 4, 2)
DIM inf$(30), inf2$(15), conj$(30), intrusvoca$(97), intrusgram$(100), intrusconj$(96) 'intrus
DIM serie$(20) 'pour orth

OPEN "pointeur.dat" FOR INPUT AS #1
INPUT #1, eleve, sens, couleur, texte, lecture$
CLOSE
OPEN "pointeur.dat" FOR OUTPUT AS #1
WRITE #1, eleve, 2, 1, texte, lecture$
CLOSE

noir = 0: bleu = 1: vert = 2: rouge = 4: marron = 6: blanc = 7: vertclair = 10: cyanclair = 11: rougeclair = 12: jaune = 14: blancbrill = 15

COLOR , noir, noir: CLS
KEY OFF: LOCATE , , 0
GOSUB init
RANDOMIZE TIMER

IF sens = 1 AND eleve > 0 THEN
CALL bilan(p$(), niveaux(), eleve, VarEnreg, serie$())
END IF

menuprincipal:
MouseInit
MouseShow

COLOR , bleu, noir: CLS

IF eleve <> 0 THEN
'lecture des notes
OPEN "fichier.dat" FOR RANDOM AS #1 LEN = LEN(VarEnreg)
GET #1, eleve, VarEnreg
nom$ = RTRIM$(VarEnreg.nom)
pre$ = RTRIM$(VarEnreg.prenom)
'francais est en 2°
nbexo$ = LTRIM$(STR$(VAL(MID$(VarEnreg.nbexo, 4, 3))))
resultat$ = MID$(VarEnreg.notes, 401, 400)
CLOSE
j = 1
FOR i = 1 TO nbniveaux * 2 STEP 2
t$(j) = MID$(resultat$, i, 2)
j = j + 1
NEXT

'pour orth
j = 1
FOR i = 201 TO 240 STEP 2 '20 positions pour séries orth
serie$(j) = MID$(resultat$, i, 2)
IF VAL(serie$(j)) > 10 THEN serie$(j) = "10" '===
j = j + 1
NEXT

CALL calmoy(t$(), moy$(), niveaux())

END IF

IF VAL(nbexo$) > 1 THEN
COLOR jaune
z$ = RTRIM$(nbexo$) + " exercices"
LOCATE 4, 79 - LEN(z$): PRINT z$
END IF
LOCATE 4, 2
COLOR jaune
IF eleve <> 0 THEN
w$ = pre$ + " " + nom$
IF LEN(w$) > 17 THEN
PRINT nom$
ELSE
PRINT w$
END IF
END IF

CALL tableauexo(p$())

IF eleve <> 0 THEN
'affiche éval sur trois colonnes

COLOR , noir
debut = 1: fin = 7: h = 4

FOR boucle = 1 TO 3
LOCATE 7
FOR i = debut TO fin
LOCATE , h
IF moy$(i) = "" THEN
PRINT " ": PRINT
ELSEIF (VAL(moy$(i)) = 9 OR VAL(moy$(i)) = 10) THEN
COLOR vertclair: PRINT "A": PRINT
ELSEIF (VAL(moy$(i)) = 7 OR VAL(moy$(i)) = 8) THEN
COLOR vert: PRINT "B": PRINT
ELSEIF (VAL(moy$(i)) = 6 OR VAL(moy$(i)) = 5) THEN
COLOR jaune: PRINT "C": PRINT
ELSE
COLOR rougeclair: PRINT "D": PRINT
END IF
COLOR blancbrill
NEXT
debut = fin + 1: fin = fin + 7: IF fin > ma THEN fin = ma
h = h + 26
NEXT boucle

END IF

CALL flechesmenu(p$(), prog, rouge)

IF prog = 0 THEN
COLOR , bleu
LOCATE 22, 1: PRINT SPACE$(80)
LOCATE 22, 28
COLOR blanc: BEEP: PRINT "Quitter ";
CALL ouinon(r$)
IF r$ = "O" THEN GOTO fin
GOTO menuprincipal
END IF

IF prog = 42 THEN
CALL bilan(p$(), niveaux(), eleve, VarEnreg, serie$())
GOTO menuprincipal
END IF

COLOR , noir: CLS
titr$ = p$(prog): ni = 1

'valeur de la matière
mat = 0
FOR i = 1 TO prog - 1
mat = mat + niveaux(i)
NEXT

SELECT CASE prog

CASE 1
CALL trouvephrase(re, ni, rt$, gg$, gg2$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 2
CALL ortho(re, ni, eleve, serie$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 3
CALL recolle(re, ni, rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 4
CALL classement(re, ni, mo2$(), mo17$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 5
CALL nature(re, ni, mo3$(), mo18$(), rt$, gg$, gg2$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 6
CALL homonymes(re, ni, rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 7
CALL gennom(re, ni, mo4$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 8
CALL ponctuation(re%, ni%, rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 9
CALL titre
CALL niveau(ni, 4)
SELECT CASE ni
CASE 1, 2
CALL pluriel(re, ni, mo7$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
CASE 3, 4
CALL pluriel2(ni, re%, rt$, gg2$, pre$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
END SELECT

CASE 10
titr$ = "Accord de l'adjectif"
CALL titre
CALL niveau(ni, 4)
SELECT CASE ni
CASE 1, 2, 3
CALL accoadj(re, ni, mo10$(), mo11$(), mo12$(), mo13$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
CASE 4
CALL accoadj2(ni, re%, rt$, gg2$, pre$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
END SELECT

CASE 11
CALL partpas(re, ni, mo15$(), mo16$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 12
titr$ = "Accord du participe passé"
CALL titre
CALL niveau(ni, 4)
SELECT CASE ni
CASE 1
CALL accopp(re, ni, mo14$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
CASE 2, 3
CALL accpartpasse2(re%, ni%, rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
CASE 4
CALL accordpp4(ni, re%, rt$, gg2$, pre$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
END SELECT

CASE 13
CALL fonction(re, ni, rt$, gg$, gg2$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 14
CALL infinitif(re, ni, inf$(), inf2$(), conj$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 15
CALL radical(re, ni, vb$(), PPa$(), G1$(), G2$(), G3$(), G4$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 16
CALL groupev(re, ni, n$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 17
CALL tempsv(re, ni, h3%(), l2%(), t2%(), ppf%(), sc%(), rt$, gg$, gg2$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 18
CALL accordv(re, ni, t2$(), per$(), veb$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 19
CALL conjts(re, ni, pp$(), v$(), te$(), E$(), a$(), AL$(), rr$(), SP$(), f$(), b$(), ve$(), IM$(), FU$(), w$(), k$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 20
CALL conjtc(re, ni, PM$(), PF$(), vv$(), p2$(), AUX$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CASE 21
CALL intrus(re%, ni%, intrusvoca$(), intrusgram$(), intrusconj$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

END SELECT
GOSUB enregistre
CALL entree(noir, noir, 0)
GOTO menuprincipal

fin:
COLOR , noir
IF eleve > 0 THEN
CALL bilan(p$(), niveaux(), eleve, VarEnreg, serie$())
END IF
COLOR , noir: CLS
RUN programme2$
END

enregistre:
COLOR , noir: IF eleve = 0 THEN RETURN
IF prog = 2 THEN '=== orth
CALL centre(23, blanc, "Enregistrement de la moyenne")
ELSE
CALL centre(23, blanc, "Enregistrement de la note")
END IF
re$ = LTRIM$(STR$(re)): IF LEN(re$) = 1 THEN re$ = " " + re$
pointeur = ni + mat
OPEN "fichier.dat" FOR RANDOM AS #1 LEN = LEN(VarEnreg)
GET #1, eleve, VarEnreg

nbexo$ = VarEnreg.nbexo
nombre$ = LTRIM$(STR$(VAL(MID$(nbexo$, 4, 3)) + 1))
IF LEN(nombre$) = 1 THEN
nombre$ = "00" + nombre$
ELSEIF LEN(nombre$) = 2 THEN
nombre$ = "0" + nombre$
END IF

'=== francais est en 2° -> 4
IF VAL(nombre$) < 1000 THEN
VarEnreg.nbexo = MID$(nbexo$, 1, 3) + nombre$ + MID$(nbexo$, 7)
END IF

notes$ = MID$(VarEnreg.notes, 401, 400)
IF pointeur = 1 THEN
notes$ = re$ + MID$(notes$, 2 * pointeur + 1)
ELSE
notes$ = MID$(notes$, 1, (pointeur - 1) * 2) + re$ + MID$(notes$, 2 * pointeur + 1)
END IF

IF prog = 2 THEN 'ortho ===
w$ = ""
FOR i = 1 TO 20
w$ = w$ + serie$(i)
NEXT
notes$ = MID$(notes$, 1, 200) + w$ + SPACE$(200 - LEN(w$))
END IF

VarEnreg.notes = MID$(VarEnreg.notes, 1, 400) + notes$ + MID$(VarEnreg.notes, 801)

PUT #1, eleve, VarEnreg
CLOSE #1
CALL attendre(.5)
CALL centre(23, 0, SPACE$(80))
RETURN

init:
DATA Phrase éclatée,3
DATA Orthographe,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 adjectif,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 ma: READ p$(i), niveaux(i): NEXT
nbniveaux = 0
FOR i = 1 TO ma
nbniveaux = nbniveaux + niveaux(i)
NEXT

'data exo1
'classement (niveau 2)
DATA travail,trouver,tricher,train,tringle,trois
DATA classer,classement,classe,clair,classique,clameur
DATA caméra,cartouche,cacher,cavalier,caractère,casser
DATA chat,chameau,chaud,chamois,char,chacun
DATA famille,fusée,ficelle,feu,folie,filmer
DATA soirée,samedi,souvenir,signe,seul,sauter
DATA livre,laver,longer,lumière,langue,lever
DATA placard,planche,planeur,plateau,place,plage
DATA gare,girafe,guitare,gomme,genou,gamin
DATA cerise,cigare,costume,cube,casser,cirage

FOR i = 1 TO 60: READ mo17$(i): NEXT

'classement (niveau 1),
DATA maison,charpente,porte
DATA classe,tableau,chaise,bureau,placard,craie
DATA ciel,nuage,vent,pluie,neige,soleil
DATA clou,tournevis,marteau,pince,scie
DATA chien,chat,souris,lapin,poule,cobaye
DATA bicyclette,pneu,rayon,guidon,frein,selle
DATA wagon,train,rail,quai,préau,gare
DATA ballon,but,chaussure,terrain
DATA bois,boisson,boire
DATA compas,comparer,voiture,courage
DATA gentil,moulin,prairie,bateau
DATA caractère,caramel,aiguille,camarade

FOR i = 1 TO 57: READ mo2$(i): NEXT

'nature (niveau 2) 4/3/94
DATA chanter0,table1,ils4,une3,grand2
DATA ordinateur1,travailler0,elle4,les3,grosse2
DATA boire0,maison1,elles4,lourd2
DATA croire0,chanson1,vous4,noire2,clavier1,lourde2
DATA courir0,nous4,je4,un3,des3

FOR i = 1 TO 25: READ mo18$(i): NEXT

'nature (niveau 3)
DATA attendre00,vouloir00,suivre00
DATA été01,voulu01,mis01,attendu01
DATA on02,elles02,nous02
DATA artiste03,ordinateur03,chanson03
DATA immense04,lourd04,agréable04,soigneux04
DATA les05,la05
DATA une06,des06
DATA cette07,ces07,cet07
DATA ses08,son08,tes08
DATA bien09,toujours09,lentement09
DATA à10,de10,pour10,sur10
DATA mais11,et11,ou11

FOR i = 1 TO 37: READ mo3$(i): NEXT

'genre et nombre niveau 1 - (23)
DATA des tables22,un dromadaire11,des classes22,ce circuit11,l'écran11,mon livre11
DATA les immeubles12
DATA mes chaises22,un garçon11,dix doigts12,les bateaux12,cette glace21
DATA ce sourire11,ses papiers12,cette cerise21,le disque11,ma bouteille21
DATA la poire21,du cuivre11,trois stylos12,des rideaux12,les roues22,la télévision21
'genre et nombre niveau 2 - (18)
DATA jolis12,lourd11,lourdes22,mises22,prise21,grande21,belles22,beau11,jolie21
DATA blanc11,blanche21,blanches22,blancs12,noires22,vert11,verte21,léger11,légères22

FOR i = 1 TO 41: READ mo4$(i): NEXT

'groupe des noms niveau 1 = 34 mots
DATA 3un livre,2un chat,3un téléviseur,3un ordinateur,4un cauchemar,4une qualité
DATA 3la Lune,3le film,1une fille,1l'instituteur,1un indien,2un tigre
DATA 2l'hirondelle,1un garçon,3un mur,4une pensée,2un loup,1un cycliste
DATA 2un poisson,2le thon,2un oiseau,2un moustique
DATA 1une femme,1un homme,2une grenouille
DATA 3un banc,3le téléphone,3une vitre,4un rêve
DATA 2une abeille,1un footballeur,2la girafe,3une craie,3le tableau
'niveau 2 = 33
DATA 4la gentillesse,4la vitesse,4un effort
DATA 3une planète,3le Soleil,3la mer,3le cuir,3un arbre
DATA 4la brutalité,4le courage,4la tendresse,4la volonté
DATA 2un crocodile,2une coccinelle,2une abeille,2une araignée,2une limace
DATA 4une vente,4le commerce,4le sport,4un exploit,4la peur,4un classement
DATA 1un ancêtre,1une championne,1un anglais,1un laborantin,1un artiste,1un peintre
DATA 4la lecture,4la justice,4la vie,4la fatigue

FOR i = 1 TO 67: READ mo6$(i): NEXT

'pluriel
DATA une table,une fenêtre,une souris,un nez,une pompe,une roue
DATA un repas,un jeu,un ordinateur
DATA un clown,une porte,un pli,une touche,un carnet,une disquette,un tabouret
DATA un homme,une action,un film,un coeur,un oeil,un peureux,une salle,un tapis
DATA une gare,une classe
DATA un carnaval,un canal,un festival
DATA un poteau,un château,un cadeau
DATA un cheveu,un pneu
DATA un caillou,un genou,un hibou,un clou,un chou,un bijou
DATA un portail,un landau,un pneu,un travail,un émail
DATA un vitrail,un rail

FOR i = 1 TO 47: READ mo7$(i): NEXT

'accord adjectifs
'niveau 2 (les solutions des 10 premiers sont en data)
DATA beau,gentil,bon,ancien,violet,cruel,blanc,gros,gras,doux

DATA solide,fragile,peureux,rouge,heureux
DATA merveilleux,teigneux,incolore,soigneux,large
DATA inodore,tranquille,courageux,triste,joyeux,plein,magnifique
DATA paisible,facile,superbe
'niveau 1
DATA méchant,grand,petit,vert,haut,lourd,brutal,étroit,délicat,joli,élégant
DATA adroit,différent,excellent,lointain,laid,bleu,confiant

FOR i = 1 TO 48: READ mo10$(i): NEXT

DATA beaux,gentils,bons,anciens,violets,cruels,blancs,gros,gras,doux
DATA belle,gentille,bonne,ancienne,violette,cruelle,blanche,grosse,grasse,douce
DATA belles,gentilles,bonnes,anciennes,violettes,cruelles,blanches,grosses,grasses,douces

FOR i = 1 TO 10: READ mo11$(i): NEXT
FOR i = 1 TO 10: READ mo12$(i): NEXT
FOR i = 1 TO 10: READ mo13$(i): NEXT

'accord du participe passé
DATA 21Ils,21Didier et Céline,21Les comédiens,11Un chat,12Elle,22Elles,12Dorothée,21Ludovic et Cyril,22Nos amies,21Nos amis,21Les maîtres,21Les extra-terrestres
DATA 22Les jeunes filles,11Le cheval,11Le réparateur,21Les musiciens,22Les infirmières
DATA 22Les écolières,11Le tigre,21Les danseurs,12La boulangère,12La souris
FOR i = 1 TO 22: READ mo14$(i): NEXT

'participe passé niveau 1 - 24 mots
DATA jouer,gagner,crier,ranger,arranger,trier,taper,mentir,grossir
DATA aller,finir,tomber,tuer,voler,fleurir,nourrir,lire,fondre,boire,voir
DATA partir,écrire,avoir,être
'niveau 2 - 24 mots
DATA prendre,croire,coudre
DATA courir,tendre,tenir,cuire,suivre,définir,peindre,résoudre
DATA apprendre,dire,conduire,promettre,admettre,couvrir
DATA inscrire,faire,offrir,avoir,être,blottir,moudre

FOR i = 1 TO 48: READ mo15$(i): NEXT

'participe passé réponses niveau 1 - 24 mots
DATA joué1,gagné1,crié1,rangé1,arrangé1,trié1,tapé1,menti1,grossi1
DATA allé2,fini1,tombé2,tué1,volé1,fleuri1,nourri1,lu1,fondu1,bu1,vu1
DATA parti2,écrit1,eu1,été1
'niveau 2 - 24 mots
DATA pris1,cru1,cousu1
DATA couru1,tendu1,tenu1,cuit1,suivi1,défini1,peint1,résolu1
DATA appris1,dit1,conduit1,promis1,admis1,couvert1,inscrit1
DATA fait1,offert1,eu1,été1,blotti2,moulu1

FOR i = 1 TO 48: READ mo16$(i): NEXT

DATA je,tu,il,nous,vous,ils,je,tu,elle,nous,vous,elles

FOR i = 1 TO 2: FOR j = 1 TO 2: FOR k = 1 TO 3: READ pp$(i, j, k): NEXT k, j, i

'conjugaison temps simples
DATA chanter,marcher,sauter,laver,casser,être,avoir,aller,finir,réussir
DATA sentir,partir,faire,boire,venir

FOR i = 1 TO 15: READ v$(i): NEXT i

DATA e,suis,ai,vais,s,s,fais,bois,viens,ais,ai,ai,s,es,es,as,vas,s,s,fais
DATA bois,viens,ais,as,as,s,e,est,a,va,t,t,fait,boit,vient
DATA ait,a,a,t,ons,sommes,avons,allons,ssons,tons,faisons
DATA buvons,venons,ions,ons,âmes,mes,ez,êtes,avez,allez
DATA ssez,tez,faites,buvez,venez,iez,ez,âtes,tes,ent,sont
DATA ont,vont,ssent,tent,font,boivent,viennent,aient,ont,èrent,rent

FOR i = 1 TO 2
FOR j = 1 TO 3
READ te$(i, j), E$(i, j), a$(i, j), AL$(i, j), rr$(i, j)
READ SP$(i, j), f$(i, j), b$(i, j), ve$(i, j), IM$(i, j), FU$(i, j), w$(i, j), k$(i, j)
NEXT j
NEXT i

'radical
DATA"je ","tu ","elle","nous","vous","ils "
DATA e,es,e,ons,ez,ent
DATA is,is,it,issons,issez,issent
DATA s,s,,ons,ez,ent
DATA s,s,t,ons,ez,ent
'niveau 1
DATA chant-er1,gross-ir2,gagn-er1,coiff-er1,blott-ir2,vend-re3
DATA class-er1,march-er1,visit-er1,gomm-er1
'niveau 2
DATA fond-re3,découvr-ir1,cueill-ir1,perd-re3,cour-ir4
DATA mord-re3,fin-ir2,nourr-ir2,parcour-ir4,rend-re3

FOR i = 1 TO 6: READ PPa$(i): NEXT
FOR i = 1 TO 6: READ G1$(i): NEXT
FOR i = 1 TO 6: READ G2$(i): NEXT
FOR i = 1 TO 6: READ G3$(i): NEXT
FOR i = 1 TO 6: READ G4$(i): NEXT
FOR i = 1 TO 20: READ vb$(i): NEXT

'groupe des verbes niveau 1 = 30 mots
DATA chanter1,finir2,aller3,sentir3,grossir2,lancer1,rendre3,prendre3,croire3
DATA grandir2,être4,perdre3,garder1,couler1,coudre3,peindre3
DATA bâtir2,écrire3,lire3,avoir4,essayer1,essuyer1,fendre3,tendre3
DATA crier1,sauter1,compter1,charger1,franchir2,danser1
'groupe verbes niveau 2 = 30 mots
DATA pondre3,aller3,être4,punir2,croire3,suivre3,déguster1
DATA voler1,alourdir2,couvrir3,éclater1,offrir3,avoir4,peser1
DATA régner1,alunir2,tenir3,connaître3,applaudir2,aller3,avoir4
DATA gravir2,aller3,vivre3,mentir3,fuir3,croire3
DATA nourrir2,mourir3,sortir3
FOR i = 1 TO 60: READ n$(i): NEXT

'temps des verbes
'phrase, début, longueur, temps, passé présent futur, rien simple composé
DATA 13,6,1,2,1
DATA 18,9,1,2,1
DATA 4,9,1,2,1
DATA 1,4,1,2,1
DATA 6,6,1,2,1
DATA 6,8,2,1,1
DATA 4,12,2,1,1
DATA 5,11,2,1,1
DATA 4,11,2,1,1
DATA 11,7,2,1,1
DATA 4,6,3,3,1
DATA 5,11,3,3,1
DATA 9,7,3,3,1
DATA 10,7,3,3,1
DATA 9,8,4,3,0
DATA 4,12,4,3,0
DATA 4,10,4,3,0
DATA 5,9,5,1,1
DATA 9,3,5,1,1
DATA 16,8,5,1,1
DATA 3,7,6,1,2
DATA 6,9,6,1,2
DATA 6,10,6,1,2
DATA 18,13,7,1,2
DATA 22,12,7,1,2
DATA 15,17,7,1,2
DATA 11,10,8,3,2
DATA 19,8,8,3,2
DATA 17,11,8,3,2
DATA 21,9,9,1,2
DATA 1,4,10,2,1
DATA 1,5,10,2,1
DATA 1,7,10,2,1
DATA 1,6,10,2,1
DATA 1,6,10,2,1
DATA 1,7,10,2,1

FOR i = 1 TO 36
READ h3(i): READ l2(i): READ t2(i): READ ppf(i): READ sc(i)
NEXT

DATA e,es,e,ons,ez,ent
DATA is,is,it,issons,issez,issent
DATA s,s,"",ons,ez,ent

DATA ais,ais,ait,ions,iez,aient
DATA issais,issais,issait,issions,issiez,issaient
DATA ais,ais,ait,ions,iez,aient

DATA erai,eras,era,erons,erez,eront
DATA irai,iras,ira,irons,irez,iront
DATA rai,ras,ra,rons,rez,ront

FOR l = 1 TO 3
FOR c = 1 TO 3
FOR p = 1 TO 6
READ t2$(l, c, p)
NEXT p
NEXT c
NEXT l

DATA je,tu,il,nous,vous,elles

FOR i = 1 TO 6: READ per$(i): NEXT

'accord des verbes
'niveau 1
DATA 1chanter,2finir,1danser,2grandir,1sauter,2gravir,1classer,1taper,1compter
DATA 2grossir,3fendre,3rendre
'niveau 2
DATA 3perdre,3fondre,3mordre,3tendre,1voler
DATA 2franchir,2garnir,2bâtir,3vendre,1crier,1trier,1remercier

FOR i = 1 TO 24: READ veb$(i): NEXT

DATA "j'","tu ","il ","nous ","vous ","ils "

FOR i = 1 TO 6: READ PM$(i): NEXT

DATA "j'","tu ","elle ","nous ","vous ","elles "

FOR i = 1 TO 6: READ PF$(i): NEXT

'conjugaison temps composé
DATA chanter1,marcher1,sauter1,tomber2,casser1,être1,avoir1,aller2,finir1
DATA réussir1,sentir1,partir2,faire1,boire1,venir2,prendre1,vendre1,taper1
DATA arriver2,grossir1

FOR i = 1 TO 20: READ vv$(i): NEXT

DATA chanté,marché,sauté,tombé,cassé,été,eu,allé,fini,réussi,senti,parti
DATA fait,bu,venu,pris,vendu,tapé,arrivé,grossi

FOR i = 1 TO 20: READ p2$(i): NEXT

DATA ai,as,a,avons,avez,ont
DATA avais,avais,avait,avions,aviez,avaient
DATA aurai,auras,aura,aurons,aurez,auront
DATA eus,eus,eut,eûmes,eûtes,eurent

DATA suis,es,est,sommes,êtes,sont
DATA étais,étais,était,étions,étiez,étaient
DATA serai,seras,sera,serons,serez,seront
DATA fus,fus,fut,fûmes,fûtes,furent

FOR i = 1 TO 2: FOR j = 1 TO 4: FOR k = 1 TO 6: READ AUX$(k, j, i): NEXT k, j, i

'infinitif des verbes niveau 1
DATA nous marchions,vous grandissez,tu salis,nous sommes,j'aurai,elles sauteront
DATA ils cassaient,il dort,ils achètent,il attend
DATA vous volerez,je classais,nous pensions,vous vendrez,ils sortaient
'infinitif niveau 2
DATA je viens,ils feront,nous tendions,tu crois,elles vont,vous chanterez,ils finissaient
DATA je vais lire,j'ai bu,il coud,il craignait,nous plairons,vous serez,tu auras,ils cuisaient
'le niveau 3 est dans le module

FOR i = 1 TO 30: READ conj$(i): NEXT

'niveau 1
DATA marcher,grandir,salir,être,avoir,sauter,casser,dormir,acheter,attendre
DATA voler,classer,penser,vendre,sortir
'niveau 2
DATA venir,faire,tendre,croire,aller,chanter,finir,lire,boire,coudre
DATA craindre,plaire,être,avoir,cuire
'niveau 3
DATA avoir,parler,prendre,apprendre,comprendre,vendre,croire,vouloir,partir,arriver
DATA sortir,pleuvoir,connaître,pratiquer,être

FOR i = 1 TO 30: READ inf$(i): NEXT
FOR i = 1 TO 15: READ inf2$(i): NEXT
'intrus
'vocabulaire
DATA un livre,une revue,un dictionnaire,une encyclopédie,un journal,une télévision*,une brochure,un mode d'emploi,un manuel,"On ne lit pas la télévision.","="
DATA février,juillet,mai,hiver*,avril,janvier,mars,septembre,novembre,L'hiver n'est pas un mois.,"="
DATA un lion,une souris,un homme,une abeille*,un cheval,un dauphin,un chat,un chien,un gorille,"Une abeille n'est pas un mammifère. C'est un insecte.","="
DATA une bronchite,un rhume,la rougeole,la varicelle,les oreillons,le tympan*,"Le tympan n'est pas une maladie.","="
DATA une sardine,une morue,une baleine*,une truite,une sole,un rouget,"La baleine n'est pas un poisson. C'est un mammifère.","="
DATA un pommier,un saule,un sapin,un plumier*,un épicéa,un chêne,un palmier,un platane,"Un plumier n'est pas un arbre.","="
DATA un planeur,un parapente,un avion,une fusée*,une montgolfière,un dirigeable,un Delta-Plane,"La fusée ne 'flotte' pas dans l'air.","="
DATA Saturne,Vénus,Mars,Neptune,Mercure,Uranus,Terre,Soleil*,Jupiter,"Le Soleil n'est pas une planète. C'est une étoile.","="
DATA une rivière,une source,un fleuve,un torrent,un océan*,un ruisseau,"Un océan n'est pas un cours d'eau.","="
DATA Afrique,Canada*,Océanie,Asie,Europe,Amérique,"Le Canada n'est pas un continent. C'est un pays.","="

FOR i = 1 TO 95
READ intrusvoca$(i)
NEXT

'grammaire
DATA un oiseau,un violon,un tableau,une branche*,un cartable,un balcon,un rêve,"Le mot 'branche' n'est pas masculin.","="
DATA les avions,ces bateaux,des nuages,tes chaussures,l'édredon*,mes rêves,"'édredon' n'est pas au pluriel.","="
DATA a,g*,e,i,o,y,u,"La lettre 'g' n'est pas une voyelle.","="
DATA m,b,l,r,t,x,y*,n,h,"La lettre 'y' n'est pas une consonne.","="
DATA grand,moyen,léger,petit,rare,soin*,lourd,épais,magnifique,laid,"Le mot 'soin' n'est pas un adjectif. C'est uniquement un nom.","="
DATA un cartable*,une télévision,une nappe,une école,une institutrice,une femme,une porte,une vitre,"Le mot 'cartable' n'est pas féminin.","="
DATA fenêtre,enseignant,crayon,boulanger,mouton,agréable*,câble,toiture,poisson,chien,"Le mot 'agréable' n'est pas un nom. C'est un adjectif qualificatif.","="
DATA lentement,rapidement,vivement,carrément,franchement,tremblement*,judicieusement,"Le mot 'tremblement' n'est pas un adverbe.","="
DATA mais,ou,est*,donc,or,ni,car,"Le mot 'est' n'est pas une conjonction de coordination. C'est 'et'.","="
DATA sur,vers,dans,à,de,lui*,en,par,pour,"'lui' n'est pas une préposition.","="

FOR i = 1 TO 100
READ intrusgram$(i)
NEXT

'conjugaison
DATA tu marcheras,ils finiront,tu buvais*,nous lirons,tu bâtiras,je voudrai,"Ce verbe n'est pas au futur.","="
DATA voilier*,marcher,porter,sauter,casser,manger,oser,taper,écouter,"'voilier' n'est pas un verbe.","="
DATA il chantait,vous marchez*,il sautait,je vendais,nous volions,elles écoutaient,"Ce verbe n'est pas à l'imparfait.","="
DATA il travaille,nous rangerons,je tapais,il a vu*,vous écrivez,elle joue,elles mangeront,"Ce verbe n'est pas à un temps simple.","="
DATA grandir,gravir,réfléchir,finir,grossir,aplatir,partir*,garnir,"'partir' n'est pas un verbe du 2° groupe mais du 3°.","="
DATA nous avons vu,ils étaient fatigués,elle aura pris,ils attaqueront*,j'ai cherché,tu auras lu,"Ce verbe n'est pas à un temps composé.","="
DATA chanter,porter,voler,aller*,casser,marcher,sauter,attaquer,"'aller' n'est pas un verbe du 1° groupe mais du 3°.","="
DATA il écrira,elle lira,nous sauterons,je vais sortir*,tu taperas,vous finirez,"Ce verbe n'est pas au futur 1 mais au futur 2.","="
DATA pris,voir*,chanté,bu,vécu,perdu,écrit,classé,rangé,craint,"'voir' n'est pas un participe passé.","="
DATA sortir,prendre,vendre,voir,mentir,craindre,boire,suivre,finir*,lire,"'finir' n'est pas un verbe du 3° groupe mais du 2°.","="

FOR i = 1 TO 96
READ intrusconj$(i)
NEXT

RETURN

erreur:
programme$ = "exo_fr2"
COLOR , bleu: CLS
BEEP
CALL cadre(8, 5, 70, 9, rouge)
COLOR , rouge
CALL centre(10, blanc, "ATTENTION")
CALL centre(12, blancbrill, "Erreur système n°" + LTRIM$(STR$(ERR)))
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$

DEFINT A-Z
SUB bilan (ma$(), niveaux(), eleve, VarEnreg AS TypeEnreg, serie$())
'17/5/96 spécifique à français
ma = 21
DIM t$(100), moy$(ma), bi$(ma), serie2$(20)
FOR i = 1 TO ma: bi$(i) = ma$(i): NEXT
ll$ = STRING$(30, ".")
pt$ = MID$(ll$, 1, 15)
ni$ = "Niveau " + CHR$(26) + " 1 2 3 4"

titr$ = "bilan"
CALL titre

'lecture des notes
OPEN "fichier.dat" FOR RANDOM AS #1 LEN = LEN(VarEnreg)
GET #1, eleve, VarEnreg
nom$ = RTRIM$(VarEnreg.nom)
pre$ = RTRIM$(VarEnreg.prenom)
'francais est en 2°
nbexo$ = LTRIM$(MID$(VarEnreg.nbexo, 4, 3))
IF VAL(nbexo$) = 0 THEN CLOSE : EXIT SUB
resultat$ = MID$(VarEnreg.notes, 401, 400)
CLOSE
j = 1
FOR i = 1 TO 200 STEP 2
t$(j) = MID$(resultat$, i, 2)
j = j + 1
NEXT

'pour orth
j = 1
'COLOR , rouge
'PRINT resultat$'===
'COLOR , bleu
'PRINT '===
'COLOR , vert
'PRINT MID$(resultat$, 201, 40)'===
'COLOR , bleu
FOR i = 201 TO 240 STEP 2 '20 positions pour séries orth
serie$(j) = MID$(resultat$, i, 2)
IF VAL(serie$(j)) > 10 THEN serie$(j) = "10" '===
j = j + 1
NEXT
'END '===
CALL calmoy(t$(), moy$(), niveaux())

'moy générale
tt = 0: nt = 0
FOR j = 1 TO ma
IF moy$(j) <> "" THEN tt = tt + VAL(moy$(j)): nt = nt + 1
NEXT j
IF nt = 0 THEN moygen$ = " " ELSE moygen$ = LTRIM$(STR$(INT((tt / nt) * 10) / 10))

z$ = pre$ + " " + nom$ + " a fait" + STR$(VAL(nbexo$)) + " exercice"
IF VAL(nbexo$) > 1 THEN z$ = z$ + "s"
z$ = z$ + " de français (niveau II)"
COLOR , marron
CALL centre(4, blancbrill, " " + z$ + " ")
COLOR , bleu

LOCATE 6, 16: COLOR vertclair: PRINT ni$: COLOR jaune: LOCATE 6, 36: PRINT "Moy"
COLOR vertclair: LOCATE 6, 57: PRINT ni$: COLOR jaune: LOCATE 6, 77: PRINT "Moy"

COLOR , rouge
v = 7: h = 1: debut = 8: fin = 18: GOSUB cadre
v = 7: h = 42: debut = 8: fin = 17: GOSUB cadre
LOCATE 8
FOR i = 1 TO 11
LOCATE , 2: PRINT bi$(i); " "; LEFT$(ll$, 20 - LEN(bi$(i)))
NEXT
LOCATE 8
FOR i = 12 TO ma
LOCATE , 43: PRINT bi$(i); " "; LEFT$(ll$, 20 - LEN(bi$(i)))
NEXT

'affichage des moyennes
LOCATE 8
FOR i = 1 TO 11
LOCATE , 36
IF moy$(i) = "" THEN
PRINT
ELSEIF VAL(moy$(i)) = 9 OR VAL(moy$(i)) = 10 THEN
COLOR blancbrill
PRINT moy$(i);
COLOR vertclair
LOCATE , 38
PRINT "A"
ELSEIF VAL(moy$(i)) = 7 OR VAL(moy$(i)) = 8 THEN
COLOR blancbrill
PRINT moy$(i);
COLOR vert
LOCATE , 38
PRINT "B"
ELSEIF VAL(moy$(i)) = 6 OR VAL(moy$(i)) = 5 THEN
COLOR blancbrill
PRINT moy$(i);
LOCATE , 38
COLOR jaune
PRINT "C"
ELSE
COLOR blancbrill
PRINT moy$(i);
COLOR rougeclair
LOCATE , 38
PRINT "D"
END IF
NEXT
LOCATE 8
FOR i = 12 TO ma
LOCATE , 77
IF moy$(i) = "" THEN
PRINT
ELSEIF VAL(moy$(i)) = 9 OR VAL(moy$(i)) = 10 THEN
COLOR blancbrill
PRINT moy$(i);
COLOR vertclair
LOCATE , 79
PRINT "A"
ELSEIF VAL(moy$(i)) = 7 OR VAL(moy$(i)) = 8 THEN
COLOR blancbrill
PRINT moy$(i);
COLOR vert
LOCATE , 79
PRINT "B"
ELSEIF VAL(moy$(i)) = 5 OR VAL(moy$(i)) = 6 THEN
COLOR blancbrill
PRINT moy$(i);
LOCATE , 79
COLOR jaune
PRINT "C"
ELSE
COLOR blancbrill
PRINT moy$(i);
COLOR rougeclair
LOCATE , 79
PRINT "D"
END IF
NEXT
COLOR blanc

'++++++++++++++
v = 8
debut = 1
FOR Valeur = 1 TO 11
fin = debut + (niveaux(Valeur) - 1)
h = 24: GOSUB place
debut = fin + 1: v = v + 1
NEXT

v = 8
FOR Valeur = 12 TO ma
fin = debut + (niveaux(Valeur) - 1)
h = 65: GOSUB place
debut = fin + 1: v = v + 1
NEXT
'++++++++++
COLOR , bleu
IF VAL(moygen$) <> 0 THEN
COLOR cyanclair: LOCATE 19, 43
CALL convertir(moygen$)
PRINT "Moyenne générale : "; moygen$; " sur 10"
END IF
CALL entree(noir, noir, 0)

'bilan ortho
'tableau des résultats
titr$ = "Résultats en orthographe"

CALL titre

CALL cadre(3, 15, 8, 2, rouge)
COLOR blancbrill, rouge
LOCATE 4, 16: PRINT "Niveau 1"
CALL cadre(3, 55, 8, 2, rouge)
COLOR , rouge
LOCATE 4, 56: PRINT "Niveau 2"
COLOR blanc, bleu
FOR i = 4 TO 19: LOCATE i, 40: PRINT CHR$(179): NEXT

CALL cadre(6, 5, 30, 12, blanc)
CALL cadre(6, 45, 30, 12, blanc)
COLOR , blanc

FOR ni = 1 TO 2
'si ni = 1 alors de 1 à 10 sinon 11 à 20
ii = 1
FOR i = ((ni - 1) * 10) + 1 TO ni * 10
IF serie$(i) <> " " THEN
serie2$(ii) = LTRIM$(STR$(VAL(serie$(i))))
ELSE
serie2$(ii) = " "
END IF
ii = ii + 1
NEXT i

'calcul de la moyenne
tt = 0: nt = 0
FOR j = 1 TO 10
IF serie2$(j) <> " " THEN
tt = tt + VAL(serie2$(j)): nt = nt + 1
END IF
NEXT j
IF nt = 0 THEN
moyenne$ = ""
ELSE
moyenne$ = LTRIM$(STR$(INT(tt / nt)))
END IF
IF ni = 1 THEN
LOCATE 19, 15
ELSE
LOCATE 19, 55
END IF
IF moyenne$ <> "" THEN
IF VAL(moyenne$) < 5 THEN
COLOR rouge
ELSEIF VAL(moyenne$) < 8 THEN
COLOR jaune
ELSE
COLOR vertclair
END IF
COLOR , bleu '===
PRINT "Moyenne = "; moyenne$
END IF
COLOR vertclair
IF ni = 1 THEN
LOCATE 7, 15
ELSE
LOCATE 7, 55
END IF

COLOR noir, blanc
PRINT "1 2 3 4 5 6 7 8 9 10"
LOCATE 8
'COLOR blanc, noir
FOR i = 1 TO 10
IF ni = 1 THEN
LOCATE , 5
ELSE
LOCATE , 45
END IF
'COLOR blancbrill, marron
PRINT " série"; i;
'IF i < 10 THEN PRINT " ";
'COLOR blanc, noir
IF serie2$(i) <> " " THEN
i2 = 0: IF ni = 2 THEN i2 = 40
FOR j = 1 TO VAL(serie2$(i))
SELECT CASE i
CASE 1, 3, 5, 7, 9
LOCATE , 15 + i2: PRINT "▒▒";
CASE ELSE
LOCATE , 15 + i2: PRINT "▓▓";
END SELECT
i2 = i2 + 2
NEXT j
PRINT
ELSE
PRINT
END IF
NEXT i
NEXT ni
CALL entree(noir, noir, 0)
EXIT SUB

place:
LOCATE v
FOR i = debut TO fin
LOCATE , h
IF VAL(t$(i)) < 10 THEN PRINT " ";
IF t$(i) <> " " THEN PRINT LTRIM$(t$(i)); ELSE PRINT "-";
h = h + 3
NEXT
RETURN

cadre:
COLOR blancbrill
LOCATE v, h: PRINT "┌─────────────────────┬──┬──┬──┬──┬───┐"
FOR i = debut TO fin
LOCATE , h: PRINT "│ │ │ │ │ │ │"
NEXT i
LOCATE , h: PRINT "└─────────────────────┴──┴──┴──┴──┴───┘"
RETURN


END SUB

DEFINT A-Z
SUB consigne (nl, w$, z$, y$)
CALL titre
l = LEN(w$)
IF LEN(z$) > l THEN l = LEN(z$)
IF LEN(y$) > l THEN l = LEN(y$)

l = l + 6
h = INT(40 - l / 2)

IF eleve <> 0 THEN nl = nl + 1

IF nl = 1 OR nl = 2 THEN
v = 8
ELSEIF nl = 3 THEN
v = 7
ELSEIF nl = 4 THEN
v = 6
END IF

CALL cadre(v, h, l, 4 + (nl * 2), 6)
COLOR , 6
IF eleve <> 0 THEN
CALL centre(v + 3, 15, pre$ + ","): w$ = LCASE$(w$)
CALL centre(v + 5, 15, w$)
CALL centre(v + 7, 15, z$)
CALL centre(v + 10, 15, y$)
ELSE
CALL centre(v + 3, 15, w$)
CALL centre(v + 5, 15, z$)
CALL centre(v + 8, 15, y$)
END IF
CALL entree(noir, noir, 1)
w$ = "": z$ = "": y$ = ""
END SUB

DEFINT A-Z
SUB erreur2 ()
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)
CALL centre(23, rougeclair, "Erreur")
CALL attendre(1)
LOCATE 23, 1: PRINT SPACE$(80)
END SUB

DEFINT A-Z
SUB exact2 ()
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)
CALL centre(23, jaune, "Exact")
CALL attendre(.7)
LOCATE 23, 1: PRINT SPACE$(80)
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)

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

COLOR blanc, noir
LOCATE v2, h3: PRINT gg$

'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 + 1, 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
COLOR coul, 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

souris = 0
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
ELSE
BEEP
END IF
END IF

LOOP WHILE r$ = ""

IF souris = 0 THEN
IF LEN(r$) < 2 THEN
rr = ASC(r$)
ELSE
rr = ASC(RIGHT$(r$, 1))
END IF
END IF

IF rr = 27 THEN
CALL quitter(noir, coul)
END IF


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
COLOR coul, blanc
PRINT " "; p$(v - vt); " "
COLOR blancbrill, coul
LOOP WHILE rr <> 13
r = v - vt
COLOR blancbrill

END SUB

DEFINT A-Z
SUB fleches2 (v%, h%, ll%, nm%, h3%, w$(), r, coul)
DIM p$(nm%)
CONST gauche = 75, droite = 77, bas = 80, haut = 72

'on met des espaces à la fin
FOR i = 1 TO nm
p$(i) = w$(i)
NEXT
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
'+++
n! = nm / 2
paire = 0: IF n! = INT(nm / 2) THEN paire = 1
vv = v: hh = h: r = 1
GOSUB affiche

'fleches
COLOR coul, blanc
LOCATE v, h - 1
PRINT " "; p$(1); " "
COLOR blancbrill, coul

DO
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 22, 1: PRINT v_mouse, h_mouse'===
IF lButton THEN
IF v_mouse >= vv AND v_mouse <= vv + ll - 1 THEN
FOR nombre = 1 TO nm
IF v_mouse = vv + nombre - 1 THEN
IF h_mouse >= h AND h_mouse <= h + l2 THEN
GOSUB affiche
LOCATE v_mouse, h - 1
COLOR coul, blanc
PRINT " "; p$(nombre); " "
COLOR blancbrill, coul
CALL attendre(.3)
r = nombre
EXIT SUB

ELSEIF h_mouse >= h3 AND h_mouse <= h3 + l2 THEN
GOSUB affiche
LOCATE v_mouse, h3 - 1
COLOR coul, blanc
PRINT " "; p$(nombre + ll); " "
COLOR blancbrill, coul
CALL attendre(.3)
r = nombre + ll
EXIT SUB
END IF
END IF
NEXT

ELSEIF v_mouse = 23 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
rr = 13
CALL attendre(.3)
souris = 1
EXIT DO

END IF
ELSE
BEEP
END IF
END IF

LOOP WHILE r$ = ""

IF souris = 0 THEN
IF LEN(r$) < 2 THEN rr = ASC(r$) ELSE rr = ASC(RIGHT$(r$, 1))
END IF

IF rr = 27 THEN
CALL quitter(noir, coul)
END IF

LOCATE v, hh - 1
PRINT " "; p$(r); " "

GOSUB fldirect
LOCATE v, hh - 1
COLOR coul, blanc
PRINT " "; p$(r); " "
COLOR blancbrill, coul
LOOP WHILE rr <> 13

EXIT SUB

fldirect:
IF rr = gauche THEN r = r - ll: IF hh = h3 THEN hh = h ELSE IF hh = h THEN hh = h3 'gauche
IF rr = droite THEN
IF paire = 0 AND r = ll + 1 THEN
r = r + ll + 1
ELSE
r = r + ll
END IF
IF hh = h3 THEN hh = h ELSE IF hh = h THEN hh = h3 'droite
END IF
IF rr = haut THEN v = v - 1: r = r - 1 'haut
IF rr = bas THEN v = v + 1: r = r + 1 'bas

IF r = ll + 1 THEN v = vv: hh = h3
IF r = ll THEN v = ll + (vv - 1): hh = h
IF r = 2 * ll THEN v = ll + (vv - 1): hh = h3
IF r > nm THEN r = 1: v = vv: hh = h
IF r >= 1 THEN RETURN
r = nm
v = (vv - 1) + nm - ll: hh = h3
RETURN

affiche:
COLOR , coul
LOCATE vv
FOR i = 1 TO ll: LOCATE , h - 1: PRINT " "; p$(i); " ": NEXT
LOCATE vv
FOR i = ll + 1 TO nm: LOCATE , h3 - 1: PRINT " "; p$(i); " ": NEXT
RETURN
END SUB

DEFINT A-Z
SUB flechesmenu (w$(), r, coul)
nm = 21 '===
DIM p$(nm)
CONST gauche = 75, droite = 77, bas = 80, haut = 72
h1 = 6: h3 = 32: h3 = 58

'on met des espaces à la fin
FOR i = 1 TO nm
p$(i) = w$(i)
NEXT
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 = 7
r = 1

DO

COLOR coul, 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 21, 1: PRINT "Position de la souris : "; v_mouse; ", "; h_mouse '===
IF lButton THEN
'ligne fleches et entree
IF v_mouse = 22 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
rr = 13
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse >= 3 AND h_mouse <= 15 THEN
'ligne echap et *
rr = 27
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse >= 68 AND h_mouse <= 78 THEN
rr = 42
CALL attendre(.3)
souris = 1
EXIT DO
ELSE
BEEP
END IF
END IF

'lignes noms des activités
IF v_mouse = 7 THEN
IF h_mouse >= 6 AND h_mouse <= 24 THEN
GOSUB afficheliste
r = 1
LOCATE v_mouse, 5
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSEIF h_mouse >= 32 AND h_mouse <= 50 THEN
GOSUB afficheliste
r = 8
LOCATE v_mouse, 31
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSEIF h_mouse >= 57 AND h_mouse <= 76 THEN
GOSUB afficheliste
r = 15
LOCATE v_mouse, 57
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB

ELSE
BEEP
END IF
ELSEIF v_mouse = 9 THEN
IF h_mouse >= 6 AND h_mouse <= 24 THEN
GOSUB afficheliste
r = 2
LOCATE v_mouse, 5
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSEIF h_mouse >= 32 AND h_mouse <= 50 THEN
GOSUB afficheliste
r = 9
LOCATE v_mouse, 31
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSEIF h_mouse >= 57 AND h_mouse <= 76 THEN
GOSUB afficheliste
r = 16
LOCATE v_mouse, 57
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSE
BEEP
END IF
ELSEIF v_mouse = 11 THEN
IF h_mouse >= 6 AND h_mouse <= 24 THEN
GOSUB afficheliste
r = 3
LOCATE v_mouse, 5
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB

ELSEIF h_mouse >= 32 AND h_mouse <= 50 THEN
GOSUB afficheliste
r = 10
LOCATE v_mouse, 31
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSEIF h_mouse >= 57 AND h_mouse <= 76 THEN
GOSUB afficheliste
r = 17
LOCATE v_mouse, 57
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB

ELSE
BEEP
END IF
ELSEIF v_mouse = 13 THEN
IF h_mouse >= 6 AND h_mouse <= 24 THEN
GOSUB afficheliste
r = 4
LOCATE v_mouse, 5
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB

ELSEIF h_mouse >= 32 AND h_mouse <= 50 THEN
GOSUB afficheliste
r = 11
LOCATE v_mouse, 31
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSEIF h_mouse >= 57 AND h_mouse <= 76 THEN
GOSUB afficheliste
r = 18
LOCATE v_mouse, 57
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB

ELSE
BEEP
END IF
ELSEIF v_mouse = 15 THEN
IF h_mouse >= 6 AND h_mouse <= 24 THEN
GOSUB afficheliste
r = 5
LOCATE v_mouse, 5
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB

ELSEIF h_mouse >= 32 AND h_mouse <= 50 THEN
GOSUB afficheliste
r = 12
LOCATE v_mouse, 31
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSEIF h_mouse >= 57 AND h_mouse <= 76 THEN
GOSUB afficheliste
r = 19
LOCATE v_mouse, 57
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB

ELSE
BEEP
END IF
ELSEIF v_mouse = 17 THEN
IF h_mouse >= 6 AND h_mouse <= 24 THEN
GOSUB afficheliste
r = 6
LOCATE v_mouse, 5
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB

ELSEIF h_mouse >= 32 AND h_mouse <= 50 THEN
GOSUB afficheliste
r = 13
LOCATE v_mouse, 31
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSEIF h_mouse >= 57 AND h_mouse <= 76 THEN
GOSUB afficheliste
r = 20
LOCATE v_mouse, 57
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB

ELSE
BEEP
END IF

ELSEIF v_mouse = 19 THEN
IF h_mouse >= 6 AND h_mouse <= 24 THEN
GOSUB afficheliste
r = 7
LOCATE v_mouse, 5
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB

ELSEIF h_mouse >= 32 AND h_mouse <= 50 THEN
GOSUB afficheliste
r = 14
LOCATE v_mouse, 31
COLOR coul, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSEIF h_mouse >= 57 AND h_mouse <= 76 THEN
GOSUB afficheliste
r = 21
LOCATE v_mouse, 57
COLOR coul, 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 - 26
IF h < h1 THEN
v = v - 2: h = h3
END IF
IF v < 7 THEN
v = 19
END IF

CASE droite
h = h + 26
IF h > h3 THEN
v = v + 2: h = h1
END IF
IF v > 19 THEN
v = 7
END IF

CASE bas
v = v + 2
IF v > 19 THEN
IF h = h1 THEN
h = h3: v = 7
ELSEIF h = h3 THEN
h = h3: v = 7
ELSEIF h = h3 THEN
h = h1: v = 7
END IF
END IF

CASE haut
v = v - 2
IF v < 7 THEN
IF h = h3 THEN
h = h3: v = 19
ELSEIF h = h3 THEN
h = h1: v = 19
ELSEIF h = h1 THEN
h = h3: v = 19
END IF
END IF

CASE 13
GOSUB calculr
EXIT SUB

CASE 27
r = 0
EXIT SUB

CASE 42, 36, 56, 230, 43
IF eleve <> 0 THEN
'l'étoile
r = 42
EXIT SUB
END IF

END SELECT

COLOR blancbrill, coul
LOCATE vv, hh - 1
PRINT " "; p$(r); " "

GOSUB calculr

LOOP

EXIT SUB

calculr:
IF h = h1 THEN
r = ((v - 7) / 2) + 1
ELSEIF h = h3 THEN
r = ((v - 7) / 2) + 8
ELSEIF h = h3 THEN
r = ((v - 7) / 2) + 15
END IF
RETURN

afficheliste:
'affiche liste exo
h1 = 5: h3 = 31: h3 = 57
COLOR blancbrill
LOCATE 7
FOR i = 1 TO 7
LOCATE , h1: PRINT " "; p$(i); " ": PRINT
NEXT
LOCATE 7
FOR i = 8 TO 14
LOCATE , h3: PRINT " "; p$(i); " ": PRINT
NEXT
LOCATE 7
FOR i = 15 TO 21
LOCATE , h3: 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 inputgen (nl%, r$, deb%, fin%, x%, y%)
DIM re$(nl + 1)

inpdebut:
IF y% = blanc THEN
COLOR noir, blanc
ELSE
COLOR blancbrill
END IF


r$ = ".": xx = 0
DEF SEG = 0
POKE 1050, PEEK(1052)
DEF SEG
ligne = CSRLIN
col = POS(0)
LOCATE ligne, col, 1
IF (deb% = 65 OR deb% = 32) AND (prog <> 2 AND prog <> 3) THEN 'sauf orth et recolle ===
PRINT LEFT$(SPACE$(40), nl)
END IF
LOCATE ligne, col, 1
FOR ii = 1 TO nl + 1

input0:
IF ii <= 0 THEN ii = 1
DO
re$(ii) = INKEY$
IF prog = 3 THEN
'recolle
MousePoll v_mouse, h_mouse, lButton, rButton
IF lButton THEN
IF v_mouse = 23 AND (h_mouse >= 39 AND h_mouse <= 57) THEN
re$(ii) = "*"
CALL attendre(.5)
ELSE
BEEP
END IF
END IF
END IF
LOOP WHILE re$(ii) = ""
IF ASC(re$(ii)) = 27 THEN CALL quitter(x, y): xx = 1: EXIT FOR
IF LEN(re$(ii)) = 2 THEN z2 = ASC(RIGHT$(re$(ii), 1)): IF ii > 1 AND (z2 = 75 OR z2 = 83 OR z2 = 15) THEN PRINT CHR$(29); " "; CHR$(29); : ii = ii - 1: z2 = 0: GOTO input0 ELSE GOTO input0
IF prog = 3 THEN '=== recolle
r = ASC(re$(ii))
SELECT CASE r '*
CASE 42, 36, 56, 230, 43
r$ = "*"
LOCATE , , 0
EXIT SUB
END SELECT
END IF
IF ASC(re$(ii)) = 13 THEN EXIT FOR
IF ii > 1 AND ASC(re$(ii)) = 8 THEN PRINT CHR$(29); " "; CHR$(29); : ii = ii - 1: GOTO input0 ELSE IF ASC(re$(ii)) = 8 THEN GOTO input0
IF ASC(re$(ii)) < deb OR ASC(re$(ii)) > fin THEN CALL lettres(x, y): xx = 1: EXIT FOR
IF ii = nl + 1 THEN BEEP: GOTO input0
PRINT re$(ii);
NEXT ii

PRINT
r$ = "": FOR jj = 1 TO ii - 1: r$ = r$ + re$(jj): NEXT
r$ = LTRIM$(r$): r$ = RTRIM$(r$)
IF r$ = "" OR LEN(r$) = 1 THEN GOTO inp3
'épure
l = LEN(r$)
'enlève les espaces
ik = 1
DO
IF ASC(MID$(r$, ik, 1)) = 32 THEN
IF ASC(MID$(r$, ik + 1, 1)) = 32 THEN
r$ = MID$(r$, 1, ik) + MID$(r$, ik + 2): l = l - 1: ik = ik - 1
END IF
END IF
ik = ik + 1
LOOP WHILE ik <> l

'guillemet
z = INSTR(1, r$, " '")
IF z <> 0 THEN
r$ = MID$(r$, 1, z - 1) + "'" + MID$(r$, z + 2)
END IF
z = INSTR(1, r$, "' ")
IF z <> 0 THEN
r$ = MID$(r$, 1, z - 1) + "'" + MID$(r$, z + 2)
END IF

inp3:
r$ = LCASE$(r$)
IF fin% = 125 AND r$ = "" AND xx <> 1 THEN LOCATE , , 0: EXIT SUB
IF r$ = "" OR xx = 1 THEN BEEP: LOCATE ligne, col, 1: GOTO inpdebut
LOCATE , , 0
END SUB

DEFINT A-Z
SUB lettres (x, y)
LOCATE 23, 1, 0
FOR i = 1 TO 80
x$ = x$ + CHR$(SCREEN(23, i))
NEXT
COLOR , x
LOCATE 23, 1: PRINT SPACE$(80)
CALL centre(23, rougeclair, "Des lettres !")
CALL attendre(1)
COLOR blanc
LOCATE 23, 1: PRINT x$
COLOR 15, y
END SUB

DEFINT A-Z
SUB niv (limit, xx)
COLOR noir, vert
LOCATE 21, 2: PRINT " Niveau"; ni
LOCATE 21, 76: PRINT " "
IF limit + 1 - xx > 9 THEN LOCATE 21, 76 ELSE LOCATE 21, 77
PRINT limit + 1 - xx
COLOR blancbrill, bleu
END SUB

DEFINT A-Z
SUB niveau (r%, np%)

CALL titre
DIM p$(4)
p$(1) = "1": p$(2) = "2": p$(3) = "3": p$(4) = "4"

CALL cadre(7, 25, 30, 2, vert)
COLOR , vert
CALL centre(8, blancbrill, "Niveau de difficulté")

p$(1) = "1": p$(2) = "2": p$(3) = "3": p$(4) = "4"
CALL fleches(13, 40, p$(), np, r, rouge, 1, 23, 35)
END SUB

DEFINT A-Z
SUB resultats (re, ni, nbniv)
tit$ = titr$
titr$ = "resultats"
w! = LEN(tit$) / 2
IF w! = INT(LEN(tit$) / 2) THEN n = 4 ELSE n = 2
CALL titre
CALL cadre(5, 38 - INT(LEN(tit$) / 2), INT(LEN(tit$)) + n, 2, blanc)
COLOR , blanc
CALL centre(6, noir, tit$)
COLOR , bleu

IF re > 8 THEN
cc = vertclair: z$ = "Acquis"
ELSEIF re > 4 AND re < 9 THEN
cc = jaune: z$ = "En cours d'acquisition"
ELSE
cc = rougeclair: z$ = "Non acquis"
END IF

IF nbniv <> 1 THEN
s$ = " au niveau" + RTRIM$(STR$(ni))
ELSE
s$ = ""
END IF

CALL centre(10, cc, z$ + s$)
CALL cadre(12, 20, 40, 2, rouge)
LOCATE 13
i2 = 0
FOR i = 1 TO re
LOCATE , 21 + i2: PRINT "████"; '219
i2 = i2 + 4
NEXT
COLOR noir, noir
FOR i = re + 1 TO 10
LOCATE , 21 + i2: PRINT " ";
i2 = i2 + 4
NEXT
PRINT
COLOR , bleu
CALL centre(16, 15, "Pourcentage de réussite :" + STR$(re * 10) + " %")
CALL centre(18, 15, "(" + LTRIM$(STR$(re)) + " sur 10)")

END SUB

DEFINT A-Z
SUB tableauexo (p$())
'tableau des exercices
CALL cadre(2, 20, 40, 2, vert)
COLOR , vert
CALL centre(3, blancbrill, "ACTIVITES de FRANCAIS - Cycle 3")

CALL cadre(5, 2, 75, 16, rouge)
COLOR , bleu
LOCATE 22, 3: PRINT "["; : COLOR jaune: PRINT "Echap"; : COLOR blancbrill: PRINT "] = Fin"
CALL centre(22, blanc, gg2$)
IF eleve <> 0 THEN
COLOR blancbrill
LOCATE 22, 68: PRINT "["; : COLOR jaune: PRINT "*"; : COLOR blancbrill: PRINT "] = Bilan"
END IF


l3$ = SPACE$(24) + "│" + SPACE$(25) + "│" + SPACE$(23)
l4$ = STRING$(24, "─") + "┼" + STRING$(25, "─") + "┼" + STRING$(23, "─")
l5$ = STRING$(24, "─") + "┬" + STRING$(25, "─") + "┬" + STRING$(23, "─")
l6$ = STRING$(24, "─") + "┴" + STRING$(25, "─") + "┴" + STRING$(23, "─")

COLOR blanc, rouge
LOCATE 6
LOCATE , 3: PRINT l5$
'LOCATE , 3: PRINT l3$
FOR i = 1 TO 6
LOCATE , 3: PRINT l3$
LOCATE , 3: PRINT l4$
NEXT
LOCATE , 3: PRINT l3$
LOCATE , 3: PRINT l6$

'affiche liste exo
h1 = 6: h3 = 32: h3 = 58
COLOR blancbrill
LOCATE 7
FOR i = 1 TO 7
LOCATE , h1: PRINT p$(i): PRINT
NEXT
LOCATE 7
FOR i = 8 TO 14
LOCATE , h3: PRINT p$(i): PRINT
NEXT
LOCATE 7
FOR i = 15 TO 21
LOCATE , h3: PRINT p$(i): PRINT
NEXT

END SUB

DEFINT A-Z
SUB titre ()
MouseShow
w$ = titr$
COLOR , noir, noir: CLS
FOR i = 1 TO LEN(w$)
IF MID$(w$, i, 1) = "é" OR MID$(w$, i, 1) = "è" THEN
w$ = MID$(w$, 1, i - 1) + "E" + MID$(w$, i + 1)
END IF
NEXT
FOR i = 1 TO LEN(w$)
IF MID$(w$, i, 1) = "à" THEN
w$ = MID$(w$, 1, i - 1) + "A" + MID$(w$, i + 1)
END IF
NEXT

COLOR , vert
LOCATE 2, 1: PRINT SPACE$(80)
CALL centre(2, noir, UCASE$(w$))
LOCATE 21, 1: PRINT SPACE$(80)
VIEW PRINT 3 TO 20: COLOR blancbrill, bleu: CLS 2: VIEW PRINT

END SUB
 

 

DECLARE SUB niv (limit%, xx%)
DECLARE SUB accordverbe (re%, gg$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB cadre (v%, h%, l%, nli%, c%)
DECLARE SUB erreur2 ()
DECLARE SUB exact2 ()
DECLARE SUB fleches (v%, h%, w$(), np%, r%, coul%, drap%, v2%, h3%)
DECLARE SUB inputgen (nl%, r$, deb%, fin%, x%, y%)
DECLARE SUB niveau (r%, np%)
DECLARE SUB quitter (x%, y%)
DECLARE SUB resultats (re%, ni%, nbniv%)
DECLARE SUB titre ()
DECLARE SUB consigne (nl%, w$, z$, y$)
DECLARE SUB getinvimouse (rr%)
DECLARE SUB ouinon (r$)
DECLARE SUB attendre (tx!)
DECLARE SUB centre (v%, coul%, ph$)
DECLARE SUB ligne23 (x%, y%)
DECLARE SUB tri (n$(), no%)
DECLARE SUB solution (sol$)
DECLARE SUB MouseHide ()
DECLARE SUB MousePoll (row%, col%, lButton%, rButton%)
'module 2 FRANCAIS PRIMAIRE AAS
'Clerc Daniel 5/5/96
'version 1.0


DEFINT A-Z
SUB accordv (re%, ni%, t$(), p$(), v$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'1/5/96
DIM te2$(3), z(10)
re = 0
CALL accordverbe(re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
te2$(1) = "présent": te2$(2) = "imparfait": te2$(3) = "futur 1"
COLOR , bleu: CLS
COLOR jaune: LOCATE 2, 3: PRINT "Rappel"
CALL cadre(3, 2, 75, 18, rouge)
COLOR blanc, rouge
LOCATE 4
FOR i = 1 TO 17
LOCATE , 28: PRINT "│"; : LOCATE , 54: PRINT "│"
NEXT
LOCATE 6, 3: PRINT STRING$(25, "─") + "┼" + STRING$(25, "─") + "┼" + STRING$(24, "─")
LOCATE 13, 3: PRINT STRING$(25, "─") + "┼" + STRING$(25, "─") + "┼" + STRING$(24, "─")
COLOR jaune
LOCATE 5, 7: PRINT "PRESENT"; : LOCATE , 33: PRINT "IMPARFAIT"; : LOCATE , 59: PRINT "FUTUR 1"
LOCATE 7
FOR i = 1 TO 6: LOCATE , 7: COLOR blancbrill: PRINT p$(i); " chant"; : COLOR vertclair: PRINT t$(1, 1, i): NEXT
LOCATE 7
FOR i = 1 TO 6: LOCATE , 33: COLOR blancbrill: PRINT p$(i); " chant"; : COLOR vertclair: PRINT t$(2, 1, i): NEXT
LOCATE 7
FOR i = 1 TO 6: LOCATE , 59: COLOR blancbrill: PRINT p$(i); " chant"; : COLOR vertclair: PRINT t$(3, 1, i): NEXT
LOCATE 14
FOR i = 1 TO 6: LOCATE , 7: COLOR blancbrill: PRINT p$(i); " fin"; : COLOR vertclair: PRINT t$(1, 2, i): NEXT
LOCATE 14
FOR i = 1 TO 6: LOCATE , 33: COLOR blancbrill: PRINT p$(i); " fin"; : COLOR vertclair: PRINT t$(2, 2, i): NEXT
LOCATE 14
FOR i = 1 TO 6: LOCATE , 59: COLOR blancbrill: PRINT p$(i); " fin"; : COLOR vertclair: PRINT t$(3, 2, i): NEXT
COLOR , bleu
CALL centre(23, blanc, "Mémorise les terminaisons (1° et 2° groupe)")
CALL getinvimouse(r)

COLOR , bleu: CLS
COLOR jaune: LOCATE 6, 3: PRINT "Rappel"
CALL cadre(7, 2, 75, 11, rouge)
COLOR blanc, rouge
LOCATE 8
FOR i = 1 TO 10
LOCATE , 28: PRINT "│"; : LOCATE , 54: PRINT "│"
NEXT
LOCATE 10, 3: PRINT STRING$(25, "─") + "┼" + STRING$(25, "─") + "┼" + STRING$(24, "─")
COLOR jaune
LOCATE 9, 7: PRINT "PRESENT"; : LOCATE , 33: PRINT "IMPARFAIT"; : LOCATE , 59: PRINT "FUTUR 1"
LOCATE 11
FOR i = 1 TO 6: LOCATE , 7: COLOR blancbrill: PRINT p$(i); " vend"; : COLOR vertclair: PRINT t$(1, 3, i): NEXT
LOCATE 11
FOR i = 1 TO 6: LOCATE , 33: COLOR blancbrill: PRINT p$(i); " vend"; : COLOR vertclair: PRINT t$(2, 3, i): NEXT
LOCATE 11
FOR i = 1 TO 6: LOCATE , 59: COLOR blancbrill: PRINT p$(i); " vend"; : COLOR vertclair: PRINT t$(3, 3, i): NEXT
COLOR , bleu
CALL centre(23, blanc, "Mémorise les terminaisons (3° groupe)")

CALL getinvimouse(w)


'niveau
CALL niveau(ni, 2)

IF ni = 1 THEN nf = 12 ELSE nf = 24


CALL titre

FOR ii = 1 TO 10 '++++++++++++++
MouseHide
DO
DO
f = 0
z(ii) = INT(RND * nf) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
LOOP WHILE ni = 2 AND z(ii) <= 12

v = z(ii)

t = INT(RND * 3) + 1
p = INT(RND * 6) + 1

CALL cadre(5, 8, 10, 2, marron)
CALL cadre(5, 31, 12, 2, marron)
CALL cadre(5, 53, 19, 2, marron)
COLOR blancbrill, marron
LOCATE 6, 10: PRINT "VERBE"
LOCATE 6, 33: PRINT "TEMPS"
LOCATE 6, 55: PRINT "PERSONNE"

'verbe
CALL cadre(8, 8, 10, 4, rouge)
CALL cadre(8, 31, 12, 4, rouge)
LOCATE 10, 10: COLOR blancbrill, rouge
PRINT MID$(v$(v), 2, LEN(v$(v)) - 1)
'temps
LOCATE 10, 33: PRINT te2$(t)
'personne
CALL cadre(8, 53, 19, 4, rouge)
PE = p: IF p > 3 THEN PE = p - 3
LOCATE 10, 54: COLOR blancbrill, rouge: PRINT STR$(PE); "° du ";
IF p > 3 THEN PRINT "pluriel" ELSE PRINT "singulier"

g = VAL(LEFT$(v$(v), 1))
v$ = MID$(v$(v), 2, LEN(v$(v)) - 3)

acv1:
CALL niv(10, ii)
COLOR , noir
CALL centre(23, blanc, "Tape la terminaison")

SELECT CASE t
CASE 1
z$ = "Maintenant, "
CASE 2
z$ = "Hier, "
CASE 3
z$ = "Demain, "
END SELECT
z$ = z$ + p$(p) + " " + v$

CALL cadre(14, 8, 64, 4, blanc)
COLOR noir, blanc
LOCATE 16, INT(38 - (LEN(z$) / 2)): PRINT z$
LOCATE 16, LEN(z$) + INT(38 - (LEN(z$) / 2))

CALL inputgen(10, r$, 32, 125, noir, blanc)
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)
LOCATE 23, 38
IF r$ = t$(t, g, p) THEN
IF cc = 0 THEN re = re + 1
CALL exact2
ELSE
cc = cc + 1
IF cc < 2 THEN
CALL erreur2
CALL cadre(13, 53, 10, 7, rouge)
COLOR blancbrill, rouge
LOCATE 14: FOR i = 1 TO 6: LOCATE , 55: PRINT t$(t, g, i): NEXT
COLOR , noir
CALL centre(23, blanc, "Regarde")
CALL getinvimouse(r)
COLOR , bleu
LOCATE 13: FOR i = 1 TO 2: LOCATE , 53: PRINT SPACE$(12): NEXT
LOCATE 18: FOR i = 1 TO 3: LOCATE , 53: PRINT SPACE$(13): NEXT
COLOR , noir
ELSE
CALL solution(p$(p) + " " + v$ + t$(t, g, p))
END IF
GOTO acv1
END IF
cc = 0
NEXT ii '+++++++++++++++++=

IF re < 0 THEN re = 0
CALL resultats(re, ni, 2)


END SUB

DEFINT A-Z
SUB conjtc (re%, ni%, PM$(), PF$(), vv$(), pp$(), AUX$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'26/4/97
DIM p$(4), z(5), p2$(4)

p$(1) = "passé composé": p$(2) = "plus que parfait": p$(3) = "futur antérieur": p$(4) = "passé antérieur"
p2$(1) = "au présent": p2$(2) = "à l'imparfait": p2$(3) = "au futur": p2$(4) = "au passé simple"
titr$ = "conjugaison des temps composés"
re = 0: quest = 0

CALL titre
CALL cadre(7, 25, 30, 2, vert)
COLOR , vert
CALL centre(8, blancbrill, "Niveau de difficulté")

CALL fleches(12, 33, p$(), 4, ni, rouge, 1, 23, 35)

question:
CALL titre
CALL cadre(10, 5, 44, 4, blanc)
COLOR noir, blanc
LOCATE 11, 7: PRINT "Au "; : COLOR , marron: PRINT p$(ni); : COLOR , blanc: PRINT ","
LOCATE 13, 7
PRINT "l'auxiliaire (être ou avoir) se conjugue :"
CALL fleches(11, 57, p2$(), 4, rep, rouge, 1, 23, 57)
IF rep = ni THEN
CALL exact2
ELSE
CALL erreur2
quest = 1
GOTO question
END IF

'rappel
COLOR , bleu: CLS
CALL cadre(3, 2, 75, 18, rouge)
COLOR blanc, rouge
FOR v = 4 TO 20
LOCATE v, 40: PRINT "│"
NEXT v
LOCATE 12, 3: PRINT STRING$(37, "─") + "┤"
COLOR blancbrill
LOCATE 5
FOR i = 1 TO 6
LOCATE , 10: PRINT PM$(i); : LOCATE , 16: PRINT AUX$(i, ni, 1); : LOCATE , 24: PRINT pp$(1)
NEXT
AUX = 2: GENRE = 2
LOCATE 14
FOR pers = 1 TO 6
GOSUB ctctrait
LOCATE , 10: PRINT p$; : LOCATE , 16: PRINT AUX$(pers, ni, AUX); : LOCATE , 24: PRINT pp$(8); TER$
NEXT

LOCATE 5
FOR i = 1 TO 8
GOSUB ctctir: GOSUB ctctrait
LOCATE , 50: PRINT tt$
PRINT
NEXT
COLOR , bleu
CALL centre(23, blanc, "Mémorise")
CALL getinvimouse(r)

CALL titre

FOR ii = 1 TO 5 '+++++++++++
MouseHide
GOSUB ctctir
GOSUB ctctrait

ctc2:
'verbe
CALL cadre(5, 8, 10, 2, marron)
CALL cadre(5, 28, 18, 2, marron)
CALL cadre(5, 53, 19, 2, marron)
COLOR blancbrill, marron
LOCATE 6, 10: PRINT "VERBE"
LOCATE 6, 30: PRINT "TEMPS"
LOCATE 6, 55: PRINT "PERSONNE"

CALL cadre(8, 8, 10, 4, rouge)
CALL cadre(8, 28, 18, 4, rouge)
COLOR blancbrill, rouge
LOCATE 10, 10
PRINT vv$
'temps
LOCATE 10, 30
PRINT p$(ni)
'personne
CALL cadre(8, 53, 19, 5, rouge)
LOCATE 10, 55: COLOR blancbrill, rouge: PRINT pers$; n$
LOCATE 11, 55: PRINT g$

COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)
CALL niv(5, ii)
COLOR , noir
CALL centre(23, blanc, "Tape la réponse")
CALL cadre(16, 8, 64, 2, blanc)
LOCATE 17, INT(41 - (LEN(tt$) / 2))
CALL inputgen(30, r$, 32, 155, noir, blanc)
IF LEN(r$) < 2 THEN GOTO ctc2

l = LEN(r$)

COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)

IF LEFT$(tt$, 1) <> LEFT$(r$, 1) THEN
CALL centre(23, rougeclair, "Pronom personnel = " + p$)
CALL attendre(3): LOCATE 23, 1: PRINT SPACE$(80)
GOTO ctc2
END IF

IF r$ <> tt$ THEN
cc = cc + 1
IF cc < 2 THEN
IF TER$ <> "" AND RIGHT$(r$, 1) <> RIGHT$(tt$, 1) THEN
CALL centre(23, rougeclair, "Auxiliaire être " + CHR$(26) + " accord du participe passé" + " (" + g$ + "/" + n$ + ")")
CALL attendre(5)
ELSEIF RIGHT$(r$, LEN(pp$ + TER$)) <> pp$ + TER$ THEN
CALL centre(23, rougeclair, "Participe passé = " + pp$ + TER$)
CALL attendre(3)
ELSE
CALL erreur2
GOSUB ctc19
END IF
ELSE
CALL solution(tt$)
END IF
GOTO ctc2

ELSE
CALL exact2
IF cc = 0 THEN re = re + 2
END IF
cc = 0
NEXT ii '++++++++++++

re = re - quest
IF re < 0 THEN re = 0
CALL resultats(re, ni, 4)

EXIT SUB

ctctir:
GENRE = INT(RND * 2) + 1
pers = INT(RND * 6) + 1
IF ni = 4 THEN IF (pers = 4 OR pers = 5) THEN GOTO ctctir

DO
f = 0
z(ii) = INT(RND * 20) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
ve = z(ii)

IF GENRE = 1 THEN g$ = "masculin" ELSE g$ = "féminin"
IF pers < 4 THEN n$ = "singulier" ELSE n$ = "pluriel"
IF pers = 1 OR pers = 4 THEN
pers$ = "1° du "
ELSEIF pers = 2 OR pers = 5 THEN
pers$ = "2° du "
ELSE
pers$ = "3° du "
END IF

vv$ = LEFT$(vv$(ve), LEN(vv$(ve)) - 1)
pp$ = pp$(ve)
AUX = VAL(RIGHT$(vv$(ve), 1))
RETURN

ctctrait:
IF pers = 1 AND AUX = 2 AND ni <> 2 THEN p$ = "je ": GOTO ctct2
IF GENRE = 1 THEN p$ = PM$(pers) ELSE p$ = PF$(pers)
ctct2:
TER$ = ""
IF AUX = 1 THEN GOTO ctct1
IF pers < 4 AND GENRE = 2 THEN TER$ = "e"
IF pers > 3 AND GENRE = 1 THEN TER$ = "s"
IF pers > 3 AND GENRE = 2 THEN TER$ = "es"
ctct1:
tt$ = p$ + AUX$(pers, ni, AUX) + " " + pp$ + TER$
RETURN


ctc19:
perstemp = pers
CALL cadre(13, 53, 23, 7, rouge)
COLOR , rouge
LOCATE 14
FOR pers = 1 TO 6
GOSUB ctctrait
LOCATE , 55: PRINT tt$
NEXT
COLOR , noir
CALL centre(23, blanc, "Mémorise")
CALL getinvimouse(r)

LOCATE 13
COLOR , bleu
FOR i = 1 TO 8: LOCATE , 50: PRINT SPACE$(29): NEXT

pers = perstemp
GOSUB ctctrait
RETURN

END SUB

DEFINT A-Z
SUB groupev (re%, ni%, n$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'1/2/96
DIM p$(4), z(10)
p$(1) = "1° groupe": p$(2) = "2° groupe": p$(3) = "3° groupe": p$(4) = "Auxiliaire"
re = 0
'rappel
COLOR , bleu: CLS
LOCATE 4, 3: COLOR jaune: PRINT "Rappel"
CALL cadre(5, 2, 75, 14, rouge)

COLOR blanc, rouge
FOR i = 6 TO 18
LOCATE i, 16: PRINT "│"
NEXT
LOCATE 9, 3: PRINT STRING$(13, "─") + "┼" + STRING$(61, "─")
LOCATE 12, 3: PRINT STRING$(13, "─") + "┼" + STRING$(61, "─")
LOCATE 15, 3: PRINT STRING$(13, "─") + "┼" + STRING$(61, "─")

LOCATE 7: h = 18
COLOR jaune: LOCATE , 6: PRINT "1° groupe"; : COLOR blancbrill
LOCATE , h: g$ = "1": GOSUB gv10
COLOR vertclair
LOCATE , h: PRINT "Les verbes qui se terminent par ER - sauf 'aller'."
LOCATE 10
COLOR jaune: LOCATE , 6: PRINT "2° groupe"; : COLOR blancbrill
LOCATE , h: g$ = "2": GOSUB gv10
COLOR vertclair
LOCATE , h: PRINT "Les verbes qui se terminent par IR et qui font ISSONS."
LOCATE 13
COLOR jaune: LOCATE , 6: PRINT "3° groupe"; : COLOR blancbrill
LOCATE , h
PRINT "sentir, vendre, aller, prendre, croire, perdre, courir..."
COLOR vertclair
LOCATE , h: PRINT "Les autres verbes."
LOCATE 16
COLOR jaune: LOCATE , 4: PRINT "Auxiliaires"; : COLOR blancbrill
LOCATE , h: PRINT "être, avoir"
COLOR vertclair
LOCATE , h: PRINT "Ces deux verbes sont utilisés pour les temps composés."
CALL getinvimouse(w)

'niveau
CALL niveau(ni, 2)


FOR ii = 1 TO 10 '++++++++++++++++
CALL titre
DO
f = 0
IF ni = 1 THEN
z(ii) = INT(RND * 30) + 1
ELSE
z(ii) = INT(RND * 30) + 31
END IF
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
nu = z(ii)

n$ = n$(nu)
v$ = MID$(n$, 1, LEN(n$) - 1)
ra$ = MID$(v$, 1, LEN(v$) - 2)
t$ = RIGHT$(v$, 2)
g$ = RIGHT$(n$, 1)

CALL cadre(7, 21, 14, 2, marron)
CALL cadre(7, 44, 14, 2, marron)
COLOR , marron
LOCATE 8, 24: PRINT "VERBE"
LOCATE 8, 46: PRINT "GROUPE"

CALL cadre(10, 21, 14, 5, blanc)
COLOR noir, blanc
LOCATE 12, 24: PRINT v$

grv1:
CALL niv(10, ii)

CALL fleches(11, 47, p$(), 4, r, rouge, 1, 23, 47)

r$ = LTRIM$(STR$(r))

CALL ligne23(noir, noir)

IF r$ = g$ THEN
IF cc = 0 THEN re = re + 1
CALL exact2
ELSE
cc = cc + 1
CALL erreur2
IF g$ = "4" THEN
'
ELSEIF v$ = "aller" THEN
CALL centre(23, rougeclair, "Exception !")
CALL attendre(1.5)
LOCATE 23, 1: PRINT SPACE$(80)
ELSEIF t$ <> "ir" THEN
LOCATE 12, 24: COLOR noir, blanc: PRINT ra$; : COLOR rouge: PRINT t$: COLOR noir
LOCATE 13, 24: PRINT SPACE$(LEN(ra$)) + "──"
ELSE
CALL centre(23, rougeclair, "Nous " + ra$ + "issons - Nous " + ra$ + "ons ???")
CALL attendre(3)
LOCATE 23, 1: PRINT SPACE$(80)
END IF
GOTO grv1
END IF
cc = 0
NEXT ii

CALL resultats(re, ni, 2)

EXIT SUB

gv10:
FOR ii = 1 TO 6
DO
DO
f = 0
z(ii) = INT(RND * 60) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
LOOP WHILE RIGHT$(n$(z(ii)), 1) <> g$

PRINT MID$(n$(z(ii)), 1, LEN(n$(z(ii))) - 1);
IF ii < 6 THEN PRINT ", "; ELSE PRINT "..."
NEXT
'remise à zéro z()
FOR i = 1 TO 10: z(i) = 0: NEXT
RETURN

END SUB

DEFINT A-Z
SUB infinitif (re%, ni%, inf$(), inf2$(), conj$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'1/11/96
DIM z(10), conj2$(15)

'infinitif niveau 3
conj2$(1) = "Ce matin, j'ai eu un appel téléphonique de mon ami."
conj2$(2) = "Nous avions parlé ensemble de ce futur voyage au Canada."
conj2$(3) = "La semaine dernière, vous avez pris pour la première fois l'avion."
conj2$(4) = "Cette fois ci, tu n'as rien appris du tout !"
conj2$(5) = "Il a compris cet exercice du premier coup !"
conj2$(6) = "Avez-vous vendu votre collection de timbres ?"
conj2$(7) = "Bien sûr, tu ne l'as pas cru !"
conj2$(8) = "Vous auriez voulu le prendre avec vous ?"
conj2$(9) = "Ce matin, elle est partie définitivement."
conj2$(10) = "Les pompiers sont arrivés à temps pour sauver cet accidenté."
conj2$(11) = "Tu étais sorti depuis combien de temps ?"
conj2$(12) = "Le mois dernier, il a plu presque tout le temps."
conj2$(13) = "Maintenant, connais-tu l'infinitif des verbes ?"
conj2$(14) = "Pendant ses loisirs, il pratique de plus en plus le V.T.T."
conj2$(15) = "Après les fêtes, il avait été vraiment très malade."

nf = 15 'moitié
re = 0

'niveau
CALL niveau(ni, 3)

SELECT CASE ni

CASE 1, 2
IF ni = 1 THEN
debut = 1: fin = 13
ELSE
debut = 16: fin = 28
END IF

CALL titre
CALL cadre(5, 22, 34, 14, rouge)
COLOR , rouge
LOCATE 6
FOR i = debut TO fin
COLOR blancbrill
LOCATE , 26: PRINT conj$(i); " "; CHR$(26);
LOCATE , 45: COLOR jaune: PRINT inf$(i)
NEXT
COLOR , noir
CALL centre(23, blanc, "Mémorise")
CALL getinvimouse(r)
END SELECT

CALL titre

FOR ii = 1 TO 10 '+++++++++
MouseHide
DO
f = 0
IF ni = 1 THEN
z(ii) = INT(RND * nf) + 1
ELSEIF ni = 2 THEN
z(ii) = INT(RND * nf) + 1 + 15
ELSE
z(ii) = INT(RND * 15) + 1
END IF

FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
k = z(ii)

COLOR , noir
LOCATE 22, 30: PRINT SPACE$(30)

IF ni = 1 OR ni = 2 THEN
CALL cadre(8, 15, 18, 2, vert)
CALL cadre(8, 47, 18, 2, vert)
COLOR blancbrill, vert
LOCATE 9, 17: PRINT "Verbe conjugué"
LOCATE 9, 49: PRINT "Infinitif"
CALL cadre(11, 15, 18, 4, rouge)
CALL cadre(11, 47, 18, 4, blanc)

LOCATE 13, 17
COLOR blancbrill, rouge: PRINT conj$(k)

ELSE
CALL cadre(7, 4, 72, 4, rouge)
CALL cadre(14, 32, 16, 4, blanc)
COLOR , rouge
CALL centre(9, blancbrill, conj2$(k))
END IF

inf0:
CALL niv(10, ii)
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)

IF ni < 3 THEN
CALL centre(23, blanc, "Tape le verbe")
LOCATE 13, 50
CALL inputgen(11, r$, 65, 165, noir, blanc)

ELSE
CALL centre(23, blanc, "Tape l'infinitif du verbe")
LOCATE 16, 36
CALL inputgen(11, r$, 65, 165, noir, blanc)
END IF

COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)
IF ni < 3 THEN
sol$ = inf$(k)
ELSE
sol$ = inf2$(k)
END IF

IF r$ = sol$ THEN
CALL exact2
IF cc = 0 THEN re = re + 1
ELSE
'les accents circonflexes
IF (r$ = "etre" OR r$ = "ètre" OR r$ = "étre") AND sol$ = "être" THEN
BEEP
CALL centre(23, rougeclair, "Tu dois taper l'accent circonflexe...")
CALL centre(22, jaune, "ê -> touches ^ puis e")
CALL attendre(2)
GOTO inf0
END IF
IF r$ = "connaitre" AND sol$ = "connaître" THEN
BEEP
CALL centre(23, rougeclair, "Tu dois taper l'accent circonflexe...")
CALL centre(22, jaune, "î -> touches ^ puis i")
CALL attendre(2)
GOTO inf0
END IF

cc = cc + 1
IF cc < 2 THEN
CALL erreur2
CALL centre(23, rougeclair, "Aide : " + MID$(sol$, 1, LEN(sol$) - 2) + "..")
CALL attendre(2)
ELSE
CALL solution(sol$)
END IF
GOTO inf0
END IF
cc = 0
NEXT ii '++++++++++++

CALL resultats(re, ni, 3)
END SUB

DEFINT A-Z
SUB radical (re%, ni%, v$(), pp$(), g1$(), G2$(), G3$(), G4$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'3/2/97
DIM z(10)
ba$ = "-"
re = 0

'presentation
w$ = "Avec l'aide des flèches, tu vas"
z$ = "séparer le radical de la terminaison."
CALL consigne(2, w$, z$, y$)

'niveau
CALL niveau(ni, 2)

'rappel
COLOR , bleu: CLS
COLOR jaune: LOCATE 6, 20: PRINT "Rappel"
CALL cadre(7, 20, 40, 13, rouge)
COLOR blancbrill, rouge
LOCATE 9, 23
PRINT "Après avoir enlevé la terminaison,"
LOCATE , 23
PRINT "la partie du verbe qui reste"
LOCATE , 23
PRINT "s'appelle le "; : COLOR vertclair: PRINT "RADICAL"; : COLOR blancbrill: PRINT "."
PRINT
FOR i = 1 TO 6
LOCATE , 31: PRINT pp$(i); : LOCATE , 36: COLOR vertclair: PRINT "parl"; : COLOR jaune: PRINT g1$(i)
COLOR blancbrill
NEXT

CALL getinvimouse(w)

FOR ii = 1 TO 10 '++++++++++
DO
f = 0
IF ni = 1 THEN
z(ii) = INT(RND * 10) + 1
ELSE
z(ii) = INT(RND * 10) + 11
END IF
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
n = z(ii)

g = VAL(RIGHT$(v$(n), 1))
af$ = MID$(v$(n), 1, LEN(v$(n)) - 1): GOSUB racurs
v$ = MID$(af$, 1, p - 1) + MID$(af$, p + 1)
so$ = MID$(af$, p + 1)
af$ = ba$ + v$
ra2:
CALL titre
CALL niv(10, ii)
CALL cadre(6, 42, 20, 12, rouge)
CALL cadre(10, 2 + 15, LEN(af$) + 2, 4, blanc)

COLOR blanc
LOCATE 23, 21: PRINT "puis "; rt$

DO
DO
LOCATE 23, 17: COLOR blanc
IF LEFT$(af$, 1) <> ba$ THEN
PRINT CHR$(27)
ELSE
PRINT " "
END IF

LOCATE 23, 19
IF RIGHT$(af$, 1) <> ba$ THEN
PRINT CHR$(26)
ELSE
PRINT " "
END IF

COLOR noir, blanc
LOCATE 12, 19: PRINT af$
COLOR , noir

DEF SEG = 0
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
'COLOR blanc: LOCATE 21, 1: PRINT v_mouse, h_mouse'===
IF lButton THEN
IF v_mouse = 23 THEN
IF h_mouse = 17 THEN
souris = 1
x = 75
CALL attendre(.2)
EXIT DO

ELSEIF h_mouse = 19 THEN
souris = 1
x = 77
CALL attendre(.2)
EXIT DO

ELSEIF h_mouse >= 26 AND h_mouse <= 28 THEN
souris = 1
x = 13
CALL attendre(.3)
EXIT DO
END IF
ELSE
BEEP
END IF
END IF
LOOP WHILE r$ = ""

IF souris = 0 THEN
IF LEN(r$) < 2 THEN x = ASC(r$) ELSE x = ASC(RIGHT$(r$, 1))
END IF

SELECT CASE x

CASE 27
CALL quitter(noir, noir)

CASE 75
IF LEFT$(af$, 1) <> ba$ THEN
GOSUB racurs
p = p - 1: GOSUB ratrans
GOSUB affiche
END IF

CASE 77
IF RIGHT$(af$, 1) <> ba$ THEN
GOSUB racurs
p = p + 1: GOSUB ratrans
GOSUB affiche
END IF

CASE 13
EXIT DO

CASE ELSE
BEEP
LOCATE 23, 1: PRINT SPACE$(80)
CALL centre(23, rougeclair, "Utilise les flèches puis valide.")
CALL attendre(1.5)
LOCATE 23, 1: PRINT SPACE$(80)
LOCATE 23, 21: PRINT "puis "; rt$

END SELECT

LOOP

GOSUB racurs

LOOP WHILE p = 1

CALL ligne23(noir, noir)

GOSUB affiche

IF so$ = te$ THEN
IF cc = 0 THEN re = re + 1
CALL exact2
ELSE
CALL erreur2
cc = cc + 1: GOTO ra2
END IF
cc = 0
NEXT ii '++++++++++++++

CALL resultats(re, ni, 2)

EXIT SUB

racurs:
FOR p = 1 TO LEN(af$)
IF MID$(af$, p, 1) = ba$ THEN EXIT FOR
NEXT
RETURN
ratrans:
af$ = MID$(v$, 1, p - 1) + ba$ + MID$(v$, p)
RETURN

affiche:
ra$ = MID$(af$, 1, p - 1)
te$ = MID$(af$, p + 1)
CALL cadre(6, 42, 20, 12, rouge)
COLOR , rouge
LOCATE 8, 19 + 25: PRINT "radical : "; : COLOR vertclair: PRINT ra$: COLOR blancbrill
LOCATE , 19 + 25
IF LEN(te$) <= 4 THEN
PRINT "terminaison : "; : COLOR jaune: PRINT te$
ELSE
PRINT "termin. : "; : COLOR jaune: PRINT te$
END IF
COLOR blancbrill
LOCATE 11, 19 + 25: PRINT pp$(1); " "; : COLOR vertclair: PRINT ra$; : COLOR jaune
IF g = 1 THEN PRINT g1$(1)
IF g = 2 THEN PRINT G2$(1)
IF g = 3 THEN PRINT G3$(1)
IF g = 4 THEN PRINT G4$(1)
FOR i = 2 TO 6
LOCATE , 19 + 25
COLOR blancbrill
PRINT pp$(i); " "; : COLOR vertclair: PRINT ra$; : COLOR jaune
IF g = 1 THEN PRINT g1$(i)
IF g = 2 THEN PRINT G2$(i)
IF g = 3 THEN PRINT G3$(i)
IF g = 4 THEN PRINT G4$(i)
NEXT
COLOR blanc, noir
RETURN

END SUB

DEFINT A-Z
SUB recolle (re, ni, rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'25/3/96
DIM h(15), r$(31), mot$(205), m$(20), m2$(20), z(10), x(15, 60)
n2 = 30: zz = 0: re = 0

w$ = "L'ordinateur va mélanger les lettres"
z$ = "d'un mot."
CALL consigne(2, w$, z$, y$)

CALL niveau(ni, 4)

CALL titre

OPEN "mots2.dat" FOR INPUT AS #1
i = 1
DO
INPUT #1, mot$(i)
i = i + 1
LOOP WHILE i < 201
CLOSE #1
nf = i - 1

'à partir de :
z = INT(RND * 50) + 1

i = 1: pt = 1

DO
SELECT CASE ni
CASE 1
IF LEN(mot$(z + i)) < 7 THEN r$(pt) = mot$(z + i): pt = pt + 1
CASE 2
IF LEN(mot$(z + i)) < 8 THEN r$(pt) = mot$(z + i): pt = pt + 1
CASE 3
IF LEN(mot$(z + i)) > 6 AND LEN(mot$(z + i)) < 9 THEN r$(pt) = mot$(z + i): pt = pt + 1
CASE 4
IF LEN(mot$(z + i)) > 6 AND LEN(mot$(z + i)) < 12 THEN r$(pt) = mot$(z + i): pt = pt + 1
END SELECT
i = i + 1
LOOP WHILE pt < 31

ERASE mot$

CALL titre

'affichage des mots
CALL cadre(8, 5, 70, 6, marron)
COLOR blancbrill, marron
debut = 1: fin = 5: h = 10

DO
LOCATE 9
FOR i = debut TO fin
LOCATE , h: PRINT r$(i)
NEXT
debut = fin + 1
fin = fin + 5
h = h + 11
LOOP WHILE fin < 35

COLOR , noir
CALL centre(23, blanc, "Mémorise")
CALL getinvimouse(w)

FOR ll = 1 TO 10 '+++++++++++++++++++++++
CALL titre
CALL cadre(6, 22, 36, 9, rouge)

DO
f = 0
z(ll) = INT(RND * n2) + 1
FOR j = 1 TO ll - 1
IF z(ll) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
nt = z(ll)

c = 0
'efface cadre
COLOR , noir
FOR ku = 7 TO 14
LOCATE ku, 23: PRINT SPACE$(36)
NEXT

FOR v = 6 TO 15
FOR h = 23 TO 56
x(v, h) = 0
NEXT h, v
cc = 0

FOR k = 1 TO LEN(r$(nt))

DO
h = INT(RND * 30) + 25
v = INT(RND * 6) + 8
IF cc = 0 THEN cc = 1: EXIT DO
LOOP WHILE x(v, h) = 1

x(v, h) = 1: x(v, h + 1) = 1: x(v, h + 2) = 1: x(v, h - 1) = 1: x(v, h - 2) = 1
x(v - 1, h) = 1: x(v + 1, h) = 1: x(v - 2, h) = 1: x(v + 2, h) = 1
x(v - 1, h - 1) = 1: x(v + 1, h - 1) = 1: x(v - 1, h + 1) = 1: x(v + 1, h + 1) = 1

LOCATE v, h: PRINT MID$(r$(nt), k, 1)

NEXT k

rec1:
CALL niv(10, ll)
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)
CALL centre(23, blanc, "Tape le mot [*] = liste entière")
COLOR , bleu
nl = LEN(r$(nt))
h = INT((80 / 2) + 1 - (nl / 2))
CALL cadre(17, 22, 36, 2, blanc)
COLOR , blanc

CALL centre(18, noir, STRING$(nl, "."))
LOCATE 18, h
CALL inputgen(nl, r$, 32, 163, noir, blanc)

IF r$ = "*" THEN
GOSUB recaf
GOTO rec1
END IF

COLOR , noir
IF r$ <> r$(nt) THEN
LOCATE 23, 1: PRINT SPACE$(80)

IF c > 1 THEN
BEEP
LOCATE 23, 1: PRINT SPACE$(80)
CALL centre(23, rougeclair, "Solution : " + r$(nt))
CALL attendre(2)
LOCATE 23, 1: PRINT SPACE$(80)
GOTO rec1
END IF
c = c + 1

IF LEN(r$) < LEN(r$(nt)) THEN
w$ = "Tu as utilisé seulement " + LTRIM$(STR$(LEN(r$))) + " lettre"
IF LEN(r$) > 1 THEN w$ = w$ + "s."
CALL centre(23, rougeclair, w$)
ELSEIF LEN(r$) > LEN(r$(nt)) THEN
longueur$ = LTRIM$(STR$(LEN(r$) - LEN(r$(nt))))
w$ = "Tu as utilisé " + longueur$ + " lettre"
IF VAL(longueur$) > 1 THEN w$ = w$ + "s"
w$ = w$ + " en trop."
CALL centre(23, rougeclair, w$)
ELSE
FOR j = 1 TO LEN(r$)
m$(j) = MID$(r$(nt), j, 1)
m2$(j) = MID$(r$, j, 1)
NEXT
CALL tri(m$(), LEN(r$))
CALL tri(m2$(), LEN(r$))
m$ = "": m2$ = ""
FOR j = 1 TO LEN(r$)
m$ = m$ + m$(j)
m2$ = m2$ + m2$(j)
NEXT
IF m$ <> m2$ THEN
CALL centre(23, rougeclair, "Tu as tapé des lettres non proposées.")
ELSE
CALL centre(23, rougeclair, "Ce mot ne fait pas partie de la liste.")
c = 0
END IF
END IF
CALL attendre(2): GOTO rec1
ELSE
LOCATE 23, 1: PRINT SPACE$(80)
CALL centre(23, jaune, "Exact")
CALL attendre(.7)
LOCATE 23, 1: PRINT SPACE$(80)
IF c = 0 THEN re = re + 1
END IF
FOR n = 1 TO LEN(r$(nt))
h(n) = 0
NEXT

NEXT ll '++++++++++++++++++++++++

VIEW PRINT
CALL resultats(re, ni, 4)

EXIT SUB

recaf:
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)
COLOR blancbrill, bleu
LOCATE 16
FOR i = 1 TO 5
PRINT SPACE$(80)
NEXT
debut = 1: fin = 5: h = 4
DO
LOCATE 16
FOR i = debut TO fin
LOCATE , h: PRINT r$(i)
NEXT
debut = fin + 1
fin = fin + 5
h = h + 13
LOOP WHILE fin < 35

COLOR blanc, noir

LOCATE 23, 37: PRINT rt$
CALL getinvimouse(w)
COLOR , bleu
LOCATE 16
FOR i = 1 TO 5
PRINT SPACE$(80)
NEXT

RETURN

END SUB
 

 

DECLARE SUB niv (limit%, xx%)
DECLARE SUB accordpartpasse (re%, gg$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB cadre (v%, h%, l%, nli%, c%)
DECLARE SUB erreur2 ()
DECLARE SUB exact2 ()
DECLARE SUB fleches (v%, h%, w$(), np%, r%, coul%, drap%, v2%, h3%)
DECLARE SUB fleches2 (v%, h%, ll%, nm%, h3%, w$(), r%, coul%)
DECLARE SUB inputgen (nl%, r$, deb%, fin%, x%, y%)
DECLARE SUB niveau (r%, np%)
DECLARE SUB quitter (x%, y%)
DECLARE SUB resultats (re%, ni%, nbniv%)
DECLARE SUB titre ()
DECLARE SUB consigne (nl%, w$, z$, y$)
DECLARE SUB getinvimouse (rr%)
DECLARE SUB ouinon (r$)
DECLARE SUB attendre (tx!)
DECLARE SUB centre (v%, coul%, ph$)
DECLARE SUB entree (x%, y%, drapeau%)
DECLARE SUB ligne23 (x%, y%)
DECLARE SUB afficheformate (m$(), nm%)
DECLARE SUB pleinecran2 (r$, phrase$, m$, v1%, v2%, rt$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB recupere2 (m$, v1%, v2%)
DECLARE SUB traitementtexte (m$, m2$, phrase$, re%, rt$, gg2$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB transforme (m$)
DECLARE SUB trouvemot (m$, m$(), nm%)
DECLARE SUB solution (sol$)
DECLARE SUB MouseHide ()
DECLARE SUB MousePoll (row%, col%, lButton%, rButton%)
'module 3 FRANCAIS AAs
'Daniel CLERC 5/5/96
'version 1.0


DEFINT A-Z
SUB accopp (re%, ni%, SU$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'3/2/96
DIM VS$(4), VP$(4), pp$(3), z(10)
nf = 22
re = 0
CALL accordpartpasse(re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
pp$(1) = "venu": pp$(2) = "parti": pp$(3) = "arrivé"
VS$(1) = "est": VS$(2) = "était": VS$(3) = "sera": VS$(4) = "fut"
VP$(1) = "sont": VP$(2) = "étaient": VP$(3) = "seront": VP$(4) = "furent"

COLOR , bleu: CLS
LOCATE 7, 21: COLOR vertclair: PRINT "Rappel"
CALL cadre(8, 20, 40, 10, rouge)

COLOR blanc, rouge
w$ = "│ │ │ │"
w2$ = "──────────┼───────────┼───────────"
LOCATE 10, 14 + 20: PRINT "┌───────────┬───────────┐"
LOCATE , 14 + 20: PRINT "│ │ │"
LOCATE , 3 + 20: PRINT "┌" + w2$ + "┤"
LOCATE , 3 + 20: PRINT w$
LOCATE , 3 + 20: PRINT "├" + w2$ + "┤"
LOCATE , 3 + 20: PRINT w$
LOCATE , 3 + 20: PRINT "└──────────┴───────────┴───────────┘"
COLOR vertclair
LOCATE 11, 16 + 20: PRINT "Singulier": LOCATE 11, 28 + 20: PRINT "Pluriel"
LOCATE 13, 5 + 20: PRINT "Masculin": LOCATE 15, 5 + 20: PRINT "Féminin"
COLOR jaune
LOCATE 13, 18 + 20: PRINT "--": LOCATE 13, 30 + 20: PRINT "-s"
LOCATE 15, 18 + 20: PRINT "e-": LOCATE 15, 30 + 20: PRINT "es"
CALL getinvimouse(w)

CALL titre

FOR ii = 1 TO 10 '++++++++++++++
MouseHide
ff = 0

DO
f = 0
z(ii) = INT(RND * nf) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
n = z(ii)

SU$ = SU$(n)
IF LEFT$(SU$, 1) = "1" THEN v$ = VS$(INT(RND * 4) + 1) ELSE v$ = VP$(INT(RND * 4) + 1)
pp$ = pp$(INT(RND * 3) + 1)

acpp1:
CALL niv(10, ii)
COLOR , noir: CALL centre(23, blanc, "Tape l'accord")

CALL cadre(10, 16, 48, 4, blanc)
COLOR noir, blanc

z$ = MID$(SU$, 3) + " " + v$ + " " + pp$
LOCATE 12, INT(40 - (LEN(z$) / 2)): PRINT z$
LOCATE 12, LEN(z$) + INT(40 - (LEN(z$) / 2))
CALL inputgen(2, r$, 65, 125, noir, blanc)
COLOR , noir
EX$ = MID$(SU$, 1, 2)
IF EX$ = "11" AND r$ = "" THEN ff = 1
IF EX$ = "12" AND r$ = "e" THEN ff = 1
IF EX$ = "21" AND r$ = "s" THEN ff = 1
IF EX$ = "22" AND r$ = "es" THEN ff = 1

IF ff = 0 THEN
cc = cc + 1
IF cc < 2 THEN
CALL erreur2
IF EX$ = "11" THEN CALL centre(23, rougeclair, "masculin singulier")
IF EX$ = "12" THEN CALL centre(23, rougeclair, "féminin singulier")
IF EX$ = "21" THEN CALL centre(23, rougeclair, "masculin pluriel")
IF EX$ = "22" THEN CALL centre(23, rougeclair, "féminin pluriel")
CALL attendre(2)
CALL ligne23(noir, noir)
ELSE
BEEP
IF EX$ = "11" THEN CALL centre(23, rougeclair, "masculin singulier -> rien")
IF EX$ = "12" THEN CALL centre(23, rougeclair, "féminin singulier -> e")
IF EX$ = "21" THEN CALL centre(23, rougeclair, "masculin pluriel -> s")
IF EX$ = "22" THEN CALL centre(23, rougeclair, "féminin pluriel -> es")
CALL attendre(2)
CALL ligne23(noir, noir)
END IF
GOTO acpp1
ELSE
CALL exact2
IF cc = 0 THEN re = re + 1
END IF
cc = 0
NEXT ii '++++++++++

IF re < 0 THEN re = 0
CALL resultats(re, ni, 3)

END SUB

DEFINT A-Z
SUB fonction (re%, ni%, rt$, gg$, gg2$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'14/2/96
DIM ph$(36), h(36), l(36), s(36), p$(10), z(10)
cc = 0: re = 0


'niveau 1 = 18 phrases
ph$(1) = "Mardi 12 janvier, vers 16 h 30, un automobiliste a dérapé sur la chaussée."
h(1) = 50: l(1) = 8: s(1) = 1
ph$(2) = "Grisée par la vitesse, Sarah accéléra encore."
h(2) = 24: l(2) = 5: s(2) = 2
ph$(3) = "La tempête faisait rage. Le marin bloqua son gouvernail."
h(3) = 42: l(3) = 14: s(3) = 3
ph$(4) = "A cet instant précis, il essaya de m'attraper par le col de ma chemise."
h(4) = 1: l(4) = 20: s(4) = 4
ph$(5) = "Dans la classe, Mathieu fouille dans sa trousse à la recherche d'un crayon."
h(5) = 33: l(5) = 15: s(5) = 5
ph$(6) = "L'élève en difficulté se découragea vite. Dommage !"
h(6) = 37: l(6) = 4: s(6) = 6
ph$(7) = "Tous les soirs, je me promène avec mon chien dans le parc."
h(7) = 20: l(7) = 10: s(7) = 1
ph$(8) = "Maman, comme chaque soir, est venue vérifier nos dents et nos oreilles."
h(8) = 1: l(8) = 5: s(8) = 2
ph$(9) = "Valentine avait invité son amie Jessica chez elle."
h(9) = 24: l(9) = 16: s(9) = 3
ph$(10) = "Nous jouerons tous les deux au tennis cet été."
h(10) = 39: l(10) = 7: s(10) = 4
ph$(11) = "Ce soir, les bateaux sont tous rentrés dans le port de plaisance."
h(11) = 40: l(11) = 25: s(11) = 5
ph$(12) = "Dans ses montagnes, le berger prenait plaisir à vivre lentement."
h(12) = 55: l(12) = 9: s(12) = 6
ph$(13) = "Pendant plusieurs mois, le voilier sillonna les océans."
h(13) = 36: l(13) = 8: s(13) = 1
ph$(14) = "Cette année, Guillaume et Julien passeront leurs vacances dans les Pyrénées."
h(14) = 14: l(14) = 19: s(14) = 2
ph$(15) = "Sur son lit, Michel lit une bande dessinée depuis plus d'une heure."
h(15) = 25: l(15) = 18: s(15) = 3
ph$(16) = "Les volcanologues étaient parvenus au bord du cratère en fin de soirée."
h(16) = 55: l(16) = 16: s(16) = 4
ph$(17) = "Près du volcan, les maisons ont été recouvertes de lave."
h(17) = 1: l(17) = 14: s(17) = 5
ph$(18) = "Après avoir fait cet effort violent, il reprend son souffle lentement."
h(18) = 61: l(18) = 9: s(18) = 6

'niveau 2 18 phrases
'1 v, 2 s, 3 a, 4 cod, 5 coi, 6 cct, 7 ccl, 8 ccm, 9 ccbut., 10 cccause
ph$(19) = "L'hiver, à la montagne, sous nos pas crissait la neige."
h(19) = 47: l(19) = 8: s(19) = 2
ph$(20) = "Les habitants de ce village étaient intrigués par le passage du rallye."
h(20) = 37: l(20) = 9: s(20) = 3
ph$(21) = "La randonnée que nous venons de terminer était épuisante."
h(21) = 48: l(21) = 9: s(21) = 3
ph$(22) = "Cet exercice de grammaire semble beaucoup trop compliqué pour lui."
h(22) = 34: l(22) = 23: s(22) = 3
ph$(23) = "Nadège a encore oublié de prendre son cartable ce matin !"
h(23) = 35: l(23) = 12: s(23) = 4
ph$(24) = "Il offre ce magnifique bouquet de fleurs à sa soeur."
h(24) = 10: l(24) = 31: s(24) = 4
ph$(25) = "L'automobiliste avait perdu ses clefs. Il les a retrouvées sous la banquette."
h(25) = 43: l(25) = 3: s(25) = 4
ph$(26) = "Clément parle à son ami de son futur voyage en Asie."
h(26) = 15: l(26) = 9: s(26) = 5
ph$(27) = "A l'évaluation, il n'a pas répondu aux trois questions."
h(27) = 36: l(27) = 19: s(27) = 5
ph$(28) = "Le match fini, les joueurs se douchent dans les vestiaires."
h(28) = 1: l(28) = 13: s(28) = 6
ph$(29) = "La maison était déserte depuis au moins deux ans."
h(29) = 25: l(29) = 24: s(29) = 6
ph$(30) = "Les vaches regagnent l'étable en fin d'après-midi."
h(30) = 31: l(30) = 19: s(30) = 6
ph$(31) = "Ils ont planté des arbres autour de ce petit village."
h(31) = 27: l(31) = 26: s(31) = 7
ph$(32) = "Courageusement, le sauveteur plongea dans l'eau glacée."
h(32) = 1: l(32) = 14: s(32) = 8
ph$(33) = "Poils hérissés, le chat surveille attentivement le chien."
h(33) = 1: l(33) = 14: s(33) = 8
ph$(34) = "Je lui prête mes outils afin qu'il répare mon vélo."
h(34) = 25: l(34) = 26: s(34) = 9
ph$(35) = "Le lancement de la fusée Ariane est reporté parce que la météo est mauvaise."
h(35) = 45: l(35) = 31: s(35) = 10
ph$(36) = "Cette fille échoue parce qu'elle manque de confiance en elle."
h(36) = 20: l(36) = 41: s(36) = 10

lt$ = STRING$(40, "─")

'rappel
COLOR , bleu: CLS
h = 6
LOCATE 1, 3: COLOR jaune: PRINT "Rappel"
CALL cadre(2, 2, 75, 20, rouge)
LOCATE 4
COLOR jaune, rouge: LOCATE , h: PRINT "Sujet :": COLOR blancbrill
LOCATE , h: PRINT "On peut l'encadrer par "; CHR$(34); "C'est ... qui"; CHR$(34); " ou "; CHR$(34); "Ce sont ... qui"; CHR$(34)
COLOR blanc: LOCATE 7, 3: PRINT STRING$(75, "─")
COLOR jaune: LOCATE , h: PRINT "Complément d'objet (complète le verbe) :": COLOR blancbrill
LOCATE , h
PRINT "On peut le remplacer par "; CHR$(34); "quelquechose"; CHR$(34); " ou par "; CHR$(34); "quelqu'un"; CHR$(34); "."
PRINT
LOCATE , h + 3: PRINT "direct : on peut le mettre à la voix passive."
LOCATE , h + 3: PRINT "indirect : il est séparé du verbe par une préposition."
COLOR blanc: LOCATE 14, 3: PRINT STRING$(75, "─")
COLOR jaune: LOCATE , h: PRINT "Complément circonstanciel (complète la phrase) :": COLOR blancbrill
LOCATE , h
PRINT "On peut le déplacer et le supprimer."
COLOR blanc: LOCATE 18, 3: PRINT STRING$(75, "─")
COLOR jaune: LOCATE , h: PRINT "Attribut :": COLOR blancbrill
LOCATE , h
PRINT "Il suit les verbes être, paraître, devenir, sembler, demeurer, rester."
CALL getinvimouse(w)

CALL niveau(ni, 2)
SELECT CASE ni
CASE 1
p$(1) = "Verbe": p$(2) = "Sujet": p$(3) = "Complément d'objet direct"
p$(4) = "Complément circonstanciel de temps"
p$(5) = "Complément circonstanciel de lieu"
p$(6) = "Complément circonstanciel de manière"

CASE 2
p$(1) = "Verbe": p$(2) = "Sujet": p$(3) = "Attribut": p$(4) = "Compl. d'objet direct"
p$(5) = "Compl. d'objet indirect": p$(6) = "Compl. circonst. de temps"
p$(7) = "Compl. circonst. de lieu": p$(8) = "Compl. circonst. de manière"
p$(9) = "Subord. circonst. de but": p$(10) = "Subord. circonst. de cause"

END SELECT

CALL titre

FOR ii = 1 TO 10
CALL niv(10, ii)

'tirage
DO
f = 0
IF ni = 1 THEN
z(ii) = INT(RND * 18) + 1
ELSE
z(ii) = INT(RND * 18) + 19
END IF
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
n = z(ii)
rep = s(n)
CALL cadre(5, 2, 75, 4, blanc)
COLOR noir, blanc
CALL centre(7, noir, ph$(n))
COLOR noir
LOCATE 8, INT(41 - LEN(ph$(n)) / 2) + h(n) - 1: PRINT MID$(lt$, 1, l(n))

DO
COLOR , noir
IF ni = 1 THEN
CALL fleches(12, 24, p$(), 6, r, rouge, 1, 23, 35)
ELSE
CALL centre(23, blanc, gg2$)
CALL cadre(12, 2, 75, 6, rouge)
COLOR blancbrill
CALL fleches2(13, 10, 5, 10, 42, p$(), r, rouge)
END IF

IF r = rep THEN
IF cc = 0 THEN re = re + 1
CALL exact2
ELSE
cc = cc + 1
IF cc < 3 THEN
CALL erreur2
ELSE
CALL solution((p$(rep)))
END IF
END IF
LOOP WHILE r <> rep

cc = 0
NEXT ii

CALL resultats(re, ni, 2)

END SUB

DEFINT A-Z
SUB nature (re%, ni%, m$(), mbis$(), rt$, gg$, gg2$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'22/11/96
DIM p$(12), z(10), s(20), ph$(10), m2$(20), z2(5), ph3$(10), mot$(20)
'faire attention au screen 32 et 129 dans un cadre

p$(1) = "verbe"
p$(2) = "nom": p$(3) = "adjectif qualificatif": p$(4) = "déterminant"
p$(5) = "pronom personnel"

ph$(1) = "Le nouveau satellite tourne autour de la Terre. " 'espace à la fin
ph3$(1) = "43210042"
ph$(2) = "Il recherche une information importante dans le dictionnaire. "
ph3$(2) = "51423042"
ph$(3) = "Il joue à la marelle dans la grande cour de récréation. "
ph3$(3) = "51042043202"
ph$(4) = "Avec son nouveau magnétoscope, il enregistre une émission. "
ph3$(4) = "04325142"
ph$(5) = "Elle récite une jolie poésie à sa maîtresse. "
ph3$(5) = "51432042"
ph$(6) = "Le chien noir aboie dans sa niche. "
ph3$(6) = "4231042"
ph$(7) = "Pendant les grandes vacances, il fera de la planche à voile. "
ph3$(7) = "04325104202"
ph$(8) = "Papa filme son jeune enfant avec son camescope. "
ph3$(8) = "21432042"
ph$(9) = "Cette belle fille a les yeux verts. "
ph3$(9) = "4321423"
ph$(10) = "Elle collectionne les timbres anciens. "
ph3$(10) = "51423"

l$ = STRING$(70, 196)
CALL niveau(ni, 3)

IF ni = 1 THEN
GOSUB nature1
ELSE
GOSUB nature2
END IF

IF re < 0 THEN re = 0
CALL resultats(re, ni, 3)
EXIT SUB


nature1:
GOSUB rappelnat

re = -2 'car 12 essais...
nbessai = 0
FOR ii = 1 TO 4 '++++++++++++++

CALL titre
'tirage de la phrase
DO
f = 0
z(ii) = INT(RND * 10) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
n = z(ii)

ph$ = ph$(n)
ph3$ = ph3$(n)

'affecte
i = 0: l = 1
DO
z = INSTR(l, ph$, " "): IF z = 0 THEN EXIT DO
i = i + 1
m2$(i) = MID$(ph$, l, z - l)
l = z + 1
LOOP

'on mémorise l'emplacement du début des mots
h = INT(41 - (LEN(ph$) / 2))

place = 1
i = 1
s(i) = h
DO
i = i + 1
s = INSTR(place, ph$, " ")
s(i) = s + h
place = s + 1
LOOP WHILE s <> 0
nbmots = i - 2

FOR jj = 1 TO 3 '++++++++++++++++++ 3 essais par phrases
c = 0
nbessai = nbessai + 1

'tirage nature
s = INSTR(1, ph3$, "5")
IF s = 0 THEN nb = 4 ELSE nb = 5 'pas de pronom personnel

DO
f = 0
z2(jj) = INT(RND * nb) + 1
FOR j = 1 TO jj - 1
IF z2(jj) = z2(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
nat = z2(jj)

CALL niv(12, nbessai)

'affichage de la phrase et du curseur
CALL cadre(6, 5, 70, 2, marron)
COLOR , marron
CALL centre(7, blancbrill, "Sélectionne un " + p$(nat) + ".")
i = 1
DO
COLOR , noir
CALL centre(23, blanc, CHR$(27) + " " + CHR$(26) + " puis " + rt$)

CALL cadre(10, 5, 70, 4, blanc)
COLOR , blanc
CALL centre(12, noir, ph$)
CALL centre(13, noir, SPACE$(69))
COLOR blanc, rouge
LOCATE 12, s(i)
IF RIGHT$(m2$(i), 1) = "." OR RIGHT$(m2$(i), 1) = "," THEN
PRINT MID$(m2$(i), 1, LEN(m2$(i)) - 1)
ELSE
PRINT m2$(i)
END IF
COLOR blancbrill, noir

nat2:
souris = 0
DO
r$ = INKEY$
' Obtient l'emplacement de la souris et l'état des boutons.
MousePoll v_mouse, h_mouse, lButton, rButton
'LOCATE 22, 1: PRINT v_mouse, h_mouse '===
IF lButton THEN
IF v_mouse = 12 THEN
sc = SCREEN(v_mouse, h_mouse)
IF sc = 32 OR sc = 219 THEN
BEEP
ELSE
'on cherche les lettres à gauche jusqu'à espace ou h1=1
h1 = h_mouse
DO
sc = SCREEN(v_mouse, h1)
IF sc = 32 OR sc = 219 THEN EXIT DO
h1 = h1 - 1
LOOP WHILE h1 <> 0
h1 = h1 + 1
h3 = h1: mot$ = ""
DO
sc = SCREEN(v_mouse, h3)
IF sc = 32 OR sc = 219 THEN EXIT DO
mot$ = mot$ + CHR$(sc)
h3 = h3 + 1
LOOP WHILE h3 <> 81

souris = 1
COLOR , blanc: CALL centre(12, noir, ph$)
LOCATE v_mouse, h1
COLOR blancbrill, rouge
PRINT mot$
CALL attendre(.3)
EXIT DO
END IF
ELSEIF v_mouse = 23 THEN
IF h_mouse >= 44 AND h_mouse <= 46 THEN
rr = 13
CALL attendre(.3)
souris = 2
EXIT DO
ELSEIF h_mouse = 35 THEN
'gauche
rr = 75
CALL attendre(.2)
souris = 2
EXIT DO
ELSEIF h_mouse = 37 THEN
'droite
rr = 77
CALL attendre(.2)
souris = 2
EXIT DO
ELSE
BEEP
END IF
ELSE
BEEP
END IF
END IF

LOOP WHILE r$ = ""

IF souris = 1 THEN
'traiter la réponse souris ===
CALL trouvemot(ph$, mot$(), nm)
FOR i = 1 TO nm
IF mot$ = mot$(i) THEN EXIT FOR
NEXT

rep = VAL(MID$(ph3$, i, 1))

IF rep = nat THEN
CALL exact2
IF c = 0 THEN re = re + 1
EXIT DO

ELSE
c = c + 1
CALL erreur2
IF rep <> 0 THEN
CALL centre(23, rougeclair, "Tu as montré un " + p$(rep))
CALL attendre(2)
LOCATE 23, 1: PRINT SPACE$(80)
GOTO nat2
END IF
END IF
END IF

IF souris = 0 THEN
IF LEN(r$) < 2 THEN rr = ASC(r$) ELSE rr = ASC(RIGHT$(r$, 1))
END IF

SELECT CASE rr

CASE 75 'gauche
i = i - 1
IF i < 1 THEN i = nbmots

CASE 77 'droite
i = i + 1
IF i > nbmots THEN i = 1

CASE 27
CALL quitter(noir, noir)

CASE 13
'voir le mot selectionné
rep = VAL(MID$(ph3$, i, 1))
IF rep = nat THEN
CALL exact2
IF c = 0 THEN re = re + 1
EXIT DO

ELSE
c = c + 1
CALL erreur2
IF rep <> 0 THEN
CALL centre(23, rougeclair, "Tu as montré un " + p$(rep))
CALL attendre(2)
LOCATE 23, 1: PRINT SPACE$(80)
END IF
END IF

CASE ELSE
BEEP

END SELECT

LOOP

NEXT jj

NEXT ii '++++++++++++++++

RETURN


'++++++++++++++
nature2:
IF ni = 2 THEN
nf = 25
GOSUB rappelnat
ELSE
p$(1) = "verbe": p$(2) = "participe passé": p$(3) = "pronom personnel"
p$(4) = "nom commun": p$(5) = "adjectif qualificatif": p$(6) = "article défini"
p$(7) = "article indéfini"
p$(8) = "déterminant démonstratif": p$(9) = "déterminant possessif": p$(10) = "adverbe"
p$(11) = "préposition": p$(12) = "conjonction de coordination"
nf = 37
GOSUB rappelnat2
END IF

c = 0: TT = 10
re = 0
CALL titre

FOR ii = 1 TO 10 '++++++++++++++++++++++++++++++++
CALL niv(10, ii)
cc = 0
DO
f = 0
z(ii) = INT(RND * nf) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
n = z(ii)

IF ni = 2 THEN
n$ = MID$(mbis$(n), 1, LEN(mbis$(n)) - 1): ret = VAL(RIGHT$(mbis$(n), 1))
ELSE
n$ = MID$(m$(n), 1, LEN(m$(n)) - 2): ret = VAL(RIGHT$(m$(n), 2))
END IF

COLOR , noir

nat1:
CALL cadre(5, 27, 25, 4, blanc)
COLOR , blanc
CALL centre(7, noir, n$)
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)

IF ni = 2 THEN
CALL fleches(13, 30, p$(), 5, r, rouge, 1, 23, 35)
ELSE
CALL centre(23, blanc, gg2$)
CALL cadre(11, 3, 74, 7, rouge)
COLOR blancbrill
CALL fleches2(12, 12, 6, 12, 43, p$(), r, rouge)
END IF
r = r - 1

LOCATE 23, 17
IF r = ret THEN
CALL exact2
IF cc = 0 THEN re = re + 1
ELSE
cc = cc + 1
IF cc < 3 THEN
CALL erreur2
ELSE
CALL solution(p$(ret + 1))
END IF
GOTO nat1
END IF
cc = 0
NEXT ii

RETURN

rappelnat:
'rappel pour nature 1
COLOR , bleu: CLS
LOCATE 5, 3: COLOR jaune: PRINT "Rappel"
CALL cadre(6, 2, 75, 12, rouge)
COLOR blanc, rouge
LOCATE 7
FOR i = 1 TO 11
LOCATE , 28: PRINT "│"
NEXT
LOCATE 9, 3: PRINT STRING$(25, "─") + "┼" + STRING$(49, "─")
LOCATE 11, 3: PRINT STRING$(25, "─") + "┼" + STRING$(49, "─")
LOCATE 13, 3: PRINT STRING$(25, "─") + "┼" + STRING$(49, "─")
LOCATE 15, 3: PRINT STRING$(25, "─") + "┼" + STRING$(49, "─")

LOCATE 8: h = 30
COLOR jaune: LOCATE , 4: PRINT "Pronoms personnels"; : COLOR blancbrill
LOCATE , h: PRINT "je, j', tu, il, elle, on, nous, vous, ils, elles"
LOCATE 10
COLOR jaune: LOCATE , 4: PRINT "Verbes"; : COLOR blancbrill
LOCATE , h: PRINT "parler, finir, vendre, être, avoir..."
LOCATE 12
COLOR jaune: LOCATE , 4: PRINT "Déterminants"; : COLOR blancbrill
LOCATE , h: PRINT "une, les, cette, mon..."
LOCATE 14
COLOR jaune: LOCATE , 4: PRINT "Noms"; : COLOR blancbrill
LOCATE , h: PRINT "monsieur, lapin, tableau, rêve..."
LOCATE 16
COLOR jaune: LOCATE , 4: PRINT "Adjectifs qualificatifs"; : COLOR blancbrill
LOCATE , h: PRINT "grand, jaune, rapide, léger, triste..."
CALL getinvimouse(w)
RETURN
rappelnat2:
'rappel pour nature 3
COLOR , bleu: CLS
LOCATE 4, 3: COLOR jaune: PRINT "Rappel"
CALL cadre(5, 2, 75, 16, rouge)
COLOR blanc, rouge
LOCATE 6
FOR i = 1 TO 15
LOCATE , 30: PRINT "│"
NEXT
LOCATE 8, 3: PRINT STRING$(27, "─") + "┼" + STRING$(47, "─")
LOCATE 10, 3: PRINT STRING$(27, "─") + "┼" + STRING$(47, "─")
LOCATE 12, 3: PRINT STRING$(27, "─") + "┼" + STRING$(47, "─")
LOCATE 15, 3: PRINT STRING$(27, "─") + "┼" + STRING$(47, "─")
LOCATE 17, 3: PRINT STRING$(27, "─") + "┼" + STRING$(47, "─")

LOCATE 7: h = 32
COLOR jaune: LOCATE , 4: PRINT "Participes passés"; : COLOR blancbrill
LOCATE , h: PRINT "parlé, fini, vendu, été, eu..."
LOCATE 9
COLOR jaune: LOCATE , 4: PRINT "Articles"; : COLOR blancbrill
LOCATE , h: PRINT "un, une, des, le, la, l', les"
LOCATE 11
COLOR jaune: LOCATE , 4: PRINT "Déterminants démonstratifs"; : COLOR blancbrill
LOCATE , h: PRINT "ce, cet, cette, ces"
LOCATE 13
COLOR jaune: LOCATE , 4: PRINT "Déterminants possessifs"; : COLOR blancbrill
LOCATE , h: PRINT "mon, ton, son, ma, ta, sa, notre, votre, leur"
LOCATE , h: PRINT "mes, tes, ses, nos, vos, leurs"
LOCATE 16
COLOR jaune: LOCATE , 4: PRINT "Prépositions"; : COLOR blancbrill
LOCATE , h: PRINT "à, de, par, pour, avec, sur, près, dans..."
LOCATE 18
COLOR jaune: LOCATE , 4: PRINT "Adverbes"; : COLOR blancbrill
LOCATE , h: PRINT "beaucoup, peu, ici, là, aujourd'hui, bientôt..."
LOCATE , h: PRINT "lentement, solidement, agréablement..."
CALL getinvimouse(w)

RETURN

END SUB

DEFINT A-Z
SUB partpas (re%, ni%, v$(), pp$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'25/3/96
DIM rr$(20), z(10)
nf = 48
re = 0

'niveau
CALL niveau(ni, 2)
IF ni = 1 THEN nf = 24 ELSE nf = 48

COLOR , bleu: CLS
CALL cadre(5, 14, 51, 15, rouge)
COLOR blanc, rouge
LOCATE 6
FOR i = 1 TO 14
LOCATE , 40: PRINT "│"
NEXT i

LOCATE 7
IF ni = 1 THEN
debut = 1: fin = 12
ELSE
debut = 25: fin = 36
END IF
FOR i = debut TO fin
COLOR blancbrill
LOCATE , 18: PRINT v$(i); " "; CHR$(26); " "; : COLOR jaune: LOCATE , 30: PRINT MID$(pp$(i), 1, LEN(pp$(i)) - 1);
LOCATE , 44: COLOR blancbrill: PRINT v$(i + 12); " "; CHR$(26); " "; : LOCATE , 56: COLOR jaune: PRINT MID$(pp$(i + 12), 1, LEN(pp$(i + 12)) - 1)
NEXT i

COLOR , bleu
CALL centre(23, blanc, "Mémorise")
CALL getinvimouse(r)

CALL titre

FOR ii = 1 TO 10 '+++++++++++++++
MouseHide
DO
DO
f = 0
z(ii) = INT(RND * nf) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
LOOP WHILE ni = 2 AND z(ii) <= 24
n = z(ii)

CALL cadre(8, 15, 18, 2, vert)
CALL cadre(8, 47, 18, 2, vert)
COLOR blancbrill, vert
LOCATE 9, 17: PRINT "Verbe"
LOCATE 9, 49: PRINT "Participe passé"
CALL cadre(11, 15, 18, 4, rouge)
CALL cadre(11, 47, 18, 4, blanc)

LOCATE 13, 17
COLOR blancbrill, rouge: PRINT v$(n)

pp1:
CALL niv(10, ii)
CALL ligne23(noir, noir)
CALL centre(23, blanc, "Tape le participe passé")
LOCATE 13, 50
CALL inputgen(10, r$, 65, 151, noir, blanc)
COLOR , noir
pp$ = MID$(pp$(n), 1, LEN(pp$(n)) - 1)

IF r$ = pp$ THEN
IF cc = 0 THEN re = re + 1
CALL exact2
ELSE
cc = cc + 1
IF cc < 3 THEN
f = VAL(RIGHT$(pp$(n), 1))
IF f = 1 THEN z$ = "Il a " ELSE z$ = "Il est "
CALL ligne23(noir, noir)
CALL centre(23, rougeclair, z$ + r$ + "...???")
CALL attendre(1.5)
IF (r$ = MID$(pp$, 1, LEN(pp$) - 1) OR LEN(r$) = LEN(pp$)) AND (RIGHT$(pp$, 1) <> "e" AND RIGHT$(pp$, 1) <> "i" AND RIGHT$(pp$, 1) <> "u" AND RIGHT$(pp$, 1) <> "é") THEN
CALL centre(23, rougeclair, "Pense au féminin : une chose qui est...")
CALL attendre(2)
END IF
ELSE
CALL solution(pp$)
END IF
GOTO pp1
END IF
cc = 0

NEXT ii '+++++++++++

CALL resultats(re, ni, 2)

END SUB

DEFINT A-Z
SUB ponctuation (re%, ni%, rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'19/5/96
DIM ph$(9), m$(100), m2$(100)

phrase$ = "Avec les flèches, déplace le curseur là où tu veux faire les modifications."

'espace à la fin
'la bonne réponse est dans ph3$()

'niveau 1
ph$(1) = "C'est sur la grève de la pleine mer que se rassemblent les enfants ; c'est là que j'ai été élevé, compagnon des flots et des vents. Un des premiers plaisirs que j'ai goûté était de lutter "
ph$(1) = ph$(1) + "contre les orages, de me jouer avec les vagues qui se retiraient devant moi, ou couraient après moi sur la rive. "
ph$(2) = "Cela dura dix minutes à peine. Il n'y avait pas de coups de tonnerre ; mais de grands éclairs bleuâtres, incessants, semblaient courir au ras du sol, en larges sillons de phosphore. "
ph$(2) = ph$(2) + "La nuit n'était plus si sombre, les grêlons l'éclairaient de rayures pâles innombrables comme s'il fût tombé des jets de verre. "
ph$(3) = "Deux parties de billard étaient en train. Les garçons criaient les points ; les joueurs couraient autour des billards encombrés de spectateurs. "
ph$(3) = ph$(3) + "Des flots de fumée de tabac, s'élançant de la bouche de tous, les enveloppaient d'un nuage bleu. "

'niveau 2
'les maj ne sont pas enlevées
ph$(4) = "Chère cousine ! Grande et lente, avec des yeux bleu de pervenche, de longs cheveux châtains, des épaules de neige ; un cou frais, que coupe de sa noirceur luisante un velours tenant une croix d'or ; "
ph$(4) = ph$(4) + "le sourire tendre et la voix traînante, devenant rose dès qu'elle rit, rouge dès qu'on la regarde. "
ph$(5) = "Pauvre maison en loques, tassée, lézardée et branlante, raccommodée partout de bouts de planches et de plâtras ! Elle avait dû être construite en moellons et en terre ; plus tard, on refit deux murs au mortier. "
ph$(5) = ph$(5) + "Enfin, vers le commencement du siècle, on se résigna à en remplacer le chaume par une toiture de petites ardoises, aujourd'hui pourries. "
ph$(6) = "Le jour de son arrivée, on lui avait donné un modèle de bâtons en lui disant : fais des bâtons ! Et depuis un an, Bamban faisait des bâtons. Et quels bâtons, grand Dieu ! Tordus, sales, boiteux, clopinants, "
ph$(6) = ph$(6) + "des bâtons de Bamban ! Personne ne s'occupait de lui. Un drôle d'élève ce Bamban ! "

'niveau 3
ph$(7) = "Quelquefois, quand ils avaient été sages, je leur racontais une histoire... Une histoire ! Quel bonheur ! Vite, vite, on pliait les cahiers, on fermait les livres ; encriers, règles, on jetait tout au fond des pupitres. "
ph$(7) = ph$(7) + "Puis, les bras croisés sur la table, on ouvrait de grands yeux et on écoutait. "
ph$(8) = "L'hiver était venu, un hiver sec, terrible et noir, comme il en fait dans ces pays de montagnes. Avec leurs grands arbres sans feuilles et leur sol gelé plus dur que la pierre, les cours du collège étaient tristes à voir. "
ph$(9) = "Le nouveau était un gars de la campagne d'une quinzaine d'années. Il avait les cheveux coupés droit sur le front. Quoiqu'il ne fût pas large des épaules, sa veste de drap vert à boutons noirs devait le gêner aux entournures. "
ph$(9) = ph$(9) + "Ses jambes sortaient d'un pantalon jaunâtre, très tiré par des bretelles. Il était chaussé de souliers forts, mal cirés, garnis de clous... "


CALL niveau(ni, 3)
IF ni = 1 OR ni = 3 THEN
'présentation
w$ = "Dans un texte, les majuscules et la ponctuation vont être effacées."
ELSE
w$ = "Dans un texte, la ponctuation va être effacée."
END IF
z$ = "Tu devras les retaper."
CALL consigne(2, w$, z$, y$)

re = 0: ct = 0

IF ni = 1 THEN
ii = INT(RND * 3) + 1
ELSEIF ni = 2 THEN
ii = INT(RND * 3) + 4
ELSE
ii = INT(RND * 3) + 7
END IF

m2$ = ph$(ii)
er = 0
m$ = m2$

'on transforme le texte m$ (m2$ est la référence)
IF ni = 1 OR ni = 3 THEN
m$ = LCASE$(m2$)
ELSE
m$ = m2$
END IF
l = LEN(m$)
FOR i = 1 TO l
x$ = MID$(m$, i, 1)
IF x$ = "." OR x$ = "," OR x$ = ";" OR x$ = "!" OR x$ = "?" OR x$ = ":" THEN
m$ = MID$(m$, 1, i - 1) + MID$(m$, i + 1)
i = i - 1
END IF
NEXT

SELECT CASE ni
CASE 1
'affichage des deux textes et saisie
CALL titre
CALL trouvemot(m2$, m2$(), nm)
LOCATE 5, , 0: COLOR vertclair, bleu
CALL afficheformate(m2$(), nm)
COLOR rouge: LOCATE 11: PRINT STRING$(80, CHR$(196))
CALL trouvemot(m$, m$(), nm)

debponctua:
COLOR blancbrill, bleu
DO
CALL pleinecran2(r$, phrase$, m$, 13, 19, rt$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
IF r$ = CHR$(27) THEN CALL quitter(noir, bleu)
LOOP WHILE r$ = CHR$(27)

COLOR , noir
LOCATE 22, 1: PRINT SPACE$(80): PRINT SPACE$(80)
CALL recupere2(m$, 13, 19)

IF m$ = CHR$(255) THEN
BEEP: BEEP
CALL centre(23, rougeclair, "Tu as effacé tout le texte !")
CALL getinvimouse(w)
EXIT SUB
END IF

COLOR , bleu
CALL transforme(m$)
CALL trouvemot(m$, m$(), nm)

FOR i = 1 TO nm
l = LEN(m$(i))
IF l > 80 - 1 THEN
BEEP: LOCATE , , 0: COLOR , noir
CALL centre(23, rougeclair, "Tu as du supprimer trop d'espaces !")
COLOR blancbrill
CALL getinvimouse(r)
GOTO debponctua
END IF
NEXT i

COLOR blancbrill, bleu
VIEW PRINT 12 TO 20
CLS 2
VIEW PRINT
LOCATE 13
CALL afficheformate(m$(), nm)
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)

DO
COLOR blanc, noir
LOCATE 23, 11
PRINT "Les deux textes sont-ils bien identiques ";
CALL ouinon(r$)
r = ASC(r$)
IF r = 27 THEN CALL quitter(noir, bleu)
IF r = 13 OR r$ = "O" THEN
flag = 1
ELSEIF r$ = "N" THEN
flag = 0
ELSE
BEEP: r = 27
END IF
LOOP WHILE r = 27

IF flag = 0 THEN GOTO debponctua
LOCATE 23, 1: PRINT SPACE$(80)

IF flag = 0 THEN GOTO debponctua

IF m$ = m2$ THEN
CALL exact2
IF ct = 0 THEN
re = 10
ELSEIF ct = 1 THEN
re = 7
ELSE
re = 5
END IF
CALL entree(noir, noir, 0)
ELSE
ct = ct + 1
IF m$ = LCASE$(m2$) THEN
CALL centre(23, rougeclair, "Tu as oublié des majuscules.")
ELSEIF (LEFT$(m$, 1) <> LEFT$(m2$, 1)) AND (UCASE$(LEFT$(m$, 1)) = LEFT$(m2$, 1)) THEN
CALL centre(23, rougeclair, "Tu as oublié la majuscule du début.")
ELSEIF RIGHT$(m$, 2) <> RIGHT$(m2$, 2) THEN
CALL centre(23, rougeclair, "Tu as oublié la ponctuation finale.")
ELSEIF ct < 3 THEN
CALL centre(23, rougeclair, "Compare les textes et recherche tes oublis.")
ELSE
CALL centre(23, rougeclair, "Compare les textes.")
END IF
CALL getinvimouse(w)
IF ct < 3 THEN
GOTO debponctua
ELSE
re = 3
END IF
END IF

CASE ELSE
CALL traitementtexte(m$, m2$, phrase$, re%, rt$, gg2$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
END SELECT

CALL resultats(re, ni, 3)

END SUB
 

 

DECLARE SUB niv (limit%, xx%)
DECLARE SUB accordnom (re%, gg$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB cadre (v%, h%, l%, nli%, c%)
DECLARE SUB erreur2 ()
DECLARE SUB exact2 ()
DECLARE SUB fleches (v%, h%, w$(), np%, r%, coul%, drap%, v2%, h3%)
DECLARE SUB fleches2 (v%, h%, ll%, nm%, h3%, w$(), r%, coul%)
DECLARE SUB inputgen (nl%, r$, deb%, fin%, x%, y%)
DECLARE SUB niveau (r%, np%)
DECLARE SUB quitter (x%, y%)
DECLARE SUB resultats (re%, ni%, nbniv%)
DECLARE SUB titre ()
DECLARE SUB consigne (nl%, w$, z$, y$)
DECLARE SUB getinvimouse (rr%)
DECLARE SUB ouinon (r$)
DECLARE SUB attendre (tx!)
DECLARE SUB centre (v%, coul%, ph$)
DECLARE SUB entree (x%, y%, drapeau%)
DECLARE SUB traitementtexte (m$, m2$, phrase$, re%, rt$, gg2$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB solution (sol$)
DECLARE SUB MouseHide ()
'module 4
'Français AAS
'Daniel CLERC
'20/5/96


DEFINT A-Z
SUB classement (re, ni, mo2$(), mo17$(), rt$, gg$, pre$, titr$, prog, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
'2/5/96
DIM mo$(6), z(6), r(6), z$(6)
nm = 57
cc = 0: pt = 0

w$ = "Tu vas devoir trier par ordre alphabétique"
z$ = "3 séries de mots."
CALL consigne(2, w$, z$, y$)

'niveau
CALL niveau(ni, 2)

CALL titre
MouseHide
FOR serie = 1 TO 3 '++++++++++++++++++++++++++++
CALL niv(3, serie)
IF ni = 1 THEN
'tirage
FOR ii = 1 TO 6
DO
f = 0
z(ii) = INT(RND * nm) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT

'première lettre non identique
z$(ii) = LEFT$(mo2$(z(ii)), 1)
f2 = 0
FOR k = 1 TO ii - 1
IF z$(ii) = z$(k) THEN f2 = 1: EXIT FOR
NEXT k
LOOP WHILE f = 1 OR f2 = 1

mo$(ii) = mo2$(z(ii))
r(ii) = ii
NEXT ii

ELSE
DO
f = 0
z(serie) = INT(RND * 10)
FOR j = 1 TO serie - 1
IF z(serie) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1

FOR ii = 1 TO 6
mo$(ii) = mo17$(ii + (z(serie) * 6))
r(ii) = ii
NEXT ii
END IF

'affichage
CALL cadre(4, 16, 48, 2, vert)

COLOR , vert
CALL centre(5, blancbrill, "Série n°" + STR$(serie))
CALL cadre(7, 16, 17, 12, rouge)
COLOR blancbrill, rouge
LOCATE 8
FOR i = 1 TO 6
LOCATE , 21: PRINT mo$(i): PRINT
NEXT

'tri
FOR i = 1 TO 5
m = 0
FOR j = 1 TO 6 - i
IF mo$(j + 1) < mo$(j) THEN SWAP mo$(j), mo$(j + 1): SWAP r(j), r(j + 1)
m = 1
NEXT j
IF m = 0 THEN EXIT FOR
NEXT i

CALL cadre(7, 47, 17, 12, blanc)
c = 8
LOCATE c: COLOR noir, blanc
FOR j = 1 TO 6
LOCATE , 49: PRINT LTRIM$(STR$(j)); " -": PRINT
NEXT

FOR i = 1 TO 6 '+++++
cla3:
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)
CALL centre(23, blanc, "Tape le mot n°" + LTRIM$(STR$(i)))

LOCATE c, 53: CALL inputgen(12, re$, 65, 163, noir, blanc)
er = 0
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)
FOR x = 1 TO 6
IF mo$(x) <> re$ THEN er = er + 1
NEXT
IF er = 6 THEN BEEP: CALL centre(23, rougeclair, "Ce mot n'est pas dans la liste."): CALL attendre(2): LOCATE 23, 1: PRINT SPACE$(80): GOTO cla3

IF re$ <> mo$(i) THEN
cc = cc + 1
IF cc >= 2 THEN
CALL solution(mo$(i))
ELSE
CALL erreur2
END IF
GOTO cla3
ELSE
CALL exact2
LOCATE ((r(i) - 1) * 2) + 8, 19
COLOR , rouge
IF cc = 0 THEN COLOR vertclair ELSE COLOR rougeclair
PRINT CHR$(4): COLOR blancbrill
c = c + 2
IF cc = 0 THEN pt = pt + 1
cc = 0
END IF
NEXT i '++++++++

CALL entree(noir, noir, 1)

NEXT serie '+++++++++++

re = INT((pt + 2) / 2)

CALL resultats(re, ni, 2)

END SUB

DEFINT A-Z
SUB conjts (re, ni, pp$(), v$(), te$(), E$(), a$(), AL$(), rr$(), SP$(), f$(), b$(), ve$(), IM$(), FU$(), w$(), k$(), rt$, gg$, pre$, titr$, prog, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
'1/5/96
re = 0
DIM p$(4), z(10)
p$(1) = "présent": p$(2) = "imparfait": p$(3) = "futur": p$(4) = "passé simple"
titr$ = "conjugaison des temps simples"

CALL titre
CALL cadre(7, 25, 30, 2, vert)
COLOR , vert
CALL centre(8, blancbrill, "Niveau de difficulté")
CALL fleches(12, 34, p$(), 4, ni, rouge, 1, 23, 35)

'rappel
COLOR , bleu: CLS
CALL cadre(3, 2, 76, 18, rouge)
COLOR blanc, rouge
LOCATE 4
FOR i = 1 TO 17
LOCATE , 22: PRINT "│"; : LOCATE , 42: PRINT "│"; : LOCATE , 62: PRINT "│"
NEXT
LOCATE 12, 3: PRINT STRING$(19, "─") + "┼" + STRING$(19, "─") + "┼" + STRING$(19, "─") + "┼" + STRING$(16, "─")

flag = 0
a = 1
h = 4
FOR ii = 1 TO 4
GOSUB conj21
v$ = v$(d)
LOCATE 5, h: COLOR jaune: PRINT v$: COLOR blancbrill
v = 6: GOSUB conj19
h = h + 20
NEXT
h = 4
FOR ii = 5 TO 8
GOSUB conj21
v$ = v$(d)
LOCATE 13, h: COLOR jaune: PRINT v$: COLOR blancbrill
v = 14: GOSUB conj19
h = h + 20
NEXT
COLOR , bleu
CALL centre(23, blanc, "Mémorise")
CALL getinvimouse(r)

CALL titre

FOR ii = 1 TO 5 '+++++++++++++
MouseHide
ts1:
a = INT(RND * 2) + 1: b = INT(RND * 2) + 1: c = INT(RND * 3) + 1

IF ni = 4 THEN IF (c = 1 OR c = 2) AND b = 2 THEN GOTO ts1

DO
f = 0
z(ii) = INT(RND * 15) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
d = z(ii)

IF a = 1 THEN g$ = "masculin" ELSE g$ = "féminin"
IF b = 1 THEN n$ = "singulier" ELSE n$ = "pluriel"
IF c = 1 THEN p$ = "1° du "
IF c = 2 THEN p$ = "2° du "
IF c = 3 THEN p$ = "3° du "
v$ = v$(d)

GOSUB conj20

cts1:
'verbe
CALL cadre(5, 8, 10, 2, marron)
CALL cadre(5, 28, 14, 2, marron)
CALL cadre(5, 53, 19, 2, marron)
COLOR blancbrill, marron
LOCATE 6, 10: PRINT "VERBE"
LOCATE 6, 30: PRINT "TEMPS"
LOCATE 6, 55: PRINT "PERSONNE"

CALL cadre(8, 8, 10, 4, rouge)
CALL cadre(8, 28, 14, 4, rouge)
COLOR blancbrill, rouge
LOCATE 10, 10
PRINT v$
LOCATE 10, 30
PRINT p$(ni)
'personne
COLOR , bleu
LOCATE 12, 53: PRINT SPACE$(22)
LOCATE 13, 53: PRINT SPACE$(22)
IF LEFT$(p$, 1) = "3" THEN
CALL cadre(8, 53, 19, 5, rouge)
COLOR blancbrill, rouge: LOCATE 11, 55: PRINT g$
ELSE
CALL cadre(8, 53, 19, 4, rouge)
END IF
LOCATE 10, 55: COLOR blancbrill, rouge: PRINT p$; n$
CALL niv(5, ii)
COLOR , noir
CALL centre(23, blanc, "Tape la réponse")
CALL cadre(15, 8, 64, 2, blanc)
LOCATE 16, INT(41 - (LEN(rat$) / 2))
CALL inputgen(30, r$, 32, 151, noir, blanc)
COLOR , noir
l = LEN(r$): IF l < 2 THEN GOTO cts1

LOCATE 23, 1: PRINT SPACE$(80)

IF LEFT$(r$, 1) <> LEFT$(rat$, 1) THEN
CALL centre(23, rougeclair, "Pronom personnel = " + ra$)
CALL attendre(2): LOCATE 23, 1: PRINT SPACE$(80)
GOTO cts1
END IF

IF r$ = rat$ THEN
IF cc = 0 THEN re = re + 2
CALL exact2
ELSE
cc = cc + 1
IF cc < 2 THEN
CALL erreur2
v = 14: h = 55: flag = 1
CALL cadre(13, 53, 18, 7, rouge)
GOSUB conj19
ELSE
CALL solution(rat$)
END IF
GOTO cts1
END IF
cc = 0

NEXT ii '+++++++++++

CALL resultats(re, ni, 4)

EXIT SUB

conj19:
COLOR , rouge
btemp = b: ctemp = c
LOCATE v
b = 1
FOR c = 1 TO 3
GOSUB conj20: LOCATE , h: PRINT rat$
NEXT c
b = 2
FOR c = 1 TO 3
GOSUB conj20: LOCATE , h: PRINT rat$
NEXT c
IF flag = 0 THEN RETURN
COLOR , noir
CALL centre(23, blanc, "Mémorise")
CALL getinvimouse(r)

LOCATE v - 1
COLOR , bleu
FOR i = 1 TO 8: LOCATE , h - 2: PRINT SPACE$(22): NEXT
b = btemp: c = ctemp
GOSUB conj20

RETURN

conj20:

SELECT CASE ni
CASE 1
'present
ra$ = pp$(a, b, c) + " "
IF d < 6 THEN rat$ = ra$ + LEFT$(v$, LEN(v$) - 2) + te$(b, c)
IF d = 6 THEN rat$ = ra$ + E$(b, c)
IF d = 7 AND b = 1 AND c = 1 THEN rat$ = "j'ai" ELSE IF d = 7 THEN rat$ = ra$ + a$(b, c)
IF d = 8 THEN rat$ = ra$ + AL$(b, c)
IF d = 9 OR d = 10 THEN rat$ = ra$ + LEFT$(v$, LEN(v$) - 1) + rr$(b, c)
IF d = 11 OR d = 12 THEN rat$ = ra$ + LEFT$(v$, LEN(v$) - 3) + SP$(b, c)
IF d = 13 THEN rat$ = ra$ + f$(b, c)
IF d = 14 THEN rat$ = ra$ + b$(b, c)
IF d = 15 THEN rat$ = ra$ + ve$(b, c)

CASE 2
'imparfait
ra$ = pp$(a, b, c) + " "
IF d < 6 OR d = 8 OR d = 11 OR d = 12 OR d = 15 THEN rat$ = ra$ + LEFT$(v$, LEN(v$) - 2) + IM$(b, c)
IF d = 6 AND b = 1 AND c = 1 THEN rat$ = "j'étais" ELSE IF d = 6 THEN rat$ = ra$ + "ét" + IM$(b, c)
IF d = 7 AND b = 1 AND c = 1 THEN rat$ = "j'avais" ELSE IF d = 7 THEN rat$ = ra$ + LEFT$(v$, LEN(v$) - 3) + IM$(b, c)
IF d = 8 AND b = 1 AND c = 1 THEN rat$ = "j'allais"
IF d = 9 OR d = 10 THEN rat$ = ra$ + LEFT$(v$, LEN(v$) - 1) + "ss" + IM$(b, c)
IF d = 13 THEN rat$ = ra$ + "fais" + IM$(b, c)
IF d = 14 THEN rat$ = ra$ + "buv" + IM$(b, c)

CASE 3
'futur
ra$ = pp$(a, b, c) + " "
IF d < 6 OR d = 9 OR d = 10 OR d = 11 OR d = 12 THEN rat$ = ra$ + v$ + FU$(b, c)
IF d = 6 THEN rat$ = ra$ + "ser" + FU$(b, c)
IF d = 7 AND b = 1 AND c = 1 THEN rat$ = "j'aurai" ELSE IF d = 7 THEN rat$ = ra$ + "aur" + FU$(b, c)
IF d = 8 AND b = 1 AND c = 1 THEN rat$ = "j'irai" ELSE IF d = 8 THEN rat$ = ra$ + "ir" + FU$(b, c)
IF d = 14 THEN rat$ = ra$ + "boir" + FU$(b, c)
IF d = 13 THEN rat$ = ra$ + "fer" + FU$(b, c)
IF d = 15 THEN rat$ = ra$ + "viendr" + FU$(b, c)

CASE 4
'passe simple
ra$ = pp$(a, b, c) + " "
IF d < 6 OR d = 8 THEN rat$ = ra$ + LEFT$(v$, LEN(v$) - 2) + w$(b, c)
IF d = 8 AND b = 1 AND c = 1 THEN rat$ = "j'allai"
'être
IF d = 6 THEN
IF b = 1 OR (b = 2 AND c = 3) THEN
rat$ = ra$ + "fu" + k$(b, c)
ELSE
rat$ = ra$ + "fû" + k$(b, c)
END IF
END IF

'avoir
IF d = 7 THEN
IF b = 1 AND c = 1 THEN
rat$ = "j'eus"
ELSEIF b = 1 OR (b = 2 AND c = 3) THEN
rat$ = ra$ + "eu" + k$(b, c)
ELSE
rat$ = ra$ + "eû" + k$(b, c)
END IF
END IF

'finir, réussir, sentir, partir
IF d = 9 OR d = 10 OR d = 11 OR d = 12 THEN
IF b = 1 OR (b = 2 AND c = 3) THEN
rat$ = ra$ + LEFT$(v$, LEN(v$) - 1) + k$(b, c)
ELSE
rat$ = ra$ + LEFT$(v$, LEN(v$) - 2) + "î" + k$(b, c)
END IF
END IF

'faire
IF d = 13 THEN
IF b = 1 OR (b = 2 AND c = 3) THEN
rat$ = ra$ + "fi" + k$(b, c)
ELSE
rat$ = ra$ + "fî" + k$(b, c)
END IF
END IF

'boire
IF d = 14 THEN
IF b = 1 OR (b = 2 AND c = 3) THEN
rat$ = ra$ + "bu" + k$(b, c)
ELSE
rat$ = ra$ + "bû" + k$(b, c)
END IF
END IF

'venir
IF d = 15 THEN
IF b = 1 OR (b = 2 AND c = 3) THEN
rat$ = ra$ + "vin" + k$(b, c)
ELSE
rat$ = ra$ + "vîn" + k$(b, c)
END IF
END IF
END SELECT
RETURN

conj21:
DO
f = 0
z(ii) = INT(RND * 15) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
d = z(ii)
RETURN

END SUB

DEFINT A-Z
SUB gennom (re, ni, n$(), rt$, gg$, pre$, titr$, prog, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
'25/3/96
DIM p$(2), z(10)
re = 0: h = 25

'niveau
CALL niveau(ni, 2)
IF ni = 1 THEN nf = 23 ELSE nf = 41

CALL titre

FOR ii = 1 TO 10 '+++++++
CALL niv(10, ii)

DO
DO
f = 0
z(ii) = INT(RND * nf) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
LOOP WHILE ni = 2 AND z(ii) <= 23

n = z(ii)
n$ = LEFT$(n$(n), LEN(n$(n)) - 2)
genre = VAL(MID$(n$(n), LEN(n$(n)) - 1, 1))
nombre = VAL(MID$(n$(n), LEN(n$(n)), 1))

CALL cadre(10, 16, 16, 2, vert)
CALL cadre(10, 48, 16, 2, vert)
COLOR blancbrill, vert
LOCATE 11, 21: PRINT "Genre"
LOCATE 11, 53: PRINT "Nombre"
CALL cadre(13, 16, 16, 5, rouge)
CALL cadre(13, 48, 16, 5, rouge)

CALL cadre(6, 16, 48, 2, blanc)
COLOR , blanc
CALL centre(7, noir, n$)
COLOR blancbrill, rouge
LOCATE 15, 53: PRINT "singulier": LOCATE , 53: PRINT "pluriel"

c = 0
DO
p$(1) = "masculin": p$(2) = "féminin"
CALL fleches(15, 21, p$(), 2, r, rouge, 0, 23, 20)
IF r = genre THEN
CALL exact2
IF c = 0 THEN re = re + 1
c = 0
EXIT DO
ELSE
CALL erreur2
c = c + 1
END IF
LOOP

c = 0
DO
p$(1) = "singulier": p$(2) = "pluriel"
CALL fleches(15, 53, p$(), 2, r, rouge, 0, 23, 52)
IF r = nombre THEN
CALL exact2
IF c = 0 THEN re = re + 1
c = 0
EXIT DO
ELSE
CALL erreur2
c = c + 1
END IF
LOOP

NEXT ii '+++++++

re = INT(re / 2)
CALL resultats(re, ni, 2)


END SUB

DEFINT A-Z
SUB intrus (re, ni, intrusvoca$(), intrusgram$(), intrusconj$(), rt$, gg$, pre$, titr$, prog, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
DIM mot$(10, 13), mot2$(12), z(10), sol(10), nbe(12), p4$(3)
'28/2/96
'97 mots pour vocabulaire
'102 mots pour grammaire
'97 mots pour conjugaison


li2$ = SPACE$(80)
p4$(1) = "Vocabulaire": p4$(2) = "Grammaire": p4$(3) = "Conjugaison"
re = 0: q = 1

'présentation
w$ = "Tu vas devoir trouver le mot 'pirate'"
z$ = "dans une liste de propositions."
CALL consigne(2, w$, z$, y$)

'niveau
CALL titre
CALL cadre(7, 25, 30, 2, vert)
COLOR , vert
CALL centre(8, blancbrill, "Niveau de difficulté")
CALL fleches(12, 34, p4$(), 3, ni, rouge, 1, 23, 35)

'affectation
k = 0
FOR i = 1 TO 10
j = 0
DO
j = j + 1: k = k + 1
IF ni = 1 THEN
mot$(i, j) = intrusvoca$(k)
ELSEIF ni = 2 THEN
mot$(i, j) = intrusgram$(k)
ELSE
mot$(i, j) = intrusconj$(k)
END IF
IF RIGHT$(mot$(i, j), 1) = "*" THEN
mot$(i, j) = MID$(mot$(i, j), 1, LEN(mot$(i, j)) - 1)
sol(i) = j
END IF
LOOP WHILE mot$(i, j) <> "="
nbe(i) = j - 1
NEXT i

'i = nbe de listes
'nbe(i) = nbe de mots dans la liste i
'mot$(i,j) = mots j dans la liste i
'* repère pour l'intrus
'= repère pour la fin de la liste
'la solution est avant l'=
'sol(i) indique le numéro de l'intrus



'affectation
bb = 1
FOR boucle = 1 TO 10 '++++++++++++++++++++++++

'tirage aléatoire des séries
DO
f = 0
z(boucle) = INT(RND * 10) + 1
FOR j = 1 TO boucle - 1
IF z(boucle) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
numeroboucle = z(boucle)

FOR i = 1 TO nbe(numeroboucle)
mot2$(i) = mot$(numeroboucle, i)
NEXT
nbemot = nbe(numeroboucle) - 1


'demande réponse
CALL titre

erreurs = 0
DO
CALL cadre(5, 20, 40, 2, marron)
COLOR , marron
CALL centre(6, blancbrill, p4$(ni))
COLOR vertclair, noir
CALL niv(10, boucle)
COLOR , noir
CALL centre(22, blanc, "Sélectionne l'intrus")
COLOR , bleu

'trouver longueur mot max
l2 = 0
FOR i = 1 TO nbemot
l1 = LEN(mot2$(i)): IF l2 < l1 THEN l2 = l1
NEXT
h = INT(41 - (l2 / 2))

CALL fleches(10, h, mot2$(), nbemot, r, rouge, 1, 23, 35)

COLOR , noir
LOCATE 22, 1: PRINT SPACE$(80)
IF r <> sol(numeroboucle) THEN
erreurs = erreurs + 1

IF erreurs < 3 THEN
CALL erreur2
ELSE
CALL solution(mot2$(sol(numeroboucle)))
COLOR , bleu
END IF
END IF
LOOP WHILE r <> sol(numeroboucle)
CALL exact2: IF erreurs = 0 THEN re = re + 1'en fonction du nombre de série
CALL centre(23, vertclair, mot2$(nbemot + 1))
CALL getinvimouse(rr)
bb = bb + 1: IF bb > 3 THEN bb = 1
NEXT boucle

CALL resultats(re, ni, 3)

END SUB

DEFINT A-Z
SUB ortho (re, ni, eleve, serie$(), rt$, gg$, pre$, titr$, prog, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
'6/4/96
DIM p$(10), mot$(205), z(20), s$(20), serie2$(20), ne(10), p2$(4)
p2$(1) = "lente": p2$(2) = "moyenne": p2$(3) = "rapide": p2$(4) = "très rapide"

lp$ = STRING$(22, ".")
moyenne$ = ""
vit = 2

'debut
ct = 0: re = 0

CALL niveau(ni, 2)

SELECT CASE ni
CASE 1
fiches$ = "mots2": te = 1.5: nbfois = 10

CASE 2
fiches$ = "mots3": te = 1: nbfois = 20
END SELECT

'tableau des résultats et choix de la série

CALL titre
IF eleve > 0 THEN
'si ni = 1 alors de 1 à 10 sinon 11 à 20
ii = 1
FOR i = ((ni - 1) * 10) + 1 TO ni * 10
IF serie$(i) <> " " THEN
serie2$(ii) = LTRIM$(STR$(VAL(serie$(i))))
ELSE
serie2$(ii) = " "
END IF
ii = ii + 1
NEXT i

'calcul de la moyenne
tt = 0: nt = 0
FOR j = 1 TO 10
IF serie2$(j) <> " " THEN tt = tt + VAL(serie2$(j)): nt = nt + 1
NEXT j
IF nt = 0 THEN
moyenne$ = ""
ELSE
moyenne$ = LTRIM$(STR$(INT(tt / nt)))
END IF

'affichage tableau si moyenne > 0
IF moyenne$ <> "" THEN
COLOR jaune, bleu
LOCATE 19, 20: PRINT "Moyenne = "; moyenne$
LOCATE 5, 20: PRINT "RESULTATS"
CALL cadre(6, 8, 32, 12, blanc)
COLOR noir, blanc

LOCATE 7, 20: PRINT "1 2 3 4 5 6 7 8 9 10"
LOCATE 8
FOR i = 1 TO 10
LOCATE , 10: PRINT "série"; i;
IF serie2$(i) <> " " THEN
i2 = 0
FOR j = 1 TO VAL(serie2$(i))
SELECT CASE i
CASE 1, 3, 5, 7, 9
LOCATE , 20 + i2: PRINT "▒▒";
CASE ELSE
LOCATE , 20 + i2: PRINT "▓▓";
END SELECT
i2 = i2 + 2
NEXT j
PRINT
ELSE
PRINT
END IF
NEXT i
END IF
END IF

FOR i = 1 TO 10
p$(i) = LTRIM$(STR$(i))
NEXT
IF moyenne$ = "" THEN
LOCATE 5, 39: COLOR vertclair, bleu: PRINT "SERIE"
CALL fleches(8, 41, p$(), 10, rep, rouge, 1, 23, 35)
ELSE
LOCATE 5, 53: COLOR vertclair, bleu: PRINT "SERIE"
CALL cadre(6, 52, 6, 12, rouge)
CALL fleches(8, 55, p$(), 10, rep, rouge, 0, 23, 51)
END IF

CALL titre
OPEN fiches$ + ".dat" FOR INPUT AS #1
i = 1
DO
INPUT #1, mot$(i)
i = i + 1
LOOP WHILE i < 201
CLOSE #1
nf = i - 1

'tirage des mots et affichage
pointeur = ((rep - 1) * nbfois) + 1
FOR ii = 1 TO nbfois
s$(ii) = mot$(pointeur)
pointeur = pointeur + 1
NEXT ii

ERASE mot$

'on affiche les mots
IF ni = 1 THEN
CALL cadre(6, 33, 14, 11, marron)
COLOR blancbrill, marron
LOCATE 7
FOR i = 1 TO 10
LOCATE , 35: PRINT s$(i)
NEXT
ELSE
CALL cadre(6, 17, 46, 11, marron)
COLOR blancbrill, marron
LOCATE 7
FOR i = 1 TO 10
LOCATE , 19: PRINT s$(i)
NEXT
LOCATE 7
FOR i = 11 TO 20
LOCATE , 22 + 25: PRINT s$(i)
NEXT
END IF
COLOR , noir
CALL centre(23, blanc, "Mémorise l'orthographe des mots")
COLOR blancbrill
CALL getinvimouse(r)
CALL titre

'programme principal
MouseHide
COLOR vertclair
'LOCATE , 72: PRINT "Série"; rep
CALL cadre(10, 28, 24, 4, blanc)

FOR ii = 1 TO nbfois '++++++++++++++++++++++++++++++++
LOCATE 12, 12 + 20: COLOR , blanc: PRINT SPACE$(18)
CALL niv(nbfois, ii)

DO
CALL cadre(6, 28, 24, 2, vert)
COLOR , vert
CALL centre(7, blancbrill, "Vitesse " + p2$(vit))
CALL attendre(.5)
COLOR noir, blanc
tr = 0
p$ = MID$(lp$, 1, LEN(s$(ii)))
FOR x = 2 TO LEN(s$(ii))
IF ASC(MID$(s$(ii), x, 1)) = 32 THEN tr = x
NEXT
IF tr <> 0 THEN p$ = MID$(p$, 1, tr - 1) + " " + MID$(p$, tr + 1)

IF ct = 0 THEN
SELECT CASE ii
CASE 1, 4, 7, 10, 13, 16, 19
CALL centre(12, noir, s$(ii))
CALL attendre(.4 * (2 / vit) * te)

CASE 2, 5, 8, 11, 14, 17, 20
'lettre par lettre
CALL centre(12, noir, p$): COLOR noir, blanc
h = INT(41 - LEN(s$(ii)) / 2)
FOR x = 1 TO LEN(s$(ii))
LOCATE 12, h
PRINT MID$(s$(ii), x, 1)
CALL attendre(.4 * (2 / vit) * te)
LOCATE 12, h
PRINT "."
h = h + 1
NEXT

CASE 3, 6, 9, 12, 15, 18
'flash
FOR x = 1 TO 3
CALL centre(12, noir, s$(ii))
CALL attendre(.09)
CALL centre(12, noir, SPACE$(LEN(s$(ii))))
CALL attendre(.15)
NEXT
END SELECT

ELSE
CALL centre(12, noir, s$(ii))
CALL attendre(.4 * (2 / vit) * te)

END IF
COLOR , blanc: CALL centre(12, noir, p$)
COLOR , noir
CALL centre(23, blanc, "Tape le mot")
COLOR blancbrill

nl = LEN(s$(ii)): LOCATE 12, INT(41 - (LEN(s$(ii)) / 2))
CALL inputgen(nl, r$, 32, 165, noir, blanc)

LOCATE 13, 32: COLOR , blanc: PRINT SPACE$(18)
COLOR , noir
IF r$ = s$(ii) THEN
cc = cc + 1
CALL exact2
IF ct = 0 THEN
re = re + 1
END IF
ct = 0
EXIT DO
ELSE
cc = 0: ct = 1
vit = vit - 1: IF vit < 1 THEN vit = 1
CALL erreur2
'mettre en rouge là où c'est faux
COLOR , blanc
LOCATE 12, INT(41 - (LEN(s$(ii)) / 2))
FOR i = 1 TO LEN(r$)
IF MID$(s$(ii), i, 1) = MID$(r$, i, 1) THEN
COLOR noir '===
ELSE
COLOR rouge
END IF
PRINT MID$(r$, i, 1);
NEXT
PRINT
LOCATE 13, INT(41 - (LEN(s$(ii)) / 2))
'on compte les erreurs
flag = 0
FOR i = 1 TO LEN(r$)
IF MID$(s$(ii), i, 1) <> MID$(r$, i, 1) THEN
flag = flag + 1
END IF
NEXT

IF flag < 3 THEN
FOR i = 1 TO LEN(r$)
IF MID$(s$(ii), i, 1) = MID$(r$, i, 1) THEN
PRINT " ";
ELSE
COLOR rouge
PRINT CHR$(24);
END IF
NEXT
END IF
CALL attendre(1)
END IF
LOOP

IF vit = 1 AND cc = 2 THEN vit = 2: cc = 0
IF vit = 2 AND cc = 3 THEN vit = 3: cc = 0
IF vit = 3 AND cc = 4 THEN vit = 4: cc = 0

NEXT

IF ni = 2 THEN re = INT(re / 2)

'affecter re dans serie$(?)
're$ justifié à droite '===
IF re = 10 THEN
re$ = LTRIM$(STR$(re))
ELSE
re$ = " " + LTRIM$(STR$(re))
END IF
serie$(((ni - 1) * 10) + rep) = re$

'calcul de la nouvelle moyenne
serie2$(rep) = LTRIM$(STR$(re))
tt = 0: nt = 0
FOR j = 1 TO 10
IF serie2$(j) <> " " THEN tt = tt + VAL(serie2$(j)): nt = nt + 1
NEXT j
re = INT(tt / nt)


IF eleve > 0 THEN
'tableau pour nouveaux résultats
CALL titre
CALL cadre(4, 33, 15, 2, vert)
COLOR blancbrill, vert
LOCATE 5, 35: PRINT "Résultats"
CALL cadre(7, 33, 15, 11, blanc)
COLOR noir, blanc
LOCATE 8
FOR i = 1 TO 10
IF i = rep THEN
COLOR noir, marron
LOCATE , 34: PRINT SPACE$(15);
LOCATE , 35: PRINT "série "; LTRIM$(STR$(i));
LOCATE , 44: PRINT ":";
LOCATE , 48 - LEN(serie2$(i)): PRINT serie2$(i)
COLOR noir, blanc
ELSE
LOCATE , 35: PRINT "série "; LTRIM$(STR$(i));
LOCATE , 44: PRINT ":";
LOCATE , 48 - LEN(serie2$(i)): PRINT serie2$(i)
END IF
NEXT
COLOR jaune, bleu
LOCATE 19, 35: PRINT "Moyenne :";
LOCATE , 46 - LEN(LTRIM$(STR$(re))): PRINT re
ELSE
CALL resultats(re, ni, 2) 'quand pas d'élève
END IF
END SUB

DEFINT A-Z
SUB pluriel (re, ni, n$(), rt$, gg$, pre$, titr$, prog, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
'5/5/96
DIM z(10)

re = 0
CALL accordnom(re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)

l3$ = " │ │ │"
l4$ = "──────┼─────────────┼─────────────┼" + STRING$(40, "─")

'rappel
COLOR , bleu: CLS
LOCATE 1, 3: COLOR jaune: PRINT "Rappel"
CALL cadre(2, 2, 75, 4, rouge)
CALL cadre(7, 2, 75, 16, rouge)
h = 3
COLOR , blanc
CALL centre(2, noir, " Règle générale des pluriels ")
COLOR blancbrill, rouge
CALL centre(4, blancbrill, "Un élève -> des élèves")
COLOR blancbrill, noir: LOCATE 4, 37: PRINT " "
LOCATE 4, 51: PRINT "s"
COLOR noir, rouge
LOCATE 5, 30: PRINT CHR$(192); STRING$(6, 196); CHR$(24)
LOCATE 5, 43: PRINT CHR$(192); STRING$(7, 196); CHR$(24)
COLOR , blanc
CALL centre(7, noir, " Particularités et exceptions ")
COLOR blanc, rouge
LOCATE 8
LOCATE , h: PRINT l3$
LOCATE , h: PRINT l3$
LOCATE , h: PRINT l3$
LOCATE , h: PRINT l4$
LOCATE , h: PRINT l3$
LOCATE , h: PRINT l4$
LOCATE , h: PRINT l3$
LOCATE , h: PRINT l4$
LOCATE , h: PRINT l3$
LOCATE , h: PRINT l4$
LOCATE , h: PRINT l3$
LOCATE , h: PRINT l3$
LOCATE , h: PRINT l4$
LOCATE , h: PRINT l3$
LOCATE , h: PRINT l3$

COLOR blancbrill, rouge
h1 = 4: h3 = 11: h3 = 25: h4 = 39
v = 8
LOCATE v
LOCATE , h1: PRINT "s"; : LOCATE , h3: PRINT "un bras"; : LOCATE , h3: PRINT "des bras"
LOCATE , h1: PRINT "x"; : LOCATE , h3: PRINT "une croix"; : LOCATE , h3: PRINT "des croix"
LOCATE , h1: PRINT "z"; : LOCATE , h3: PRINT "un nez"; : LOCATE , h3: PRINT "des nez"
LOCATE v + 4
LOCATE , h1: PRINT "al"; : LOCATE , h3: PRINT "un cheval";
LOCATE , h3: PRINT "des chevaux"; : LOCATE , h4: PRINT "des bals, des carnavals, des festivals"
LOCATE v + 6
LOCATE , h1: PRINT "ail"; : LOCATE , h3: PRINT "un rail";
LOCATE , h3: PRINT "des rails"; : LOCATE , h4: PRINT "des travaux, des vitraux"
LOCATE v + 8
LOCATE , h1: PRINT "eu"; : LOCATE , h3: PRINT "un feu";
LOCATE , h3: PRINT "des feux"; : LOCATE , h4: PRINT "des pneus, bleus"
LOCATE v + 10
LOCATE , h1: PRINT "au"; : LOCATE , h3: PRINT "un noyau";
LOCATE , h3: PRINT "des noyaux"; : LOCATE , h4: PRINT "des landaus"
LOCATE v + 11
LOCATE , h1: PRINT "eau"; : LOCATE , h3: PRINT "un bateau";
LOCATE , h3: PRINT "des bateaux"
LOCATE v + 13
LOCATE , h1: PRINT "ou"; : LOCATE , h3: PRINT "un trou";
LOCATE , h3: PRINT "des trous"; : LOCATE , h4: PRINT "des hiboux, genoux, cailloux, bijoux"
LOCATE , h4: PRINT "choux, poux, joujoux"
CALL getinvimouse(w)

CALL titre

FOR ii = 1 TO 10 '+++++++++++++
MouseHide
g = 0

DO
f = 0
'nf = 47
IF ni = 1 THEN
z(ii) = INT(RND * 30) + 1
ELSE
z(ii) = INT(RND * 16) + 31
END IF
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1

r$ = n$(z(ii))

CALL cadre(8, 15, 18, 2, vert)
CALL cadre(8, 47, 18, 2, vert)
COLOR blancbrill, vert
LOCATE 9, 17: PRINT "Singulier"
LOCATE 9, 49: PRINT "Pluriel"
CALL cadre(11, 15, 18, 4, rouge)
CALL cadre(11, 47, 18, 4, blanc)

LOCATE 13, 17
COLOR blancbrill, rouge: PRINT r$

IF LCASE$(MID$(r$, 1, 3)) = "un " THEN r$ = MID$(r$, 4) ELSE r$ = MID$(r$, 5)
IF r$ = "oeil" THEN w$ = "yeux": GOTO plu1
DR$ = RIGHT$(r$, 1)
IF DR$ = "s" OR DR$ = "x" OR DR$ = "z" THEN w$ = r$: GOTO plu1
DR$ = RIGHT$(r$, 2)
IF DR$ = "ou" THEN g = 1
IF DR$ = "al" THEN g = 2
IF DR$ = "au" THEN g = 3
IF DR$ = "eu" THEN g = 4
IF RIGHT$(r$, 3) = "ail" THEN g = 5
SELECT CASE g

CASE 0
w$ = r$ + "s"

CASE 1
IF r$ = "bijou" OR r$ = "caillou" OR r$ = "genou" OR r$ = "chou" OR r$ = "hibou" OR r$ = "joujou" OR r$ = "pou" THEN w$ = r$ + "x" ELSE w$ = r$ + "s"

CASE 2
IF r$ = "bal" OR r$ = "carnaval" OR r$ = "chacal" OR r$ = "festival" OR r$ = "récital" OR r$ = "régal" THEN w$ = r$ + "s" ELSE w$ = (LEFT$(r$, LEN(r$) - 2)) + "aux"

CASE 3
IF r$ = "landau" THEN w$ = r$ + "s" ELSE w$ = r$ + "x"

CASE 4
IF r$ = "pneu" OR r$ = "bleu" THEN w$ = r$ + "s" ELSE w$ = r$ + "x"

CASE 5
IF r$ = "travail" OR r$ = "émail" OR r$ = "soupirail" OR r$ = "corail" OR r$ = "vitrail" OR r$ = "bail" OR r$ = "ventail" THEN w$ = LEFT$(r$, LEN(r$) - 3) + "aux" ELSE w$ = r$ + "s"

END SELECT

plu1:
CALL niv(10, ii)
COLOR , noir
LOCATE 23: PRINT SPACE$(80)
CALL centre(23, blanc, "Tape le nom")
COLOR noir, blanc
LOCATE 13, 49: PRINT "des "; : CALL inputgen(11, rp$, 65, 165, noir, blanc)

COLOR , noir
IF rp$ = w$ THEN
CALL exact2
IF cc = 0 THEN re = re + 1
ELSE
cc = cc + 1
IF cc < 3 THEN
t$ = RIGHT$(rp$, 1)
IF t$ = "x" OR t$ = "s" OR t$ = "z" THEN
CALL erreur2
ELSE
CALL centre(23, rougeclair, "Accord : x, s ou rien")
CALL attendre(2)
LOCATE 23, 1: PRINT SPACE$(80)
END IF
ELSE
CALL solution(w$)
END IF
GOTO plu1
END IF
cc = 0
NEXT ii '+++++++++

IF re < 0 THEN re = 0
CALL resultats(re, ni, 4)
END SUB

DEFINT A-Z
SUB pluriel2 (ni, re, rt$, gg2$, pre$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
DIM ph$(6), ph3$(6)
'20/5/96
'niveau 3 & 4

re = 0
CALL accordnom(re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)

'présentation
IF ni = 3 THEN
w$ = "Dans trois petits textes, les accords des noms vont être effacés."
ELSE
w$ = "Dans un texte, les accords des noms vont être effacés."
END IF
z$ = "Tu devras les retaper."
CALL consigne(2, w$, z$, y$)

'espace à la fin
'la bonne réponse est dans ph3$()

'niveau 3
ph$(1) = "Tous les trois jour, il va faire les course au supermarché de sa ville. Il achète tous les produit dont il a besoin. "
ph3$(1) = "Tous les trois jours, il va faire les courses au supermarché de sa ville. Il achète tous les produits dont il a besoin. "

ph$(2) = "L'enfant joue avec les crayon de couleur. Il dessine des rond, des carré, des rectangle, des forme bizarres puis il les colorie. "
ph3$(2) = "L'enfant joue avec les crayons de couleur. Il dessine des ronds, des carrés, des rectangles, des formes bizarres puis il les colorie. "

ph$(3) = "Pendant les vacance, Mélanie part avec ses amie visiter des château, des église, des village. Elle a l'intention de prendre beaucoup de photographie. "
ph3$(3) = "Pendant les vacances, Mélanie part avec ses amies visiter des châteaux, des églises, des villages. Elle a l'intention de prendre beaucoup de photographies. "

'niveau 4 - 3 phrases
'Le petit chose - A. Daudet
ph$(4) = "Le collège me sembla immense... D'interminables corridor, de grands porche, de larges escalier avec des rampe de fer ouvragé... Tout cela vieux, noir, enfumé... "
ph$(4) = ph$(4) + "Le portier m'apprit que cette école avait compté jusqu'à huit cents élève, tous de la plus grande noblesse. "
ph3$(4) = "Le collège me sembla immense... D'interminables corridors, de grands porches, de larges escaliers avec des rampes de fer ouvragé... Tout cela vieux, noir, enfumé... "
ph3$(4) = ph3$(4) + "Le portier m'apprit que cette école avait compté jusqu'à huit cents élèves, tous de la plus grande noblesse. "
'C. Dillard
ph$(5) = "Sibérie a toujours froid. Le plus souvent, il n'enlève pas son manteau ; ni son écharpe d'ailleurs ; ni ses chaussette en laine épaisse, ni ses chaussure fourrées à l'intérieur. "
ph$(5) = ph$(5) + "Canicule a toujours chaud. Le plus souvent, elle ne porte qu'une robe légère de coton, une culotte et un maillot de corps de coton sous sa robe, des socquette en coton et des sandale. "
ph3$(5) = "Sibérie a toujours froid. Le plus souvent, il n'enlève pas son manteau ; ni son écharpe d'ailleurs ; ni ses chaussettes en laine épaisse, ni ses chaussures fourrées à l'intérieur. "
ph3$(5) = ph3$(5) + "Canicule a toujours chaud. Le plus souvent, elle ne porte qu'une robe légère de coton, une culotte et un maillot de corps de coton sous sa robe, des socquettes en coton et des sandales. "
'Zadig - Voltaire
ph$(6) = "Les voilà tous les deux dans l'arène, livrant un nouveau combat, où la force et l'agilité triomphent tour à tour. Les plume de leur casque, les clou de leurs brassard, les maille de leur armure "
ph$(6) = ph$(6) + "sautent au loin sous mille coup précipités. Ils frappent de pointe et de taille, à droite, à gauche, sur la tête, sur la poitrine. Ils s'attaquent comme des lion. "
ph3$(6) = "Les voilà tous les deux dans l'arène, livrant un nouveau combat, où la force et l'agilité triomphent tour à tour. Les plumes de leur casque, les clous de leurs brassards, les mailles de leur armure "
ph3$(6) = ph3$(6) + "sautent au loin sous mille coups précipités. Ils frappent de pointe et de taille, à droite, à gauche, sur la tête, sur la poitrine. Ils s'attaquent comme des lions. "

IF ni = 3 THEN
FOR ii = 1 TO 3
m$ = ph$(ii)
er = 0
m2$ = ph3$(ii)
phrase$ = "Avec les flèches, déplace le curseur là où tu veux faire les accords."
CALL traitementtexte(m$, m2$, phrase$, resultat, rt$, gg2$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
re = re + resultat
NEXT
re = INT(re / 3)
ELSE
ii = INT(RND * 3) + 4
m$ = ph$(ii)
er = 0
m2$ = ph3$(ii)
phrase$ = "Avec les flèches, déplace le curseur là où tu veux faire les accords."
CALL traitementtexte(m$, m2$, phrase$, re, rt$, gg2$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
END IF

IF re < 0 THEN re = 0
CALL resultats(re, ni, 4)

END SUB

DEFINT A-Z
SUB tempsv (re, ni, h(), l(), s(), ppf(), sc(), rt$, gg$, gg2$, pre$, titr$, prog, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
'1/5/96
'h, l , s ,ppf et sc sont en data
DIM p$(10), z(10), p2$(3), p3$(2), ph$(36)



p$(1) = "présent": p$(2) = "imparfait": p$(3) = "futur 1": p$(4) = "futur 2"
p$(5) = "passé simple": p$(6) = "passé composé": p$(7) = "plus que parfait"
p$(8) = "futur antérieur": p$(9) = "passé antérieur": p$(10) = "impératif"

p2$(1) = "Passé": p2$(2) = "Présent": p2$(3) = "Futur"
p3$(1) = "Temps simple": p3$(2) = "Temps composé"
LT$ = STRING$(20, "─")

ph$(1) = "Les enfants jouent dans la cour pendant la récréation."
ph$(2) = "En ce moment, il se repose chez lui."
ph$(3) = "Je réfléchis à ce problème difficile."
ph$(4) = "Veux-tu t'asseoir près de lui ?"
ph$(5) = "Nous voyons le bateau disparaître à l'horizon."
ph$(6) = "Elle effaçait rapidement le tableau."
ph$(7) = "On construisait un nouvel immeuble dans sa citée."
ph$(8) = "Ils vérifiaient les réglages du moteur."
ph$(9) = "Tu multipliais le résultat par quatre pour trouver la solution."
ph$(10) = "L'artisan clouait, dans son atelier, ses planches avec soin."
ph$(11) = "On pourra aller à la piscine vendredi soir."
ph$(12) = "Ils calculeront rapidement leurs opérations."
ph$(13) = "Elle me donnera son adresse pour que je puisse lui écrire."
ph$(14) = "L'enfant copiera ses devoirs sur son cahier de textes."
ph$(15) = "L'élève va finir son dessin très rapidement."
ph$(16) = "Tu vas chercher ton vélo dans le garage."
ph$(17) = "Tu vas partir bientôt en vacances au bord de la mer."
ph$(18) = "Ils voulurent le mettre dehors."
ph$(19) = "Florian eut froid aux mains pendant sa randonnée."
ph$(20) = "Les supporters allèrent au stade voir le match de rugby."
ph$(21) = "J'ai pris ta valise pour la ranger."
ph$(22) = "Nous avons mis des jolies fleurs dans le vase."
ph$(23) = "Vous êtes allés au centre commercial faire vos courses."
ph$(24) = "Les deux enfants avaient menti à leur maîtresse."
ph$(25) = "Chez le libraire, tu avais acheté trois livres."
ph$(26) = "Les voyageurs étaient descendus du train à Dijon."
ph$(27) = "Dès que j'aurai fini ce travail, je viendrai te rejoindre."
ph$(28) = "Aussitôt que tu l'auras vu, tu le reconnaîtras."
ph$(29) = "Lorsque l'élève aura planté sa graine, il l'arrosera."
ph$(30) = "Quand le grand père eut mangé, il s'endormit."
ph$(31) = "Sois gentil !"
ph$(32) = "Viens ici !"
ph$(33) = "Ecoutez bien !"
ph$(34) = "Repose-toi !"
ph$(35) = "Change tes affaires de place."
ph$(36) = "Ramasse ton manteau !"

re! = 0: cc = 0

CALL niveau(ni, 2)

COLOR , bleu: CLS

IF ni = 1 THEN
'rappel
LOCATE 4, 3: COLOR jaune: PRINT "Rappel"
CALL cadre(5, 2, 75, 14, rouge)
COLOR blanc, rouge
LOCATE 6
LOCATE , 18: PRINT "│"
FOR i = 1 TO 5
LOCATE , 18: PRINT "│"
LOCATE , 3: PRINT STRING$(15, "─") + "┼" + STRING$(59, "─")
NEXT
LOCATE , 18: PRINT "│"
LOCATE , 18: PRINT "│"

LOCATE 7: h = 20
COLOR jaune, rouge: LOCATE , 4: PRINT "Présent"; : COLOR blancbrill
LOCATE , h: PRINT "je chante, je finis, je vends, je suis, j'ai"
LOCATE 9
COLOR jaune: LOCATE , 4: PRINT "Imparfait"; : COLOR blancbrill
LOCATE , h: PRINT "je chantais, je finissais, je vendais, j'étais, j'avais"
LOCATE 11
COLOR jaune: LOCATE , 4: PRINT "Futur 1"; : COLOR blancbrill
LOCATE , h: PRINT "je chanterai, je finirai, je vendrai, je serai, j'aurai"
LOCATE 13
COLOR jaune: LOCATE , 4: PRINT "Futur 2"; : COLOR blancbrill
LOCATE , h: PRINT "je vais chanter, je vais finir, je vais être"
LOCATE 15
COLOR jaune: LOCATE , 4: PRINT "Passé simple"; : COLOR blancbrill
LOCATE , h: PRINT "je chantai, je finis, je vendis, je fus, j'eus"
LOCATE 17
COLOR jaune: LOCATE , 4: PRINT "Passé composé"; : COLOR blancbrill
LOCATE , h: PRINT "j'ai chanté, j'ai fini, j'ai vendu, j'ai été, j'ai eu"

ELSE
'rappel
LOCATE 5, 3: COLOR jaune: PRINT "Rappel"
CALL cadre(6, 2, 75, 13, rouge)
COLOR blanc, rouge
LOCATE 7
LOCATE , 21: PRINT "│"
FOR i = 1 TO 3
LOCATE , 21: PRINT "│"
LOCATE , 3: PRINT STRING$(18, "─") + "┼" + STRING$(56, "─")
NEXT
LOCATE , 21: PRINT "│"
LOCATE , 21: PRINT "│"
LOCATE , 3: PRINT STRING$(18, "═") + "┼" + STRING$(56, "═")
LOCATE , 21: PRINT "│"
LOCATE , 21: PRINT "│"
LOCATE 8: h = 23
COLOR jaune, rouge: LOCATE , 4: PRINT "Passé composé"; : COLOR blancbrill
LOCATE , h: PRINT "j'ai chanté, j'ai fini, j'ai été, j'ai eu"
LOCATE 10
COLOR jaune: LOCATE , 4: PRINT "Plus que parfait"; : COLOR blancbrill
LOCATE , h: PRINT "j'avais chanté, j'avais fini, j'avais été, j'avais eu"
LOCATE 12
COLOR jaune: LOCATE , 4: PRINT "Futur antérieur"; : COLOR blancbrill
LOCATE , h: PRINT "j'aurai chanté, j'aurai fini, j'aurai été, j'aurai eu"
LOCATE 14
COLOR jaune: LOCATE , 4: PRINT "Passé antérieur"; : COLOR blancbrill
LOCATE , h: PRINT "j'eus chanté, j'eus fini, j'eus été, j'eus eu"
LOCATE 17
COLOR jaune: LOCATE , 4: PRINT "Impératif"; : COLOR blancbrill
LOCATE , h: PRINT "chante, finis, vends"

END IF
CALL getinvimouse(w)
CALL titre

FOR ii = 1 TO 10 '+++++++++
CALL niv(10, ii)
DO
DO
f = 0
z(ii) = INT(RND * 36) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
n = z(ii)
LOOP WHILE ni = 1 AND s(n) > 6 'au niveau 1, 6 temps
CALL cadre(5, 2, 75, 4, blanc)
COLOR , blanc
CALL centre(7, noir, ph$(n))
COLOR noir
LOCATE 8, (INT(41 - LEN(ph$(n)) / 2)) + h(n) - 1: PRINT MID$(LT$, 1, l(n))


IF ni = 1 THEN
CALL cadre(11, 7, 11, 4, rouge)
CALL cadre(11, 28, 17, 3, rouge)
CALL cadre(11, 55, 17, 7, rouge)
ELSE
CALL cadre(11, 2, 11, 4, rouge)
CALL cadre(11, 18, 17, 3, rouge)
CALL cadre(11, 40, 38, 6, rouge)
END IF

'passe present futur ?
DO
DO
IF ni = 1 THEN
CALL cadre(11, 7, 11, 4, rouge)
CALL fleches(12, 10, p2$(), 3, r, rouge, 0, 23, 35)
ELSE
CALL cadre(11, 2, 11, 4, rouge)
CALL fleches(12, 5, p2$(), 3, r, rouge, 0, 23, 35)
END IF
IF r = 0 THEN CALL quitter(noir, noir)
LOOP WHILE r = 0

IF r = ppf(n) THEN
CALL exact2
ELSE
CALL erreur2
re! = re! - .5
END IF
LOOP WHILE r <> ppf(n)

'simple ou composé ?
IF sc(n) <> 0 THEN
DO
DO
CALL centre(23, blanc, gg$)
IF ni = 1 THEN
CALL cadre(11, 28, 17, 3, rouge)
CALL fleches(12, 31, p3$(), 2, r, rouge, 0, 23, 35)
ELSE
CALL cadre(11, 18, 17, 3, rouge)
CALL fleches(12, 21, p3$(), 2, r, rouge, 0, 23, 35)
END IF
IF r = 0 THEN CALL quitter(noir, noir)
LOOP WHILE r = 0

IF r = sc(n) THEN
CALL exact2
ELSE
CALL erreur2
re! = re! - .5
END IF
LOOP WHILE r <> sc(n)
END IF

DO
IF ni = 1 THEN
CALL cadre(11, 55, 17, 7, rouge)
CALL fleches(12, 58, p$(), 6, r, rouge, 0, 23, 35)
ELSE
CALL centre(23, blanc, gg2$)
CALL cadre(11, 40, 38, 6, rouge)
COLOR blancbrill
CALL fleches2(12, 43, 5, 10, 61, p$(), r, rouge)
END IF

IF r = s(n) THEN
IF cc = 0 THEN re! = re! + 1
CALL exact2
ELSE
cc = cc + 1
IF cc < 2 THEN
CALL erreur2
ELSE
CALL solution(p$(s(n)))
END IF
END IF
LOOP WHILE r <> s(n)
cc = 0
NEXT ii '+++++++++++++=

re = INT(re!): IF re < 0 THEN re = 0
CALL resultats(re, ni, 2)

END SUB
 

 

DECLARE SUB niv (limit%, xx%)
DECLARE SUB accordpartpasse3 (re%, gg$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB accordpartpasse2 (re%, gg$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB accordadj (re%, gg$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB cadre (v%, h%, l%, nli%, c%)
DECLARE SUB erreur2 ()
DECLARE SUB exact2 ()
DECLARE SUB fleches (v%, h%, w$(), np%, r%, coul%, drap%, v2%, h3%)
DECLARE SUB inputgen (nl%, r$, deb%, fin%, x%, y%)
DECLARE SUB niveau (r%, np%)
DECLARE SUB quitter (x%, y%)
DECLARE SUB resultats (re%, ni%, nbniv%)
DECLARE SUB titre ()
DECLARE SUB consigne (nl%, w$, z$, y$)
DECLARE SUB getinvimouse (rr%)
DECLARE SUB ouinon (r$)
DECLARE SUB attendre (tx!)
DECLARE SUB centre (v%, coul%, ph$)
DECLARE SUB entree (x%, y%, drapeau%)
DECLARE SUB ligne23 (x%, y%)
DECLARE SUB traitementtexte (m$, m2$, phrase$, re%, rt$, gg2$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB solution (sol$)
DECLARE SUB MouseHide ()
'exo 5 Francais AAs
'version 1.0
'9/5/96


DEFINT A-Z
SUB accoadj (re%, ni%, adj$(), mp$(), fs$(), fp$(), rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'25/3/96
DIM z(10)
re = 0
CALL accordadj(re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)

'présentation
w$ = "Tu vas taper des adjectifs qualificatifs."
z$ = "Le genre et le nombre seront indiqués."
CALL consigne(2, w$, z$, y$)

IF ni = 2 THEN
nf = 30
ELSE
nf = 48
END IF
IF ni = 1 OR ni = 2 THEN GOSUB acniveau12
IF ni = 3 THEN GOSUB acniveau3

IF re < 0 THEN re = 0
CALL resultats(re, ni, 4)

EXIT SUB

acniveau12:
CALL titre

FOR ii = 1 TO 10 '+++++++++++
MouseHide
DO
DO
f = 0
z(ii) = INT(RND * nf) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
LOOP WHILE ni = 1 AND z(ii) < 31
x = z(ii)

CALL cadre(8, 15, 18, 8, rouge)
COLOR vertclair, rouge
LOCATE 10, 18: PRINT "Masculin": LOCATE , 18: PRINT "Singulier"
COLOR noir
LOCATE 12, 16: PRINT STRING$(18, "_")
COLOR jaune
LOCATE 14, 18: PRINT adj$(x)

DO
yy = INT(RND * 4) + 1
LOOP WHILE yy = 1

CALL cadre(8, 48, 18, 8, blanc)
COLOR noir, blanc
SELECT CASE yy
CASE 2
LOCATE 10, 51: PRINT "Masculin": LOCATE , 24 + 27: PRINT "Pluriel"
CASE 3
LOCATE 10, 51: PRINT "Féminin": LOCATE , 24 + 27: PRINT "Singulier"
CASE 4
LOCATE 10, 51: PRINT "Féminin": LOCATE , 24 + 27: PRINT "Pluriel"
END SELECT
LOCATE 12, 49: PRINT STRING$(18, "_")

acad2:
CALL niv(10, ii)
CALL ligne23(noir, noir)
CALL centre(23, blanc, "Tape l'adjectif")
LOCATE 14, 24 + 27
COLOR , blanc
CALL inputgen(14, r$, 65, 165, noir, blanc)
adj$ = adj$(x)
GOSUB acadtrait
COLOR , noir
IF re$ = r$ THEN
IF cc = 0 THEN re = re + 1
CALL exact2
ELSE
cc = cc + 1

IF cc < 3 THEN
IF MID$(adj$, 1, LEN(adj$) - 1) <> MID$(r$, 1, LEN(adj$) - 1) THEN
CALL centre(23, rougeclair, "Attention à l'orthographe")
CALL attendre(1.5)
ELSE
CALL erreur2
END IF
ELSE
CALL solution(re$)
END IF
GOTO acad2
END IF
cc = 0
NEXT ii '++++++++++++++

RETURN

acniveau3: 'niveau 3
CALL titre

FOR ii = 1 TO 4 '+++++++++
MouseHide
'tirage
DO
DO
f = 0
z(ii) = INT(RND * nf) + 1
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1

x = z(ii)
LOOP WHILE LEN(adj$(x)) > 7

CALL cadre(5, 18, 45, 13, blanc)
COLOR noir, blanc
LOCATE 7, 14 + 20: PRINT "┌────────────┬────────────┐"
LOCATE , 14 + 20: PRINT "│ │ │"
LOCATE , 14 + 20: PRINT "│ │ │"
LOCATE , 2 + 20: PRINT "┌───────────┼────────────┼────────────┤"
LOCATE , 2 + 20: PRINT "│ │ │ │"
LOCATE , 2 + 20: PRINT "│ │ │ │"
LOCATE , 2 + 20: PRINT "├───────────┼────────────┼────────────┤"
LOCATE , 2 + 20: PRINT "│ │ │ │"
LOCATE , 2 + 20: PRINT "│ │ │ │"
LOCATE , 2 + 20: PRINT "└───────────┴────────────┴────────────┘"
COLOR bleu
LOCATE 9, 17 + 20: PRINT "Singulier": LOCATE 9, 30 + 20: PRINT "Pluriel"
LOCATE 12, 5 + 20: PRINT "Masculin": LOCATE 15, 5 + 20: PRINT "Féminin"
COLOR noir
LOCATE 12, 17 + 20: PRINT adj$(x)

FOR yy = 2 TO 4

acad20:
CALL ligne23(noir, noir)
LOCATE 23, 77: COLOR vertclair: PRINT 5 - ii
CALL centre(23, blanc, "Tape l'adjectif")

SELECT CASE yy
CASE 2
LOCATE 12, 50
CASE 3
LOCATE 15, 37
CASE 4
LOCATE 15, 50
END SELECT

CALL inputgen(10, r$, 65, 165, noir, blanc)
COLOR , noir
adj$ = adj$(x)
GOSUB acadtrait

IF re$ = r$ THEN
IF cc = 0 THEN re = re + 1
CALL exact2
ELSE
cc = cc + 1

IF cc < 3 THEN
IF MID$(adj$, 1, LEN(adj$) - 1) <> MID$(r$, 1, LEN(adj$) - 1) THEN
CALL centre(23, rougeclair, "Attention à l'orthographe")
CALL attendre(1.5)
ELSE
CALL erreur2
END IF
ELSE
CALL solution(re$)
END IF
GOTO acad20
END IF
cc = 0
NEXT yy
CALL entree(noir, noir, 1)
NEXT ii '++++++++++++++
re = re - 2

RETURN

acadtrait:
IF x <= 10 THEN 'les solutions sont en data (10 premiers adjectifs)
IF yy = 1 THEN re$ = adj$
IF yy = 2 THEN re$ = mp$(x)
IF yy = 3 THEN re$ = fs$(x)
IF yy = 4 THEN re$ = fp$(x)

ELSE
IF yy = 1 THEN re$ = adj$
IF yy = 2 AND RIGHT$(adj$, 1) = "x" THEN re$ = adj$: GOTO acad1
IF yy = 2 AND RIGHT$(adj$, 2) = "al" THEN re$ = MID$(adj$, 1, LEN(adj$) - 2) + "aux": GOTO acad1
IF yy = 2 THEN re$ = adj$ + "s"
IF yy = 3 AND RIGHT$(adj$, 1) = "x" THEN re$ = MID$(adj$, 1, LEN(adj$) - 1) + "se": GOTO acad1
IF yy = 3 AND RIGHT$(adj$, 1) = "e" THEN re$ = adj$: GOTO acad1
IF yy = 3 THEN re$ = adj$ + "e"
IF yy = 4 AND RIGHT$(adj$, 1) = "x" THEN re$ = MID$(adj$, 1, LEN(adj$) - 1) + "ses": GOTO acad1
IF yy = 4 AND RIGHT$(adj$, 1) = "e" THEN re$ = adj$ + "s": GOTO acad1
IF yy = 4 THEN re$ = adj$ + "es"
acad1:

END IF
RETURN
END SUB

DEFINT A-Z
SUB accoadj2 (ni, re%, rt$, gg2$, pre$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DIM ph$(3), ph3$(3)
'20/5/96
'niveau 4
re = 0
CALL accordadj(re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)

'présentation
w$ = "Dans un texte, les accords des ajectifs vont être effacés."
z$ = "Tu devras les retaper."
CALL consigne(2, w$, z$, y$)

'espace à la fin
'la bonne réponse est dans ph3$()

'3 phrases
ph$(1) = "Emilie avait quinze ans. Elle était vraiment joli avec ses cheveux bouclé, ses grand yeux noir et ses joues coloré. "
ph3$(1) = "Emilie avait quinze ans. Elle était vraiment jolie avec ses cheveux bouclés, ses grands yeux noirs et ses joues colorées. "

ph$(2) = "Les jeune élèves de l'école ont fait une exposition : les peintures sont vert, bleu ou rouge. Les magnifique dessins émerveillent les parents. "
ph3$(2) = "Les jeunes élèves de l'école ont fait une exposition : les peintures sont vertes, bleues ou rouges. Les magnifiques dessins émerveillent les parents. "

ph$(3) = "Jacques a eu une peur bleu en entrant dans cette maison abandonné. Mais il se calme en se disant que les vilain fantômes n'existent pas ! "
ph3$(3) = "Jacques a eu une peur bleue en entrant dans cette maison abandonnée. Mais il se calme en se disant que les vilains fantômes n'existent pas ! "

ii = INT(RND * 3) + 1
m$ = ph$(ii)
er = 0
m2$ = ph3$(ii)
phrase$ = "Avec les flèches, déplace le curseur là où tu veux faire les accords."
CALL traitementtexte(m$, m2$, phrase$, re%, rt$, gg2$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

IF re < 0 THEN re = 0
CALL resultats(re, ni, 4)

END SUB

DEFINT A-Z
SUB accordpp4 (ni, re%, rt$, gg2$, pre$, titr$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DIM ph$(3), ph3$(3)
'20/5/96
'niveau 4

'présentation
w$ = "Dans un texte, les accords des participes passés vont être effacés."
z$ = "Tu devras les retaper."
CALL consigne(2, w$, z$, y$)

re = 0

'espace à la fin
'la bonne réponse est dans ph3$()

ph$(1) = "Le cirque a planté son chapiteau. Les programmes sont vendu par le clown. Les spectateurs sont placé par l'hôtesse. La salle est éclairé par de nombreux projecteurs. Le spectacle a duré deux heures. "
ph3$(1) = "Le cirque a planté son chapiteau. Les programmes sont vendus par le clown. Les spectateurs sont placés par l'hôtesse. La salle est éclairée par de nombreux projecteurs. Le spectacle a duré deux heures. "

ph$(2) = "Pauvre maison en loques, tassé, lézardé et branlante, raccommodé partout de bouts de planches et de plâtras ! "
ph$(2) = ph$(2) + "Vers le commencement du siècle, on se résigna à en remplacer le chaume par une toiture de petites ardoises, aujourd'hui pourri. "
ph3$(2) = "Pauvre maison en loques, tassée, lézardée et branlante, raccommodée partout de bouts de planches et de plâtras ! "
ph3$(2) = ph3$(2) + "Vers le commencement du siècle, on se résigna à en remplacer le chaume par une toiture de petites ardoises, aujourd'hui pourries. "

ph$(3) = "A vingt heures, maman est rentré du travail. Comme l'épicerie était fermé, nous n'avons pas pu faire des courses. Alors, nous sommes allé manger au restaurant. Nous nous sommes régalé ! "
ph3$(3) = "A vingt heures, maman est rentrée du travail. Comme l'épicerie était fermée, nous n'avons pas pu faire des courses. Alors, nous sommes allés manger au restaurant. Nous nous sommes régalés ! "

ii = INT(RND * 3) + 1
m$ = ph$(ii)
er = 0
m2$ = ph3$(ii)
phrase$ = "Avec les flèches, déplace le curseur là où tu veux faire les accords."
CALL traitementtexte(m$, m2$, phrase$, re%, rt$, gg2$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)

CALL resultats(re, ni, 4)

END SUB

DEFINT A-Z
SUB accpartpasse2 (re%, ni%, rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'accord participe passé niveau 2 et 3
'au niveau 2 : différenciation entre être et avoir
'au niveau 3 : accord avec ou sans le COD
'15/5/96
re = 0
IF ni = 2 THEN
CALL accordpartpasse2(re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
ELSE
CALL accordpartpasse3(re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
END IF
DIM z(10), ph$(20), rep1$(20), p$(4), p2$(4), pp$(2)
pt$ = "--"
p$(1) = "--": p$(2) = "e-": p$(3) = "-s": p$(4) = "es"
p2$(1) = " ": p2$(2) = "e ": p2$(3) = " s": p2$(4) = "es"

'niveau 2 (être ou avoir sans cod)
ph$(1) = "Dans la cour, Christine est poursuivi" + pt$ + " par Claude."
rep1$(1) = "e "
ph$(2) = "Le jour de son anniversaire, ses amis ont mangé" + pt$ + " cinq gâteaux !"
rep1$(2) = " "
ph$(3) = "A cause de cette tempête, les agriculteurs ont perdu" + pt$ + " leurs récoltes."
rep1$(3) = " "
ph$(4) = "Les oiseaux se sont enfui" + pt$ + " à l'approche du chat."
rep1$(4) = " s"
ph$(5) = "A l'automne, toutes les feuilles de l'arbre sont tombé" + pt$ + "."
rep1$(5) = "es"
ph$(6) = "Les élèves de la classe ont inventé" + pt$ + " une histoire passionnante."
rep1$(6) = " "
ph$(7) = "Valentine a oublié" + pt$ + " ses chaussures dans le gymnase."
rep1$(7) = " "
ph$(8) = "Michel et Sabrina sont allé" + pt$ + " faire des courses au supermarché."
rep1$(8) = " s"
ph$(9) = "Toutes les fautes ont été corrigé" + pt$ + " par le maître."
rep1$(9) = "es"
ph$(10) = "Les freins de cette voiture sont assisté" + pt$ + "."
rep1$(10) = " s"

'niveau 3 (avoir et cod)
ph$(11) = "Cet enfant a lu plusieurs livres puis il les a rangé" + pt$ + "."
rep1$(11) = " s"
ph$(12) = "Florian cherchait ses clefs car il les avait perdu" + pt$ + "."
rep1$(12) = "es"
ph$(13) = "Tout l'après-midi, il avait écouté" + pt$ + " ses chansons favorites."
rep1$(13) = " "
ph$(14) = "Elle n'a rien appris. Elle n'a pas su" + pt$ + " répondre aux questions."
rep1$(14) = " "
ph$(15) = "Tu m'avais emprunté ces cassettes. Pourquoi ne me les as-tu pas rendu" + pt$ + " ?"
rep1$(15) = "es"
ph$(16) = "Les deux amies ont regardé" + pt$ + " un film historique vraiment intéressant."
rep1$(16) = " "
ph$(17) = "Son chien s'était sauvé. Il l'a cherché" + pt$ + " pendant plusieurs jours."
rep1$(17) = " "
ph$(18) = "Jérôme possède de nombreux timbres. Hier, il les a tous classé" + pt$ + " !"
rep1$(18) = " s"
ph$(19) = "Après avoir bricolé, ses mains étaient pleines de cambouis. Il les a lavé" + pt$ + "."
rep1$(19) = "es"
ph$(20) = "Son ami lui a offert une jolie bague dorée. Elle l'a mis" + pt$ + " à son doigt."
rep1$(20) = "e "

FOR ii = 1 TO 10
'tirage
DO
f = 0
IF ni = 2 THEN
z(ii) = INT(RND * 10) + 1
ELSE
z(ii) = INT(RND * 10) + 11
END IF
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
b = z(ii)

er = 0
DO
accpp1:
CALL titre
CALL niv(10, ii)

CALL cadre(7, 2, 75, 4, blanc)
COLOR , blanc
CALL centre(9, noir, ph$(b))

CALL fleches(14, 39, p$(), 4, rep, rouge, 1, 23, 35)

CALL titre
CALL cadre(9, 2, 75, 4, blanc)
COLOR , blanc
'afficher la phrase avec le verbe
ph$ = ph$(b)
s = INSTR(1, ph$, pt$) 'points
ph$ = MID$(ph$, 1, s - 1) + LTRIM$(RTRIM$(p2$(rep))) + MID$(ph$, s + LEN(pt$))
CALL centre(11, noir, ph$)

CALL cadre(5, 30, 20, 2, marron)
COLOR , marron
CALL centre(6, blancbrill, "Est-ce correct ?")

pp$(1) = "oui"
pp$(2) = "non"
COLOR , noir
CALL centre(23, blanc, gg$)
CALL fleches(17, 39, pp$(), 2, r, rouge, 1, 23, 35)

SELECT CASE r
CASE 1
flag = 1
CASE 2
flag = 0
END SELECT

IF flag = 0 THEN GOTO accpp1

COLOR , noir
LOCATE 23, 20: PRINT SPACE$(40)

IF p2$(rep) = rep1$(b) THEN
CALL exact2
IF er = 0 THEN re = re + 1
EXIT DO
ELSE
CALL erreur2
er = er + 1
END IF
LOOP

NEXT ii

CALL resultats(re, ni, 3)

END SUB

DEFINT A-Z
SUB afformate (m$(), nm, v, h, blanc, noir, bleu)

h3 = h
col = 80 - (h3 * 2)
IF h3 = 0 THEN h3 = 1
GOSUB nombreligne

IF h3 > 1 THEN
CALL cadre(v - 1, h3 - 2, col + 2, nl, blanc)
COLOR noir, blanc
ELSE
LOCATE v - 2
COLOR noir, blanc
FOR i = 1 TO nl + 1: PRINT SPACE$(80): NEXT
END IF

LOCATE v, h3, 0
i = 1: l2 = 0

DO
l = LEN(m$(i))
l2 = l2 + l
IF l2 > col THEN
PRINT : i = i - 1: l2 = 0
LOCATE , h3
ELSEIF l2 = col THEN
PRINT m$(i); : l2 = 0
IF h3 > 1 THEN PRINT : LOCATE , h3
ELSEIF l2 = col - 1 THEN
PRINT m$(i): l2 = 0
LOCATE , h3
ELSE
PRINT m$(i); " "; : l2 = l2 + 1
END IF
i = i + 1
LOOP WHILE i <= nm
PRINT
EXIT SUB

nombreligne:
COLOR bleu, bleu
LOCATE v, h3, 0
i = 1: l2 = 0

DO
l = LEN(m$(i))
l2 = l2 + l
IF l2 > col THEN
PRINT : i = i - 1: l2 = 0
LOCATE , h3
ELSEIF l2 = col THEN
PRINT m$(i); : l2 = 0
IF h3 > 1 THEN PRINT : LOCATE , h3
ELSEIF l2 = col - 1 THEN
PRINT m$(i): l2 = 0
LOCATE , h3
ELSE
PRINT m$(i); " "; : l2 = l2 + 1
END IF
i = i + 1
LOOP WHILE i <= nm
ligne = CSRLIN
nl = ligne - v + 2

RETURN


END SUB

DEFINT A-Z
SUB homonymes (re%, ni%, rt$, gg$, pre$, titr$, prog%, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'20/2/96
re = 0
DIM z(10), ve$(2), ph$(20), rep1$(20), rep2$(20), rep3$(20), rep4$(20), p$(2)
pt$ = " " + STRING$(3, CHR$(22)) + " "
titr$ = "homonymes grammaticaux"


ph$(1) = "Ce matin, Frédéric" + pt$ + "étudié son encyclopédie." 'a
rep1$(1) = "a": rep2$(1) = "à": rep3$(1) = "1": rep4$(1) = "a -> avait à -> préposition"
ph$(2) = "Dans quelques jours, les touristes arriveront" + pt$ + "Paris." 'à
rep1$(2) = "a": rep2$(2) = "à": rep3$(2) = "2": rep4$(2) = rep4$(1)
ph$(3) = "Maxime achètera des livres" + pt$ + "des disques pour son père." 'ou
rep1$(3) = "ou": rep2$(3) = "où": rep3$(3) = "1": rep4$(3) = "ou -> ou bien où -> lieu"
ph$(4) = "Quelque soit l'endroit" + pt$ + "il se trouve, je le retrouverai." 'où
rep1$(4) = "ou": rep2$(4) = "où": rep3$(4) = "2": rep4$(4) = rep4$(3)
ph$(5) = "Viens ici" + pt$ + "écoute moi !" 'et
rep1$(5) = "et": rep2$(5) = "est": rep3$(5) = "1": rep4$(5) = "et -> et puis est -> était"
ph$(6) = "Il" + pt$ + "très tard. Il va falloir rentrer chez toi." 'est
rep1$(6) = "et": rep2$(6) = "est": rep3$(6) = "2": rep4$(6) = rep4$(5)
ph$(7) = "Nicolas a oublié" + pt$ + "sac de piscine dans un vestiaire." 'son
rep1$(7) = "son": rep2$(7) = "sont": rep3$(7) = "1": rep4$(7) = "son -> le sien sont -> étaient"
ph$(8) = "Mélanie et Christine" + pt$ + "allées visiter une exposition." 'sont
rep1$(8) = "son": rep2$(8) = "sont": rep3$(8) = "2": rep4$(8) = rep4$(7)
ph$(9) = "A l'automne," + pt$ + "observera une chute sensible des températures." 'on
rep1$(9) = "on": rep2$(9) = "ont": rep3$(9) = "1": rep4$(9) = "on -> il ont -> avaient"
ph$(10) = "Ils" + pt$ + "fait une magnifique balade dans la forêt." 'ont
rep1$(10) = "on": rep2$(10) = "ont": rep3$(10) = "2": rep4$(10) = rep4$(9)

'
ph$(11) = "Tout le monde est tombé d'accord pour adorer" + pt$ + "film."'ce
rep1$(11) = "ce": rep2$(11) = "se": rep3$(11) = "1": rep4$(11) = "ce -> cela se -> accompagne un verbe"
ph$(12) = "Hélène et Mélanie" + pt$ + "haïssent vraiment beaucoup." 'se
rep1$(12) = "ce": rep2$(12) = "se": rep3$(12) = "2": rep4$(12) = rep4$(11)
ph$(13) = "Françoise écoute les oiseaux qui vivent dans" + pt$ + "haies." 'ces
rep1$(13) = "ces": rep2$(13) = "ses": rep3$(13) = "1": rep4$(13) = "ces -> ce ses -> son"
ph$(14) = "De retour de vacances, Pauline regarde attentivement" + pt$ + "photos." 'ses
rep1$(14) = "ces": rep2$(14) = "ses": rep3$(14) = "2": rep4$(14) = rep4$(13)
ph$(15) = "Il fait nuit. L'enfant marche" + pt$ + "de son père car il n'est pas rassuré." 'près
rep1$(15) = "près": rep2$(15) = "prêt": rep3$(15) = "1": rep4$(15) = "près -> à côté de prêt -> prête"
ph$(16) = "Es-tu" + pt$ + "? Bien, alors allons y !" 'prêt
rep1$(16) = "près": rep2$(16) = "prêt": rep3$(16) = "2": rep4$(16) = rep4$(15)
ph$(17) = "Hier soir," + pt$ + "toi qui me l'avais appris. Ne dis pas le contraire !" 'c'est
rep1$(17) = "c'est": rep2$(17) = "s'est": rep3$(17) = "1": rep4$(17) = "c'est -> c'était s'est -> s'était + participe passé"
ph$(18) = "Guillaume" + pt$ + "perdu encore une fois dans les couloirs du métro !" 's'est
rep1$(18) = "c'est": rep2$(18) = "s'est": rep3$(18) = "2": rep4$(18) = rep4$(17)
ph$(19) = "C'est" + pt$ + "qu'il habitait avant que les policiers découvrent son repaire." 'là
rep1$(19) = "là": rep2$(19) = "l'a": rep3$(19) = "1": rep4$(19) = "là -> ici l'a -> l'avais ou l'avait"
ph$(20) = "Nadège a envoyé le ballon très haut et Martine" + pt$ + "rattrapé de justesse." 'l'a
rep1$(20) = "là": rep2$(20) = "l'a": rep3$(20) = "2": rep4$(20) = rep4$(19)

'niveau
CALL niveau(ni, 2)

CALL titre

FOR ii = 1 TO 10
'tirage
DO
f = 0
IF ni = 1 THEN
z(ii) = INT(RND * 10) + 1
ELSE
z(ii) = INT(RND * 10) + 11
END IF
FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
b = z(ii)

ve$(1) = rep1$(b): ve$(2) = rep2$(b)

er = 0

DO
tlt1:
CALL titre
CALL niv(10, ii)
CALL cadre(7, 2, 75, 4, blanc)
COLOR , blanc
CALL centre(9, noir, ph$(b))

COLOR , noir
'trouver longueur mot max
l2 = 0
FOR i = 1 TO 2
l1 = LEN(ve$(i)): IF l2 < l1 THEN l2 = l1
NEXT
h = INT(41 - (l2 / 2))

CALL fleches(16, h, ve$(), 2, rep, rouge, 1, 23, 35)

CALL titre
CALL cadre(9, 2, 75, 4, blanc)
'afficher la phrase avec le verbe
ph$ = ph$(b)
s = INSTR(1, ph$, pt$) 'points
ph$ = MID$(ph$, 1, s - 1) + " " + ve$(rep) + " " + MID$(ph$, s + LEN(pt$))
COLOR , blanc
CALL centre(11, noir, ph$)

CALL cadre(4, 30, 20, 2, marron)
COLOR , marron
CALL centre(5, blancbrill, "Est-ce correct ?")

p$(1) = "oui"
p$(2) = "non"
COLOR , noir
CALL centre(23, blanc, gg$)
CALL fleches(17, 39, p$(), 2, r, rouge, 1, 23, 35)

SELECT CASE r
CASE 1
flag = 1
CASE 2
flag = 0
END SELECT

IF flag = 0 THEN GOTO tlt1

COLOR , noir
LOCATE 23, 20: PRINT SPACE$(40)

IF rep = VAL(rep3$(b)) THEN
CALL exact2
IF er = 0 THEN re = re + 1
EXIT DO
ELSE
CALL erreur2
CALL centre(23, rougeclair, rep4$(b))
CALL getinvimouse(w)
LOCATE 23, 1: PRINT SPACE$(80)
er = er + 1
END IF
LOOP

NEXT ii

CALL resultats(re, ni, 2)

END SUB
 

 

DECLARE SUB fleches (v%, h%, w$(), np%, r%, coul%, drap%, v2%, h3%)
DECLARE SUB consigne (nl%, w$, z$, y$)
DECLARE SUB fleches3 (r%, rr%, w$(), np%, jj%, gg$, gg2$)
DECLARE SUB MouseShow ()
DECLARE SUB cadre (v%, h%, l%, nli%, c%)
DECLARE SUB niveau (r%, np%)
DECLARE SUB resultats (re%, ni%, nbniv%)
DECLARE SUB afformate (m$(), nm%, v%, h%, blanc%, noir%, bleu%)
DECLARE SUB erreur2 ()
DECLARE SUB exact2 ()
DECLARE SUB quitter (x%, y%)
DECLARE SUB titre ()
DECLARE SUB getinvimouse (rr%)
DECLARE SUB ouinon (r$)
DECLARE SUB attendre (tx!)
DECLARE SUB centre (v%, coul%, ph$)
DECLARE SUB afficheformate (m$(), nm%)
DECLARE SUB pleinecran2 (r$, phrase$, m$, v1%, v2%, rt$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB recupere2 (m$, v1%, v2%)
DECLARE SUB transforme (m$)
DECLARE SUB trouvemot (m$, m$(), nm%)
DECLARE SUB MousePoll (row%, col%, lButton%, rButton%)
'Exo 6
'Daniel CLERC
'Francais AAS
'15/5/96


DEFINT A-Z
SUB afficheformate (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
DEF SEG = 0
POKE 1050, PEEK(1052)
DEF SEG
debut! = TIMER
DO
fin! = TIMER
IF INKEY$ <> "" THEN EXIT DO
LOOP WHILE fin! - debut! < tx!
tx! = tx! / 2
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

LOCATE v2, h
PRINT STRING$(l + 2, 220)
FOR i = 1 TO nli - 1
v2 = v2 + 1: LOCATE v2, h
PRINT STRING$(l + 2, 219)
NEXT

COLOR , 1
LOCATE v2 + 1, h: PRINT CHR$(223)

COLOR , 0
LOCATE v + 1
FOR i = 1 TO nli
LOCATE , h + l + 2
PRINT " "
NEXT
LOCATE v2 + 1, h + 1
PRINT STRING$(l + 1, 223)
COLOR 15

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 convertir (z$)
'convertir les . en ,
s = INSTR(1, z$, ".")
IF s <> 0 THEN z$ = MID$(z$, 1, s - 1) + "," + MID$(z$, s + 1)

END SUB

DEFINT A-Z
SUB entree (x, y, drapeau)
COLOR 7, x
LOCATE 23, 1: PRINT SPACE$(37) + CHR$(17) + CHR$(196) + CHR$(217) + SPACE$(40)
COLOR 15
DEF SEG = 0
POKE 1050, PEEK(1052)
DEF SEG
r$ = ""
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))

IF rr = 27 AND drapeau = 1 THEN
CALL quitter(x, y)
END IF
COLOR , y
END SUB

DEFINT A-Z
SUB fleches3 (r, rr, w$(), np, jj, gg$, gg2$)
'pour phrase éclatée francais 20/11/96
DIM p$(np)

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

'données
souris = 0
ll = 6: v = 7: v_mini = v
r = 1: rr = 0
paire = 1
longueur = LEN(p$(1))

IF np <= ll THEN
h = 33: h1 = h: h3 = 0: h3 = 0
colonnes = 1
ll_dernier = np
ELSEIF np <= 2 * ll THEN
h = 22: h1 = h: h3 = 50: h3 = 0
ll = INT(np / 2)
IF np / 2 <> INT(np / 2) THEN paire = 0: ll = ll + 1
colonnes = 2
ll_dernier = np - ll
ELSE
h = 5: h1 = h: h3 = 33: h3 = 61
ll = INT(np / 3)
IF np / 3 <> INT(np / 3) THEN paire = 0: ll = ll + 1
colonnes = 3
ll_dernier = np - (2 * ll)
END IF

COLOR 15, 4

SELECT CASE colonnes
CASE 1
CALL cadre(v - 1, h1 - 2, longueur + 4, np + 1, 4)
COLOR , 4
LOCATE v
FOR i = 1 TO np: LOCATE , h1: PRINT p$(i): NEXT

CASE 2
CALL cadre(v - 1, h1 - 2, h3 - h1 + longueur + 4, ll + 1, 4)
COLOR , 4
LOCATE v
FOR i = 1 TO ll: LOCATE , h1: PRINT p$(i): NEXT
LOCATE v
FOR i = ll + 1 TO np: LOCATE , h3: PRINT p$(i): NEXT

CASE 3
z = h3 - h1 + longueur + 4
IF z + h1 >= 80 THEN z = 80 - h1
CALL cadre(v - 1, h1 - 2, z, ll + 1, 4)
COLOR , 4
LOCATE v
FOR i = 1 TO ll: LOCATE , h1: PRINT p$(i): NEXT
LOCATE v
FOR i = ll + 1 TO 2 * ll: LOCATE , h3: PRINT p$(i): NEXT
LOCATE v
FOR i = (2 * ll) + 1 TO np: LOCATE , h3: PRINT p$(i): NEXT
END SELECT

COLOR , 0
IF jj = 0 THEN
CALL centre(23, 7, SPACE$(10) + gg2$ + SPACE$(10))
flag = 1: htab = 33
ELSEIF np > 6 THEN
CALL centre(23, 7, gg2$ + " " + CHR$(27) + "- = Corriger")
flag = 2: htab = 23
ELSE
CALL centre(23, 7, " " + gg$ + " " + CHR$(27) + "- = Corriger ")
flag = 3: htab = 25
END IF
COLOR 15, 4

'fleches
COLOR 4, 7

LOCATE v, h - 1
PRINT " "; p$(1); " "
COLOR 15, 4

DO
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &H9F)'non numérique
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 21, 1: PRINT v_mini, v_mini + ll - 1, longueur, ll, ll_dernier'===
' LOCATE 22, 1: PRINT "Position de la souris : "; v_mouse; ", "; h_mouse, flag '===
IF lButton THEN
IF v_mouse = 23 THEN
SELECT CASE flag
CASE 1
IF h_mouse = htab THEN
'fleche haut
rr = 72
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse = htab + 2 THEN
'fleche bas
rr = 80
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse = htab + 4 THEN
'fleche gauche
rr = 75
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse = htab + 6 THEN
'fleche droite
rr = 77
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse >= htab + 13 AND h_mouse <= htab + 15 THEN
'entree
r$ = CHR$(13)
CALL attendre(.3)
souris = 0
EXIT DO
END IF

CASE 2
IF h_mouse >= 47 AND h_mouse <= 59 THEN
r$ = CHR$(8)
souris = 0
CALL attendre(.3)
EXIT DO

ELSEIF h_mouse = htab THEN
'fleche haut
rr = 72
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse = htab + 2 THEN
'fleche bas
rr = 80
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse = htab + 4 THEN
'fleche gauche
rr = 75
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse = htab + 6 THEN
'fleche droite
rr = 77
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse >= htab + 13 AND h_mouse <= htab + 15 THEN
'entree
r$ = CHR$(13)
CALL attendre(.3)
souris = 0
EXIT DO
END IF

CASE 3
IF h_mouse >= 44 AND h_mouse <= 56 THEN
r$ = CHR$(8)
souris = 0
CALL attendre(.3)
EXIT DO

ELSEIF h_mouse = htab THEN
'fleche haut
rr = 72
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse = htab + 2 THEN
'fleche bas
rr = 80
CALL attendre(.3)
souris = 1
EXIT DO
ELSEIF h_mouse >= htab + 9 AND h_mouse <= htab + 11 THEN
'entree
r$ = CHR$(13)
CALL attendre(.3)
souris = 0
EXIT DO
END IF
END SELECT
END IF

IF v_mouse >= v_mini AND v_mouse <= v_mini + ll - 1 THEN

SELECT CASE colonnes
CASE 1
IF h_mouse >= h1 AND h_mouse <= h1 + longueur THEN
LOCATE v_mini
FOR i = 1 TO np
LOCATE , h1 - 1: PRINT " "; p$(i); " "
NEXT
calcul = v_mouse - v_mini + 1
LOCATE v_mouse, h1 - 1
COLOR 4, 7
PRINT " "; p$(calcul); " "
CALL attendre(.3)
COLOR 15, 4
r = calcul
EXIT SUB
END IF

CASE 2
IF (h_mouse >= h1 AND h_mouse <= h1 + longueur) OR (h_mouse >= h3 AND h_mouse <= h3 + longueur) THEN
IF v_mouse = v_mini + ll - 1 AND (h_mouse >= h3 AND h_mouse <= h3 + longueur) AND paire = 0 THEN
BEEP
ELSE
LOCATE v_mini
FOR i = 1 TO ll
LOCATE , h1 - 1: PRINT " "; p$(i); " "
NEXT
LOCATE v_mini
FOR i = ll + 1 TO np
LOCATE , h3 - 1: PRINT " "; p$(i); " "
NEXT
IF h_mouse < h3 THEN
calcul = v_mouse - v_mini + 1
LOCATE v_mouse, h1 - 1
ELSE
calcul = (v_mouse + ll) - v_mini + 1
LOCATE v_mouse, h3 - 1
END IF
COLOR 4, 7
PRINT " "; p$(calcul); " "
CALL attendre(.3)
COLOR 15, 4
r = calcul
EXIT SUB
END IF
END IF

CASE 3
IF (h_mouse >= h1 AND h_mouse <= h1 + longueur) OR (h_mouse >= h3 AND h_mouse <= h3 + longueur) OR (h_mouse >= h3 AND h_mouse <= h3 + longueur) THEN
IF v_mouse = v_mini + ll - 1 AND (h_mouse >= h3 AND h_mouse <= h3 + longueur) AND paire = 0 THEN
BEEP
ELSE
LOCATE v_mini
FOR i = 1 TO ll
LOCATE , h1 - 1: PRINT " "; p$(i); " "
NEXT
LOCATE v_mini
FOR i = ll + 1 TO ll * 2
LOCATE , h3 - 1: PRINT " "; p$(i); " "
NEXT
LOCATE v_mini
FOR i = (ll * 2) + 1 TO np
LOCATE , h3 - 1: PRINT " "; p$(i); " "
NEXT
IF h_mouse < h3 THEN
calcul = v_mouse - v_mini + 1
LOCATE v_mouse, h1 - 1
ELSEIF h_mouse < h3 THEN
calcul = (v_mouse + ll) - v_mini + 1
LOCATE v_mouse, h3 - 1
ELSE
calcul = (v_mouse + (2 * ll)) - v_mini + 1
LOCATE v_mouse, h3 - 1
END IF
COLOR 4, 7
PRINT " "; p$(calcul); " "
CALL attendre(.3)
COLOR 15, 4
r = calcul
EXIT SUB
END IF
END IF

END SELECT

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 8
EXIT SUB

END SELECT

LOCATE v, h - 1
PRINT " "; p$(r); " "
GOSUB chedi
LOCATE v, h - 1
COLOR 4, 7
PRINT " "; p$(r); " "
COLOR 15, 4
LOOP WHILE rr <> 13
EXIT SUB

chedi:
IF colonnes = 1 THEN GOTO chedi1
IF rr = 75 THEN r = r - ll: h = h - 28: GOTO chedi2 'gauche
IF rr = 77 THEN r = r + ll: h = h + 28: GOTO chedi2 'droite
chedi1:
IF rr = 72 THEN v = v - 1: r = r - 1 'haut
IF rr = 80 THEN v = v + 1: r = r + 1 'bas
chedi2:
IF r = ll + 1 THEN v = v_mini: h = h3
IF r = ll THEN v = ll + (v_mini - 1): h = h1
IF r = 2 * ll + 1 THEN v = v_mini: h = h3
IF r = 2 * ll THEN v = ll + (v_mini - 1): h = h3
IF r > np THEN r = 1: v = v_mini: h = h1
IF r >= 1 THEN RETURN
r = np
IF np <= ll THEN v = (v_mini - 1) + np: RETURN
IF np <= 2 * ll THEN v = (v_mini - 1) + np - ll: h = h3: RETURN
v = (v_mini - 1 + np) - 2 * ll: h = h3
RETURN

END SUB

DEFINT A-Z
SUB getinvi (rr%)
DEF SEG = 0
POKE 1050, PEEK(1052)
DEF SEG
DO
r$ = INKEY$
LOOP WHILE r$ = ""
IF LEN(r$) < 2 THEN rr = ASC(r$) ELSE rr = ASC(RIGHT$(r$, 1))
END SUB

DEFINT A-Z
SUB ligne23 (x, y)
COLOR , x
LOCATE 23, 1, 0: PRINT SPACE$(80): LOCATE 23
COLOR , y
END SUB

DEFINT A-Z
SUB ouinon (r$)
h = POS(0)
v = CSRLIN

LOCATE v, h
COLOR 7: PRINT "["; : COLOR 14: PRINT "O"; : COLOR 7: PRINT "]ui ou ["; : COLOR 14: PRINT "N"; : COLOR 7: PRINT "]on ?"
DO
r$ = ""
DO
r$ = INKEY$
' Obtient l'emplacement de la souris et l'état des boutons.
MousePoll v_mouse, h_mouse, lButton, rButton
IF lButton THEN
IF v_mouse = v AND (h_mouse >= h AND h_mouse <= h + 5) THEN
r$ = "o"
CALL attendre(.3)
ELSEIF v_mouse = v AND (h_mouse >= h + 10 AND h_mouse <= h + 14) THEN
r$ = "n"
CALL attendre(.3)
ELSE
BEEP
END IF
END IF
LOOP WHILE r$ = ""

r$ = UCASE$(r$)
LOOP UNTIL r$ = "O" OR r$ = "N" OR r$ = CHR$(27) OR r$ = CHR$(13)

END SUB

DEFINT A-Z
SUB pleinecran2 (r$, phrase$, m$, v1, v2, rt$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
m$ = RTRIM$(m$)
'_saisie plein ecran_
f = -1: 'insertion
COLOR , noir
LOCATE 22: PRINT SPACE$(80): PRINT SPACE$(80)
CALL centre(22, vertclair, phrase$)
CALL centre(23, blanc, "Ret.Arr Suppr Inser Origine Fin " + CHR$(24) + " " + CHR$(25) + " " + CHR$(27) + " " + CHR$(26) + " " + rt$ + " = valider")
COLOR noir, blanc
VIEW PRINT v1 - 1 TO v2
v = v1: h = 1

plecran0:
CLS 2
plecran1:

LOCATE v1, 1, 0: PRINT m$
plecran2:
IF h < 1 THEN h = 1: BEEP
IF v < v1 THEN v = v1: BEEP
IF h > 80 THEN h = 1: v = v + 1

lc = h + (80 * (v - v1))
IF lc > LEN(m$) THEN 'fin texte
lc = LEN(m$) + 1
v = INT(LEN(m$) / 80)
h = (LEN(m$) - (80 * v)) + 1
v = v + v1
END IF

IF v = v2 AND h > 38 THEN h = 38

IF NOT f THEN LOCATE v, h, 1, 0, 7 ELSE LOCATE v, h, 1, 7

souris = 0
DO
r$ = INKEY$
MousePoll v_mouse, h_mouse, lButton, rButton
'LOCATE 8: PRINT v_mouse, h_mouse, v1, v2'===

IF lButton THEN
IF v_mouse >= v1 AND v_mouse <= v2 THEN
v = v_mouse: h = h_mouse
CALL attendre(.2)
souris = 1
EXIT DO
ELSEIF v_mouse = 23 THEN
IF h_mouse >= 61 AND h_mouse <= 73 THEN
r$ = CHR$(13)
CALL attendre(.3)
ELSEIF h_mouse >= 33 AND h_mouse <= 39 THEN
'origine
r2 = 71
CALL attendre(.2)
souris = 2
EXIT DO
ELSEIF h_mouse >= 43 AND h_mouse <= 45 THEN
'fin
r2 = 79
CALL attendre(.2)
souris = 2
EXIT DO
ELSEIF h_mouse = 49 THEN
'haut
r2 = 72
CALL attendre(.2)
souris = 2
EXIT DO
ELSEIF h_mouse = 51 THEN
'bas
r2 = 80
CALL attendre(.2)
souris = 2
EXIT DO
ELSEIF h_mouse = 53 THEN
'gauche
r2 = 75
CALL attendre(.2)
souris = 2
EXIT DO
ELSEIF h_mouse = 55 THEN
'droite
r2 = 77
CALL attendre(.2)
souris = 2
EXIT DO
ELSEIF h_mouse >= 25 AND h_mouse <= 28 THEN
'ins
r2 = 82
CALL attendre(.2)
souris = 2
EXIT DO
ELSEIF h_mouse >= 17 AND h_mouse <= 21 THEN
'suppr
r2 = 83
CALL attendre(.2)
souris = 2
EXIT DO
ELSEIF h_mouse >= 7 AND h_mouse <= 13 THEN
'del
r$ = CHR$(8)
CALL attendre(.2)
souris = 0
ELSE
BEEP
END IF
ELSE
BEEP
END IF
END IF
LOOP WHILE r$ = ""

IF souris = 1 THEN GOTO plecran2
IF souris = 2 THEN GOTO plecran4

IF r$ = CHR$(27) OR r$ = CHR$(13) THEN VIEW PRINT: LOCATE , , 0: EXIT SUB
IF LEN(r$) = 2 THEN GOTO plecran3
r2 = ASC(r$)

IF r2 > 31 AND r2 < 166 THEN
IF LEN(m$) > 399 THEN
BEEP
VIEW PRINT
COLOR , noir
LOCATE 23, 1, 0: PRINT SPACE$(80)
CALL centre(23, rougeclair, "Tu as tapé trop de caractères !")
CALL getinvimouse(w)
LOCATE 23, 1: PRINT SPACE$(80)
CALL centre(23, blanc, "Ret.Arr Suppr Inser Origine Fin " + CHR$(24) + " " + CHR$(25) + " " + CHR$(27) + " " + CHR$(26) + " " + rt$ + " = valider")
LOCATE , , 1
COLOR noir, blanc
VIEW PRINT v1 - 1 TO v2
GOTO plecran1
END IF
IF f THEN
m$ = MID$(m$, 1, lc - 1) + r$ + MID$(m$, lc)
ELSE
m$ = MID$(m$, 1, lc - 1) + r$ + MID$(m$, lc + 1)
END IF
h = h + 1
GOTO plecran1
END IF

IF r2 = 8 THEN 'delete
IF h = 1 AND v = v1 THEN GOTO plecran0
m$ = MID$(m$, 1, lc - 2) + MID$(m$, lc): h = h - 1
IF h < 1 AND v > v1 THEN h = 80: v = v - 1
GOTO plecran0
END IF

plecran3:
'carac étendu
r2 = ASC(RIGHT$(r$, 1))
plecran4:
IF r2 = 72 THEN v = v - 1 'haut
IF r2 = 80 THEN v = v + 1 'bas
IF r2 = 77 THEN h = h + 1 'droite
IF r2 = 71 THEN h = 1: GOTO plecran2 'home
IF r2 = 79 THEN h = 80: GOTO plecran2 'end
IF r2 = 73 THEN v = v1: h = 1: GOTO plecran2'pgup
IF r2 = 81 THEN v = v2: h = 80: GOTO plecran2'pgdown
IF r2 = 75 THEN h = h - 1: IF h < 1 AND v > v1 THEN h = 80: v = v - 1: GOTO plecran2 'gauche
IF r2 = 82 THEN f = NOT f: GOTO plecran0 'ins
IF r2 = 83 THEN 'suppr
m$ = MID$(m$, 1, lc - 1) + MID$(m$, lc + 1)
GOTO plecran0
END IF
GOTO plecran2

END SUB

DEFINT A-Z
SUB quitter (x, y)
'31/5/95
DIM c(80), x$(80)
f = 0
'on mémorise la zone quitter
LOCATE 23, 1, 0
COLOR 7, x
FOR i = 1 TO 80
x$(i) = CHR$(SCREEN(23, i))
c(i) = SCREEN(23, i, 1): IF c(i) > 15 THEN f = 1 'erreur à cause du fond
NEXT

LOCATE 23, 1: PRINT SPACE$(80)
MouseShow
LOCATE 23, 28
BEEP: PRINT "Quitter ";
CALL ouinon(r$)
IF r$ = "O" THEN COLOR , 0: CLS : RUN "exo_fr2" '===

'on restitue la zone quitter
LOCATE 23, 1
FOR i = 1 TO 80
IF f = 0 THEN
COLOR c(i)
END IF
PRINT x$(i);
NEXT
PRINT
COLOR 15, y
END SUB

DEFINT A-Z
SUB recupere2 (m$, v1, v2)
LOCATE 22, 1: COLOR , noir: PRINT SPACE$(80): COLOR , bleu
'_recuperation texte pour ponctuer_
m$ = ""
FOR y = v1 TO v2
FOR x = 1 TO 80
s = SCREEN(y, x)
m$ = m$ + CHR$(s)
NEXT x
NEXT y

IF LEFT$(m$, 355) = SPACE$(355) THEN m$ = CHR$(255): EXIT SUB
m$ = RTRIM$(m$): m$ = LTRIM$(m$)
m$ = m$ + " "

END SUB

DEFINT A-Z
SUB solution (sol$)
BEEP: COLOR , 0
LOCATE 23, 1: PRINT SPACE$(80)
CALL centre(23, 12, "Solution : " + sol$)
CALL attendre(2)
LOCATE 23, 1: PRINT SPACE$(80)
END SUB

DEFINT A-Z
SUB traitementtexte (m$, m2$, phrase$, re%, rt$, gg2$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'17/5/96
DIM m$(100), m2$(100), p$(2)
er = 0

CALL titre
CALL trouvemot(m2$, m$(), nm)
LOCATE , , 0
CALL afformate(m$(), nm, 9, 10, blanc, noir, bleu)
COLOR , noir

CALL centre(23, blanc, "Lis le texte puis tape " + rt$)

CALL getinvimouse(w)

debtraittexte:
CALL titre
DO
CALL pleinecran2(r$, phrase$, m$, 9, 14, rt$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
IF r$ = CHR$(27) THEN CALL quitter(noir, bleu)
LOOP WHILE r$ = CHR$(27)

COLOR , noir
LOCATE 22, 1: PRINT SPACE$(80): PRINT SPACE$(80)
CALL recupere2(m$, 9, 14)

IF m$ = CHR$(255) THEN
BEEP: BEEP
CALL centre(23, rougeclair, "Tu as effacé tout le texte !")
CALL getinvimouse(w)
EXIT SUB
END IF

CALL titre
COLOR , bleu
CALL transforme(m$)
CALL trouvemot(m$, m$(), nm)

FOR i = 1 TO nm
l = LEN(m$(i))
IF l > 80 - 1 THEN
BEEP: LOCATE , , 0: COLOR , noir
CALL centre(23, rougeclair, "Tu as du supprimer trop d'espaces !")
COLOR blancbrill
CALL getinvimouse(r)
GOTO debtraittexte
END IF
NEXT i

LOCATE , , 0
CALL afformate(m$(), nm, 9, 10, blanc, noir, bleu)

CALL cadre(4, 30, 20, 2, marron)
COLOR , marron
CALL centre(5, blancbrill, "Est-ce correct ?")

p$(1) = "oui"
p$(2) = "non"
COLOR , noir
CALL centre(23, blanc, gg$)
CALL fleches(17, 39, p$(), 2, r, rouge, 1, 23, 35)

SELECT CASE r
CASE 1
flag = 1
CASE 2
flag = 0
END SELECT

LOCATE 23, 1: PRINT SPACE$(80)

IF flag = 0 THEN GOTO debtraittexte

IF m$ = m2$ THEN
CALL exact2
IF er = 0 THEN
re = 10
ELSEIF er = 1 THEN
re = 8
END IF
ELSE
CALL erreur2
er = er + 1
IF er > 1 THEN
'affichage des deux textes et resaisie
CALL titre
CALL trouvemot(m2$, m2$(), nm)
LOCATE 5, , 0: COLOR vertclair, bleu
CALL afficheformate(m2$(), nm)
COLOR rouge: LOCATE 11: PRINT STRING$(80, CHR$(196))
CALL trouvemot(m$, m$(), nm)

debtraittexte2:
COLOR blancbrill, bleu
DO
CALL pleinecran2(r$, phrase$, m$, 13, 19, rt$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
IF r$ = CHR$(27) THEN CALL quitter(noir, bleu)
LOOP WHILE r$ = CHR$(27)

COLOR , noir
LOCATE 22, 1: PRINT SPACE$(80): PRINT SPACE$(80)
CALL recupere2(m$, 13, 19)

IF m$ = CHR$(255) THEN
BEEP: BEEP
CALL centre(23, rougeclair, "Tu as effacé tout le texte !")
CALL getinvimouse(w)
EXIT SUB
END IF

COLOR , bleu
CALL transforme(m$)
CALL trouvemot(m$, m$(), nm)

FOR i = 1 TO nm
l = LEN(m$(i))
IF l > 80 - 1 THEN
BEEP: LOCATE , , 0: COLOR , noir
CALL centre(23, rougeclair, "Tu as du supprimer trop d'espaces !")
COLOR blancbrill
CALL getinvimouse(r)
GOTO debtraittexte2
END IF
NEXT i

COLOR jaune, bleu
VIEW PRINT 12 TO 20: CLS 2: VIEW PRINT
LOCATE 13
CALL afficheformate(m$(), nm)
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)

IF m$ = m2$ THEN
CALL exact2
re = 5
ELSE
CALL centre(23, rougeclair, "Compare les textes")
re = 3
CALL getinvimouse(w)
END IF
ELSE
CALL titre
CALL trouvemot(m2$, m$(), nm)
LOCATE 9, , 0: COLOR blancbrill, bleu
CALL afformate(m$(), nm, 9, 10, blanc, noir, bleu)
COLOR blanc, noir
CALL centre(23, blanc, "Relis le texte puis tape " + rt$)
CALL getinvimouse(w)
GOTO debtraittexte
END IF
END IF

END SUB

DEFINT A-Z
SUB transforme (m$)
'13/5/94
e$ = " ": GOSUB sup

e$ = "(": GOSUB avant
e$ = CHR$(34): GOSUB avant

e$ = CHR$(34): GOSUB apres
e$ = ")": GOSUB apres
e$ = ",": GOSUB apres
e$ = ".": GOSUB apres

e$ = ":": GOSUB avap
e$ = "!": GOSUB avap
e$ = "?": GOSUB avap
e$ = ";": GOSUB avap
e$ = "'": GOSUB avap '1° étape

GOSUB ctrl
GOSUB ctrl2
GOSUB ctrl3 '2° étape
GOSUB ctrl4

e$ = "! ! !": e2$ = "!!!": GOSUB ctrl5
e$ = "? ? ?": e2$ = "???": GOSUB ctrl5
e$ = ". . .": e2$ = "...": GOSUB ctrl5

EXIT SUB

apres:
l = 1: f = 0
DO
GOSUB espace
LOOP WHILE z <> 0
RETURN

espace:
z = INSTR(l, m$, e$): IF z = 0 THEN RETURN
IF e$ = CHR$(34) THEN f = f + 1
IF f / 2 <> INT(f / 2) AND e$ = CHR$(34) THEN l = z + 1: RETURN

IF ASC(MID$(m$, z + 1, 1)) <> 32 THEN m$ = MID$(m$, 1, z) + " " + MID$(m$, z + 1) 'pas espace après
IF z = 1 THEN l = z + 1: GOTO espace

IF ASC(MID$(m$, z - 1, 1)) = 32 THEN m$ = MID$(m$, 1, z - 2) + MID$(m$, z): 'espace avant
l = z + 1

RETURN

avant:
l = 1: f = 0
DO
GOSUB espace2
LOOP WHILE z <> 0
RETURN

espace2:
z = INSTR(l, m$, e$): IF z = 0 THEN RETURN
IF e$ = CHR$(34) THEN f = f + 1
IF f / 2 = INT(f / 2) AND e$ = CHR$(34) THEN l = z + 1: RETURN 'pair
IF ASC(MID$(m$, z + 1, 1)) = 32 THEN m$ = MID$(m$, 1, z) + MID$(m$, z + 2)'un espace après
IF z = 1 THEN GOTO esp2
IF ASC(MID$(m$, z - 1, 1)) <> 32 THEN m$ = MID$(m$, 1, z - 1) + " " + MID$(m$, z): z = z + 1 'pas d'espace
esp2:
l = z + 1
RETURN

avap:
l = 1
DO
GOSUB espace3
LOOP WHILE z <> 0
RETURN

espace3:
z = INSTR(l, m$, e$): IF z = 0 THEN RETURN
IF ASC(MID$(m$, z + 1, 1)) <> 32 THEN m$ = MID$(m$, 1, z) + " " + MID$(m$, z + 1)
IF z = 1 THEN l = z + 1: GOTO espace3
IF ASC(MID$(m$, z - 1, 1)) <> 32 THEN m$ = MID$(m$, 1, z - 1) + " " + MID$(m$, z) 'pas d'espace
l = z + 1
RETURN

sup:
l = 1
DO
GOSUB espace4
LOOP WHILE z <> LEN(m$)
RETURN

espace4:
z = INSTR(l, m$, e$): IF z = LEN(m$) THEN RETURN
IF ASC(MID$(m$, z + 1, 1)) = 32 THEN m$ = MID$(m$, 1, z) + MID$(m$, z + 2): RETURN
l = z + 1
RETURN

ctrl:
l = 1: f = 0
DO
GOSUB espace5
LOOP WHILE z <> 0
RETURN

espace5:
z = INSTR(l, m$, CHR$(34)): IF z = 0 THEN RETURN
f = f + 1
IF f / 2 <> INT(f / 2) THEN l = z + 1: RETURN
t$ = MID$(m$, z - 2, 2)
IF t$ = ". " OR t$ = "? " OR t$ = "! " OR t$ = ") " THEN
m$ = MID$(m$, 1, z - 2) + MID$(m$, z)
END IF
l = z + 1
RETURN

ctrl2:
l = 1
DO
GOSUB espace6
LOOP WHILE z <> 0
RETURN

espace6:
z = INSTR(l, m$, CHR$(34)): IF z = 0 THEN RETURN
IF z = 1 THEN l = z + 1: RETURN
t$ = MID$(m$, z - 2, 2)
IF t$ = "( " THEN
m$ = MID$(m$, 1, z - 2) + MID$(m$, z)
END IF
l = z + 1
RETURN

ctrl3:
l = 1
DO
GOSUB espace7
LOOP WHILE z <> 0
RETURN

espace7:
z = INSTR(l, m$, " ' "): IF z = 0 THEN RETURN
m$ = MID$(m$, 1, z - 1) + "'" + MID$(m$, z + 3)
l = z + 1
RETURN

ctrl4:
l = 1
DO
GOSUB espace8
LOOP WHILE z <> 0
RETURN

espace8:
z = INSTR(l, m$, ")"): IF z = 0 THEN RETURN
t$ = MID$(m$, z - 2, 2)
IF t$ = ". " OR t$ = "? " OR t$ = "! " THEN
m$ = MID$(m$, 1, z - 2) + MID$(m$, z)
END IF
l = z + 1
RETURN

ctrl5:
l = 1
DO
GOSUB espace9
LOOP WHILE z <> 0
RETURN

espace9:
z = INSTR(l, m$, e$): IF z = 0 THEN RETURN
m$ = MID$(m$, 1, z - 1) + e2$ + MID$(m$, z + 5)
l = z + 1
RETURN

END SUB

DEFINT A-Z
SUB tri (n$(), no)
FOR i = 1 TO no - 1
m = 0
FOR j = 1 TO no - i
IF n$(j + 1) < n$(j) THEN SWAP n$(j), n$(j + 1)
m = 1
NEXT j
IF m = 0 THEN EXIT FOR
NEXT i

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
 

 

DECLARE SUB niv (limit%, xx%)
DECLARE SUB niveau (r%, np%)
DECLARE SUB resultats (re%, ni%, nbniv%)
DECLARE SUB consigne (nl%, w$, z$, y$)
DECLARE SUB getinvimouse (rr%)
DECLARE SUB fleches3 (r%, rr%, w$(), np%, jj%, gg$, gg2$)
DECLARE SUB quitter (x%, y%)
DECLARE SUB ouinon (r$)
DECLARE SUB centre (v%, coul%, ph$)
DECLARE SUB entree (x%, y%, drapeau%)
DECLARE SUB erreur2 ()
DECLARE SUB exact2 ()
DECLARE SUB fleches (v%, h%, w$(), np%, r%, coul%, drap%, v2%, h3%)
DECLARE SUB titre ()
DECLARE SUB cadre (v%, h%, l%, nli%, c%)

DEFINT A-Z
SUB accordadj (re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
'18/1/97
DIM p$(4)
er = 0
CALL titre
CALL cadre(8, 5, 12, 4, rouge)
COLOR , rouge
LOCATE 9, 7: PRINT "Accord de"
LOCATE 10, 7: PRINT "l'adjectif"
COLOR jaune, bleu: LOCATE 7, 26: PRINT "avec..."
p$(1) = "le déterminant"
p$(3) = "le nom"
p$(2) = "le sujet"
DO
CALL fleches(9, 26, p$(), 3, r, rouge, 1, 23, 26)
IF r = 3 THEN
CALL exact2
EXIT DO
ELSE
CALL erreur2
er = er + 1
END IF
LOOP
COLOR jaune, bleu: LOCATE 7, 50: PRINT "comment..."
p$(3) = "en nombre"
p$(2) = "en genre et en nombre"
p$(1) = "personne, temps, groupe"
DO
CALL fleches(9, 50, p$(), 3, r, rouge, 1, 23, 50)
IF r = 2 THEN
CALL exact2
EXIT DO
ELSE
CALL erreur2
er = er + 1
END IF
LOOP

IF er > 1 THEN re = re - 1

CALL cadre(14, 5, 69, 2, blanc)
COLOR , blanc
CALL centre(15, noir, "L'adjectif s'accorde avec le nom, en genre et en nombre.")
COLOR , bleu
CALL centre(18, blancbrill, "Un pull bleu Des jupes bleues")
COLOR blancbrill, noir: LOCATE 18, 36: PRINT " "
LOCATE 18, 56: PRINT "es"
COLOR blanc, bleu
LOCATE 19, 28: PRINT CHR$(192); STRING$(7, 196); CHR$(24); CHR$(24)
LOCATE 19, 48: PRINT CHR$(192); STRING$(7, 196); CHR$(24); CHR$(24)
CALL entree(noir, noir, 1)

END SUB

DEFINT A-Z
SUB accordnom (re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
'18/1/97
DIM p$(4)
er = 0
CALL titre
CALL cadre(8, 6, 11, 4, rouge)
COLOR , rouge
LOCATE 9, 8: PRINT "Accord du"
LOCATE 10, 8: PRINT "nom"
COLOR jaune, bleu: LOCATE 7, 26: PRINT "avec..."
p$(2) = "le déterminant"
p$(3) = "le nom"
p$(1) = "le sujet"
DO
CALL fleches(9, 26, p$(), 3, r, rouge, 1, 23, 26)
IF r = 2 THEN
CALL exact2
EXIT DO
ELSE
CALL erreur2
er = er + 1
END IF
LOOP
COLOR jaune, bleu: LOCATE 7, 50: PRINT "comment..."
p$(2) = "en nombre"
p$(1) = "en genre et en nombre"
p$(3) = "personne, temps, groupe"
DO
CALL fleches(9, 50, p$(), 3, r, rouge, 1, 23, 50)
IF r = 2 THEN
CALL exact2
EXIT DO
ELSE
CALL erreur2
er = er + 1
END IF
LOOP

IF er > 1 THEN re = re - 1

CALL cadre(14, 6, 68, 2, blanc)
COLOR , blanc
CALL centre(15, noir, "Le nom s'accorde avec le déterminant, en nombre.")
COLOR , bleu
CALL centre(18, blancbrill, "Un élève -> des élèves")
COLOR blancbrill, noir: LOCATE 18, 37: PRINT " "
LOCATE 18, 51: PRINT "s"
COLOR blanc, bleu
LOCATE 19, 30: PRINT CHR$(192); STRING$(6, 196); CHR$(24)
LOCATE 19, 43: PRINT CHR$(192); STRING$(7, 196); CHR$(24)

CALL entree(noir, noir, 1)

END SUB

DEFINT A-Z
SUB accordpartpasse (re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
'18/1/97
DIM p$(4)
er = 0
CALL titre
CALL cadre(6, 3, 16, 5, rouge)
COLOR , rouge
LOCATE 7, 4: PRINT "Accord du"
LOCATE , 4: PRINT "participe passé"
LOCATE , 4: PRINT "avec l'auxi-"
LOCATE , 4: PRINT "liaire être"
COLOR jaune, bleu: LOCATE 5, 28: PRINT "avec..."
p$(1) = "le déterminant"
p$(3) = "le nom"
p$(2) = "le sujet"
p$(4) = "le C.O.D."
DO
CALL fleches(7, 28, p$(), 4, r, rouge, 1, 23, 27)
IF r = 2 THEN
CALL exact2
EXIT DO
ELSE
CALL erreur2
er = er + 1
END IF
LOOP
COLOR jaune, bleu: LOCATE 5, 52: PRINT "comment..."
p$(3) = "en nombre"
p$(2) = "en genre et en nombre"
p$(1) = "personne, temps, groupe"
DO
CALL fleches(7, 52, p$(), 3, r, rouge, 1, 23, 51)
IF r = 2 THEN
CALL exact2
EXIT DO
ELSE
CALL erreur2
er = er + 1
END IF
LOOP

IF er > 1 THEN re = re - 1

CALL cadre(13, 3, 73, 3, blanc)
COLOR , blanc
CALL centre(14, noir, "Le participe passé employé avec l'auxiliaire être")
CALL centre(15, noir, "s'accorde avec le sujet, en genre et en nombre.")
COLOR blancbrill, bleu
LOCATE 18, 28: PRINT "Les vitrines "; : COLOR vertclair: PRINT "sont"; : COLOR blancbrill: PRINT " décorées."
COLOR blancbrill, noir
LOCATE 18, 52: PRINT "es"
COLOR blanc, bleu
LOCATE 19, 28: PRINT STRING$(12, 196): LOCATE 19, 52: PRINT CHR$(24); CHR$(24)
CALL entree(noir, noir, 1)

END SUB

DEFINT A-Z
SUB accordpartpasse2 (re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
'18/1/97
CALL titre
CALL cadre(6, 3, 73, 3, blanc)
COLOR , blanc
CALL centre(7, noir, "Le participe passé employé avec l'auxiliaire avoir")
CALL centre(8, noir, "ne s'accorde pas avec le sujet.")
COLOR blancbrill, bleu
LOCATE 11, 29: PRINT "Les joueurs "; : COLOR vertclair: PRINT "ont"; : COLOR blancbrill: PRINT " perdu"
COLOR blancbrill, noir
LOCATE 11, 50: PRINT " "
COLOR blanc, bleu
LOCATE 12, 50: PRINT CHR$(24); CHR$(24)

CALL cadre(13, 3, 73, 3, blanc)
COLOR , blanc
CALL centre(14, noir, "Le participe passé employé avec l'auxiliaire être")
CALL centre(15, noir, "s'accorde avec le sujet, en genre et en nombre.")
COLOR blancbrill, bleu
LOCATE 18, 28: PRINT "Les vitrines "; : COLOR vertclair: PRINT "sont"; : COLOR blancbrill: PRINT " décorées"
COLOR blancbrill, noir
LOCATE 18, 52: PRINT "es"
COLOR blanc, bleu
LOCATE 19, 28: PRINT STRING$(12, 196): LOCATE 19, 52: PRINT CHR$(24); CHR$(24)
CALL entree(noir, noir, 1)

END SUB

DEFINT A-Z
SUB accordpartpasse3 (re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
'18/1/97
CALL titre
CALL cadre(6, 3, 73, 3, blanc)
COLOR , blanc
CALL centre(7, noir, "Le participe passé employé avec l'auxiliaire avoir")
CALL centre(8, noir, "ne s'accorde pas avec le sujet.")
COLOR blancbrill, bleu
LOCATE 11, 23: PRINT "Les élèves "; : COLOR vertclair: PRINT "ont"; : COLOR blancbrill: PRINT " écrit leurs poésies."
COLOR blancbrill, noir
LOCATE 11, 43: PRINT " "
COLOR blanc, bleu
LOCATE 12, 43: PRINT CHR$(24); CHR$(24)

CALL cadre(13, 3, 73, 3, blanc)
COLOR , blanc
CALL centre(14, noir, "Le participe passé employé avec l'auxiliaire avoir")
CALL centre(15, noir, " s'accorde avec le C.O.D. si celui-ci est placé avant.")
COLOR blancbrill, bleu
LOCATE 18, 31: PRINT "Ils "; : COLOR jaune: PRINT "les "; : COLOR vertclair: PRINT "ont"; : COLOR blancbrill: PRINT " appris"
COLOR blancbrill, noir
LOCATE 18, 49: PRINT "es"
COLOR blanc, bleu
LOCATE 19, 36: PRINT CHR$(192); STRING$(12, 196); CHR$(24); CHR$(24)

CALL entree(noir, noir, 1)

END SUB

DEFINT A-Z
SUB accordverbe (re, gg$, titr$, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
'18/1/97
DIM p$(4)
er = 0
CALL titre
CALL cadre(8, 5, 12, 4, rouge)
COLOR , rouge
LOCATE 9, 7: PRINT "Accord du"
LOCATE 10, 7: PRINT "verbe"
COLOR jaune, bleu: LOCATE 7, 27: PRINT "avec..."
p$(1) = "le déterminant"
p$(3) = "le nom"
p$(2) = "le sujet"
DO
CALL fleches(9, 27, p$(), 3, r, rouge, 1, 23, 27)
IF r = 2 THEN
CALL exact2
EXIT DO
ELSE
CALL erreur2
er = er + 1
END IF
LOOP
COLOR jaune, bleu: LOCATE 7, 51: PRINT "comment..."
p$(1) = "en nombre"
p$(2) = "en genre et en nombre"
p$(3) = "personne, temps, groupe"
DO
CALL fleches(9, 51, p$(), 3, r, rouge, 1, 23, 51)
IF r = 3 THEN
CALL exact2
EXIT DO
ELSE
CALL erreur2
er = er + 1
END IF
LOOP

IF er > 1 THEN re = re - 1

CALL cadre(14, 5, 71, 2, blanc)
COLOR , blanc
CALL centre(15, noir, "Le verbe s'accorde avec le sujet (personne, temps, groupe).")
COLOR , bleu
CALL centre(18, blancbrill, "Maintenant, l'enfant joue. -> Demain, les enfants joueront.")
COLOR blancbrill, noir: LOCATE 18, 34: PRINT "e"
LOCATE 18, 65: PRINT "eront"
COLOR blanc, bleu
LOCATE 19, 22: PRINT STRING$(8, 196)
LOCATE 19, 50: PRINT STRING$(11, 196)
CALL entree(noir, noir, 1)

END SUB

DEFINT A-Z
SUB trouvephrase (re, ni, rt$, gg$, gg2$, pre$, titr$, prog, noir, bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
'19/5/96
DIM m$(20), m2$(20), m(20), mot$(20), ph$(30), z(5), p$(2)
re = 0

'espace à la fin
'niveau 1
ph$(1) = "Florian et son ami font une balade dans la forêt. "
ph$(2) = "Vous avez deviné la bonne réponse à cette question. "
ph$(3) = "Le mécanicien modifiera le réglage du moteur. "
ph$(4) = "Tous les matins, vous devez vous brosser les dents. "
ph$(5) = "Cet après-midi, la météo a prévu une nette amélioration. "
ph$(6) = "Mélanie et sa soeur aiment les romans d'aventures. "
ph$(7) = "Les grandes villes souffrent de la pollution des véhicules. "
ph$(8) = "Cet été, nous irons visiter le nord de l'Italie. "
ph$(9) = "Le village était caché par un épais rideau d'arbres. "
ph$(10) = "L'année dernière, l'alpiniste a vaincu ce redoutable sommet. "

'niveau 2
ph$(11) = "Au printemps, les pluies torrentielles ont dévasté les cultures. "
ph$(12) = "Ces grandes peintures ont été réalisées par cet artiste talentueux. "
ph$(13) = "Pour battre un record, l'athlète doit s'entraîner durant plusieurs années. "
ph$(14) = "Malgré le froid vif, ils partent faire une randonnée en montagne. "
ph$(15) = "Pendant les grandes vacances, ils ont l'intention de visiter Venise. "
ph$(16) = "Son chapeau vert cachait la plus grande partie de son visage. "
ph$(17) = "Les hirondelles qui nichaient sous le toit étaient très bruyantes. "
ph$(18) = "La promenade que nous avons faite était vraiment agréable. "
ph$(19) = "Ce week-end, nous partirons faire une balade en mer. "
ph$(20) = "Dans sa chute brutale, ses lunettes se sont brisées. "

'niveau 3
ph$(21) = "Le matin, il a l'habitude de boire un lait chocolaté avec des tartines. "
ph$(22) = "Pour son anniversaire, Vincent a l'intention d'inviter tous ses amis. "
ph$(23) = "Le navigateur solitaire rentre au port après trois mois passés en mer. "
ph$(24) = "L'observation de la nature nous réserve toujours de grandes joies. "
ph$(25) = "Tous les élèves étaient enchantés de leur stage à l'étranger. "
ph$(26) = "Ce soir, il y a une émission vraiment intéressante à voir. "
ph$(27) = "Cet ordinateur peut effectuer des millions d'opérations par seconde. "
ph$(28) = "Il introduit un CD-Rom dans l'ordinateur afin de trouver une information. "
ph$(29) = "Les accumulateurs sont vides. Il va falloir les recharger. "
ph$(30) = "La voiture accidentée sera réparée par le garagiste. "

'présentation
w$ = "Tu vas remettre dans l'ordre"
z$ = "les mots d'une phrase."
CALL consigne(2, w$, z$, y$)
z$ = "": w$ = ""
CALL niveau(ni, 3)

SELECT CASE ni
CASE 1
FOR i = 11 TO 30: ph$(i) = "": NEXT

CASE 2
FOR i = 1 TO 10: ph$(i) = "": NEXT
FOR i = 21 TO 30: ph$(i) = "": NEXT

CASE 3
FOR i = 1 TO 20: ph$(i) = "": NEXT
END SELECT

COLOR , noir: CLS

FOR ii = 1 TO 5 '+++++++++++++++++++++++++
flagerr = 0

'tirage suivant niveau
DO
f = 0
SELECT CASE ni
CASE 1
z(ii) = INT(RND * 10) + 1
CASE 2
z(ii) = INT(RND * 10) + 11
CASE 3
z(ii) = INT(RND * 10) + 21
END SELECT

FOR j = 1 TO ii - 1
IF z(ii) = z(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
n = z(ii)
ph$ = ph$(n)

'affecte
i = 0: l = 1
DO
z = INSTR(l, ph$, " "): IF z = 0 THEN EXIT DO
i = i + 1
m$(i) = MID$(ph$, l, z - l)
l = z + 1
LOOP

nm = i

debuttp:
jj = 0
nm2 = nm
ph3$ = ""

'mélange
FOR i = 1 TO nm
DO
f = 0
m(i) = INT(RND * nm) + 1
FOR j = 1 TO i - 1
IF m(i) = m(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
m2$(i) = m$(m(i))
NEXT

CALL titre
DO
COLOR , bleu
VIEW PRINT 4 TO 19: CLS 2: VIEW PRINT
CALL niv(5, ii)
CALL cadre(16, 2, 75, 2, blanc)
COLOR , blanc
CALL centre(17, noir, ph3$)

DO
CALL fleches3(r, rr, m2$(), nm2, jj, gg$, gg2$)
IF r = 0 THEN CALL quitter(noir, bleu)
LOOP WHILE r = 0

IF rr = 83 OR rr = 8 THEN
IF nm2 = nm THEN
BEEP
ELSE
nm2 = nm2 + 1
m2$(nm2) = mot$(jj)
ph3$ = MID$(ph3$, 1, LEN(ph3$) - (LEN(mot$(jj)) + 1))
jj = jj - 1
END IF

ELSE
jj = jj + 1
mot$(jj) = m2$(r)
ph3$ = ph3$ + " " + mot$(jj)
IF r <> nm2 THEN
FOR i = r TO nm2 - 1
m2$(i) = m2$(i + 1)
NEXT
END IF
nm2 = nm2 - 1
END IF
LOOP WHILE nm2 <> 0

ph3$ = LTRIM$(ph3$) + " "
CALL titre
CALL cadre(10, 2, 75, 4, blanc)
COLOR , blanc
CALL centre(12, noir, ph3$)

CALL cadre(5, 30, 20, 2, marron)
COLOR , marron
CALL centre(6, blancbrill, "Est-ce correct ?")

p$(1) = "oui"
p$(2) = "non"
COLOR , noir
CALL centre(23, blanc, gg$)
CALL fleches(17, 39, p$(), 2, zz, rouge, 1, 23, 35)

SELECT CASE zz
CASE 1
flag = 1
CASE 2
flag = 0
END SELECT

IF flag = 0 THEN GOTO debuttp

LOCATE 23, 1: PRINT SPACE$(80)

IF ph$ = ph3$ THEN
CALL exact2
IF flagerr = 0 THEN
re = re + 2
ELSEIF flagerr = 1 THEN
re = re + 1
END IF
ELSE
CALL erreur2
flagerr = flagerr + 1
IF flagerr > 1 THEN
CALL titre
CALL cadre(10, 2, 75, 4, blanc)
COLOR , blanc
CALL centre(12, rouge, ph$)
COLOR , noir
CALL centre(23, rougeclair, "Solution")
CALL getinvimouse(zz)
ELSEIF LEFT$(ph$, 1) <> LEFT$(ph3$, 1) AND RIGHT$(ph3$, 2) <> ". " THEN
CALL centre(23, rougeclair, "Une phrase commence par une majuscule et finit par un point.")
CALL getinvimouse(zz)
GOTO debuttp
ELSEIF LEFT$(ph$, 1) <> LEFT$(ph3$, 1) THEN
CALL centre(23, rougeclair, "Une phrase commence par une majuscule.")
CALL getinvimouse(zz)
GOTO debuttp
ELSEIF RIGHT$(ph3$, 2) <> ". " THEN
CALL centre(23, rougeclair, "Une phrase finit par un point.")
CALL getinvimouse(zz)
GOTO debuttp
ELSE
GOTO debuttp
END IF
END IF

NEXT ii '++++++++++++++++++++++

CALL resultats(re, ni, 3)

END SUB
 

 

 

Précédente Accueil Remonter Suivante