FRANCAIS 1
Visual Basic for MS-DOS
|
DECLARE SUB ortho (re%, ni%, motorth$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB recolle (re%, ni%, rt$, motrecolle$(), gg$, pre$, titr$,
prog%, nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB attendre (tx!)
DECLARE SUB bilan (ma$(), niveaux%(), eleve%, VarEnreg AS ANY, rt$,
noir%, bleu%, rouge%, vertclair%, cyanclair%, rougeclair%, jaune%,
blancbrill%)
DECLARE SUB calmoy (t$(), moy$(), niveaux%())
DECLARE SUB centre (v%, cc%, ph$)
DECLARE SUB efface (v%, hk%)
DECLARE SUB entree (x%, y%)
DECLARE SUB fleches (v%, h%, w$(), np%, r%, coul%, drap%, v2%, h3%)
DECLARE SUB flechesmenu (w$(), r%, coul%)
DECLARE SUB lettres (fond%)
DECLARE SUB ligne23 (x%, y%)
DECLARE SUB quitter (fond%)
DECLARE SUB titre ()
DECLARE SUB cadre (v%, h%, l%, nli%, c%)
DECLARE SUB tableauexo (p$())
DECLARE SUB getinvimouse (rr%)
DECLARE SUB ouinon (r$)
DECLARE SUB alphabet (re%, ni%, rt$, gg$, pre$, titr$, prog%, nom$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
DECLARE SUB classement (re%, ni%, mo2$(), rt$, gg$, pre$, titr$,
prog%, nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB copietexte (re%, ni%, te$(), ti$(), rt$, gg$, pre$, titr$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
DECLARE SUB devine (re%, ni%, motdevine$(), rt$, gg$, pre$, titr$,
prog%, nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB lecrap (re%, ni%, mo2$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB trouvetemps (re%, ni%, tlt$(), tltv$(), rt$, gg$, pre$,
titr$, prog%, nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%,
vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB ani (re%, ni%, rt$, gg$, pre$, titr$, noir%, bleu%,
vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%, rougeclair%,
jaune%, blancbrill%)
DECLARE SUB intrus (re%, ni%, motintrus$(), rt$, gg$, pre$, titr$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
DECLARE SUB passepresent (re%, ni%, ppf$(), rt$, gg$, pre$, titr$,
prog%, nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB trouvephrase (re%, ni%, rt$, gg$, gg2$, pre$, titr$,
prog%, nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB trouveverbe (re%, ni%, mottv$(), rt$, gg$, pre$, titr$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
DECLARE SUB cherchemot (re%, ni%, rt$, gg$, gg2$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%, couleur%)
DECLARE SUB conjugaison (re%, ni%, pp$(), etre$(), avoir$(),
aller$(), marcher$(), finir$(), rt$, gg$, pre$, titr$, prog%, nom$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
DECLARE SUB espace (re%, ni%, te$(), ti$(), rt$, gg$, pre$, titr$,
prog%, nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB femin (re%, ni%, ma$(), fe$(), rt$, gg$, pre$, titr$,
prog%, nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB infinitif (re%, ni%, inf$(), conj$(), rt$, gg$, pre$,
titr$, prog%, nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%,
vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB nature (re%, ni%, m$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB noms (re%, ni%, a$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
DECLARE SUB pluriel (re%, ni%, n$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
'EXERCICES AAS FRANCAIS cycle 2
'Clerc Daniel
'4/12/2007
'version 1.4.5 (avec textes manuels cp-ce1)
DEFINT A-Z
'variables globales
COMMON SHARED ni, couleur, rt$, gg$, gg2$, pre$, titr$, prog, eleve,
nom$, 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$
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 niveaux(ma)
DIM moy$(30)
DIM t$(100), p$(ma), mo2$(102)
DIM motorth$(40) 'pour orth
DIM motrecolle$(20)
DIM motdevine$(16) 'pour devine
DIM motintrus$(200) 'pour intrus
DIM mottv$(250) 'pour trouve le verbe
DIM ppf$(20) 'pour présent passé futur
DIM mo3$(50), mo6$(50), mo7$(50), mo8$(33), mo9$(33), inf$(30), conj$(30)
DIM tlt$(10), tltv$(50)'trouve le temps
DIM pp$(6), etre$(6, 4), avoir$(6, 4), aller$(6, 4), marcher$(6, 4),
finir$(6, 4)'conjugaison
DIM te$(7), ti$(7) 'copie texte et espace
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
couleur = 1
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, rt$, noir, bleu, rouge,
vertclair, cyanclair, rougeclair, jaune, blancbrill)
END IF
menuprincipal:
' Vérifie que le gestionnaire de souris est installé.
MouseInit
MouseShow
COLOR , bleu, noir: CLS
CALL cadre(2, 20, 40, 2, vert)
COLOR , vert
CALL centre(3, blancbrill, "ACTIVITES de FRANCAIS - Cycle 2")
COLOR , bleu
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 niv 1 est en 1°
nbexo$ = LTRIM$(STR$(VAL(MID$(VarEnreg.nbexo, 1, 3))))
resultat$ = MID$(VarEnreg.notes, 1, 400)
CLOSE
j = 1
FOR i = 1 TO 200 STEP 2 '===
t$(j) = MID$(resultat$, i, 2)
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$())
'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
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)
COLOR , bleu
IF prog = 0 THEN
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, rt$, noir, bleu, rouge,
vertclair, cyanclair, rougeclair, jaune, blancbrill)
GOTO menuprincipal
END IF
COLOR , noir: CLS
titr$ = p$(prog): ni = 1
COLOR , noir
'valeur de la matière
mat = 0
FOR i = 1 TO prog - 1
mat = mat + niveaux(i)
NEXT
SELECT CASE prog
CASE 1
CALL alphabet(re%, ni%, rt$, gg$, pre$, titr$, prog%, nom$, noir%,
bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
CASE 2
CALL ortho(re, ni, motorth$(), rt$, gg$, pre$, titr$, prog%, nom$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
CASE 3
CALL recolle(re, ni, rt$, motrecolle$(), gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
CASE 4
CALL devine(re, ni, motdevine$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
CASE 5
CALL classement(re%, ni%, mo2$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
CASE 6
CALL lecrap(re, ni, mo2$(), rt$, gg$, pre$, titr$, prog%, nom$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
CASE 7
CALL cherchemot(re%, ni%, rt$, gg$, gg2$, pre$, titr$, prog%, nom$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%, couleur%)
CASE 8
CALL intrus(re, ni, motintrus$(), rt$, gg$, pre$, titr$, noir, bleu,
vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune,
blancbrill)
CASE 9
CALL copietexte(re, ni, te$(), ti$(), rt$, gg$, pre$, titr$, noir,
bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair,
jaune, blancbrill)
CASE 10
CALL espace(re%, ni%, te$(), ti$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
CASE 11
CALL trouvephrase(re%, ni%, rt$, gg$, gg2$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
CASE 12
CALL ani(re, ni, rt$, gg$, pre$, titr$, noir, bleu, vert, rouge,
marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
CASE 13
CALL nature(re%, ni%, mo3$(), rt$, gg$, pre$, titr$, prog%, nom$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
CASE 14
CALL noms(re%, ni%, mo6$(), rt$, gg$, pre$, titr$, prog%, nom$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
CASE 15
CALL femin(re%, ni%, mo8$(), mo9$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
CASE 16
CALL pluriel(re%, ni%, mo7$(), rt$, gg$, pre$, titr$, prog%, nom$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
CASE 17
CALL trouveverbe(re, ni, mottv$(), rt$, gg$, pre$, titr$, noir,
bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair,
jaune, blancbrill)
CASE 18
CALL infinitif(re%, ni%, inf$(), conj$(), rt$, gg$, pre$, titr$,
prog%, nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
CASE 19
CALL passepresent(re%, ni%, ppf$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
CASE 20
CALL trouvetemps(re, ni, tlt$(), tltv$(), rt$, gg$, pre$, titr$,
prog%, nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
CASE 21
CALL conjugaison(re%, ni%, pp$(), etre$(), avoir$(), aller$(),
marcher$(), finir$(), rt$, gg$, pre$, titr$, prog%, nom$, noir%,
bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
END SELECT
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &H9F)'non numérique
POKE &H417, (PEEK(&H417) AND &HBF) 'minus
DEF SEG
GOSUB enregistre
CALL ligne23(noir, noir)
CALL entree(noir, noir)
GOTO menuprincipal
END
fin:
COLOR , noir
IF eleve > 0 THEN
CALL bilan(p$(), niveaux(), eleve, VarEnreg, rt$, noir, bleu, rouge,
vertclair, cyanclair, rougeclair, jaune, blancbrill)
END IF
CLS
RUN "menuexo"
END
enregistre:
COLOR , noir: IF eleve = 0 THEN RETURN
CALL centre(23, blanc, "Enregistrement de la note")
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$, 1, 3)) + 1))
IF LEN(nombre$) = 1 THEN
nombre$ = "00" + nombre$
ELSEIF LEN(nombre$) = 2 THEN
nombre$ = "0" + nombre$
END IF
'=== franc ce est en 1° -> 1
IF VAL(nombre$) < 1000 THEN
VarEnreg.nbexo = nombre$ + MID$(nbexo$, 4)
END IF
notes$ = MID$(VarEnreg.notes, 1, 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
VarEnreg.notes = notes$ + MID$(VarEnreg.notes, 401)
PUT #1, eleve, VarEnreg
CLOSE #1
CALL attendre(.5)
CALL centre(23, blancbrill, SPACE$(80))
RETURN
init:
DATA Alphabet,1
DATA Orthographe,4
DATA Recolle le mot,3
DATA Devine le mot,3
DATA Trie les mots,2
DATA Mémorise les mots,3
DATA Cherche le mot,4
DATA Trouve l'intrus,2
DATA Copie un texte,4
DATA Sépare les mots,4
DATA Fabrique la phrase,2
DATA Phrase transformée,2
DATA Classe des mots,2
DATA Groupe des noms,2
DATA Féminin des noms,3
DATA Pluriel des noms,2
DATA Trouve le verbe,2
DATA Infinitif,2
DATA Passé Présent Futur,2
DATA Trouve le temps,2
DATA Conjugaison,4
FOR i = 1 TO ma: READ p$(i), niveaux(i): NEXT
nbniveaux = 0
FOR i = 1 TO ma
nbniveaux = nbniveaux + niveaux(i)
NEXT
'data exo1 21/05/94
'lecture rapide et classement
DATA lapin,poule,vache,cheval,cochon,mouton
DATA cour,cantine,classe,gymnase,couloir,préau
DATA crayon,stylo,gomme,ardoise,trousse,compas
DATA cahier,livre,carnet,feuille,dictionnaire,revue
DATA bonnet,manteau,gant,chemise,pantalon,chaussure
DATA cuisine,cave,grenier,salon,chambre,toilettes
DATA jouer,travailler,dormir,classer,manger,corriger
DATA petit,grand,mince,gros,jeune,vieux
DATA jaune,rouge,vert,orange,bleu,marron
DATA table,tableau,chaise,bureau,armoire,porte
DATA orage,nuage,vent,pluie,soleil,neige
DATA clou,tournevis,marteau,vis,pince,scie
DATA tigre,lion,gazelle,girafe,puma,zèbre
DATA roue,selle,pneu,rayon,guidon,frein
DATA wagon,train,rail,quai,locomotive,gare
DATA plaine,campagne,montagne,mer,vallée,plage
DATA voiture,camion,bicyclette,avion,bateau,moto
FOR i = 1 TO 102: READ mo2$(i): NEXT
'pour ortho
DATA lundi,mardi,mercredi,jeudi,vendredi,samedi,dimanche
DATA janvier,février,mars,avril,mai,juin,juillet,août,septembre,octobre,novembre,décembre
DATA tableau,cahier,stylo,feutre,bureau,table,chaise,classeur,livre,feuille
DATA chat,chien,oiseau,coq,lapin,lion,tigre,canard,tortue,cerf
'DATA boulanger,épicier,électricien,plombier,professeur,charcutier,coiffeur,déménageur,pompier,menuisier
'DATA
télévision,camescope,ordinateur,téléphone,voiture,magnétoscope,bicyclette,radio,scooter,revue
'DATA football,basket,tennis,rugby,lutte,judo,course,cyclisme,natation,volley
'DATA serpent,scorpion,tortue,araignée,canard,oie,dauphin,zèbre,cerf,hirondelle
FOR i = 1 TO 39
READ motorth$(i)
NEXT i
'pour recolle
DATA lundi,mardi,mercredi,jeudi,vendredi,samedi,dimanche
DATA janvier,février,mars,avril,mai,juin,juillet,août,septembre,octobre,novembre,décembre
FOR i = 1 TO 19
READ motrecolle$(i)
NEXT i
'pour devine
DATA lundi,mardi,mercredi,jeudi,vendredi,samedi,dimanche
DATA janvier,mars,avril,mai,juin,juillet,septembre,octobre,novembre
FOR i = 1 TO 16
READ motdevine$(i)
NEXT i
'data intrus CE1
DATA une chaise,un fauteuil,un banc,une table*,un tabouret,La table
ne sert pas à s'asseoir.,"="
DATA un livre,une revue,un dictionnaire,un journal,une
télévision*,une brochure,un mode d'emploi,On ne lit pas la
télévision.,"="
DATA un frère,une nourrice*,une soeur,un père,une mère,un cousin,une
grand-mère,un oncle,une tante,La nourrice ne fait pas partie de la
famille.,"="
DATA le lait,le café,le verre*,le thé,le vin,la bière,l'eau,Le verre
n'est pas une boisson.,"="
DATA la tête,le bras,le pied,le cou,la cuisse,la main,la montre*,La
montre ne fait pas partie de ton corps.,"="
DATA un marteau,une hache,une scie,une pelle,un clou*,un
tournevis,Le clou n'est pas un outil.,"="
DATA une voiture,un camion,une bicyclette,une moto,un train,un
bateau*,Un bateau ne roule pas.,"="
DATA un lapin,un mouton,une vache,un bouton*,une poule,un canard,Un
bouton n'est pas un animal.,"="
DATA un lit, une table,une étagère,un fauteuil,une chaise,une
armoire,un garage*,Un garage n'est pas un meuble.,"="
DATA le boulanger,le médecin,le disque*,le chanteur,un
instituteur,un peintre,Un disque n'est pas un métier.,"="
DATA le sapin,le chêne,la table*,le cerisier,le pin,l'abricotier,La
table n'est pas un arbre.,"="
DATA un pigeon,un merle,une pie,une aile*,un aigle,un perroquet,un
corbeau,Une aile n'est pas un oiseau.,"="
DATA une école,une chemise*,un hôpital,une église,une gare,un
musée,un cinéma,Une chemise n'est pas un bâtiment.,"="
DATA un piano,une guitare,une trompette,une flûte,un tambour,un
parachute*,un accordéon,Un parachute n'est pas un instrument de
musique.,"="
DATA février,juillet,mai,printemps*,avril,janvier,mars,septembre,novembre,Le
printemps n'est pas un mois.,"="
DATA un marteau,une cuillère*,une pince,des tenailles,un
tournevis,une scie,une pioche,une pelle,Une cuillère n'est pas un
outil.,"="
DATA un lion,une souris,un homme,un cheval,un chat,une fourmi*,un
chien,Une fourmi n'est pas un mammifère. C'est un insecte.,"="
DATA rouge,vert,noir,marron,bleu,ciel*,violet,jaune,orange,blanc,Le
ciel n'est pas une couleur.,"="
DATA un bonnet*,une chaussure,un soulier,une chaussette,une
botte,une sandalette,Un bonnet ne se met pas aux pieds.,"="
DATA une lionne,un tigre,un puma,un éléphant,une girafe,un chien*,un
chacal,Un chien n'est pas un animal sauvage.,"="
DATA ""
i = 0
DO
i = i + 1
READ motintrus$(i)
LOOP WHILE motintrus$(i) <> ""
'data trouve le verbe CE1
DATA
armoire,tableau,métier,rouge,nuage,tigre,casser*,clavier,mur,verre,Il
casse une vitre avec son ballon.,"="
DATA livre,lire*,souris,écran,léger,pommade,ordinateur,flûte,Nous
lisons un livre de bibliothèque.,"="
DATA camion,lapin,petit,rapide,garçon,trouver*,soeur,Je trouve la
solution rapidement.,"="
DATA lait,café,verre,thé,vin,boire*,bière,eau,Il boit car il a très
soif.,"="
DATA tête,pomme,salade,vendre*,lampe,ampoule,disque,chaussure,Vous
vendez des champignons sur le marché.,"="
DATA sapin,toit,ongle,galette,croquer*,pont,blanche,chambre,Tu
croques une pomme.,"="
DATA sortir*,rideau,livre,chanson,erreur,exact,gilet,panier,Il sort
de son immeuble.,"="
DATA pommier,grand,flèche,parc,jaune,stylo,gagner*,pied,photo,Les
enfants gagnent un lot à la tombola.,"="
DATA
billet,voiture,bleu,prendre*,addition,large,calcul,télévision,Il
prend une gomme.,"="
DATA
boulanger,gros,médecin,élève,panier,chanter*,instituteur,peintre,Vous
chantez dans la classe.,"="
DATA sapin,large,chêne,couper*,gorille,cerisier,vite,pin,abricot,Il
coupe une feuille.,"="
DATA
pigeon,aile,merle,rouge,pie,voler*,aigle,manche,perroquet,corbeau,Les
oiseaux volent dans le ciel.,"="
DATA école,croire*,hôpital,guitare,fort,gare,gant,cinéma,Il ne croit
pas à cette histoire.,"="
DATA
piano,glace,théâtre,trompette,chien,pluie,poli,tambour,sortir*,Ils
sortent de l'école à 4 h 30.,"="
DATA
printemps,lettre,dormir*,dent,main,crayon,cartable,jaune,lourd,Tu
dors la nuit.,"="
DATA marteau,rouler*,tenaille,épais,langue,tournevis,savon,chat,La
voiture roule vite.,"="
DATA
lion,film,mauvais,souris,homme,tuyau,cheval,brebis,fuir*,grue,Il
fuit car il a peur.,"="
DATA
rouge,policier,lent,cahier,ciel,vent,bleu,taper*,violet,mouton,orange,Nous
tapons à la porte.,"="
DATA
aller*,épicier,chaussure,girafe,long,pompier,élégant,pièce,salle,Nous
allons dans la cour.,"="
DATA
boulanger,pain,crier*,étoile,route,sel,bruit,cauchemar,trottoir,Vous
criez trop souvent !,"="
DATA ""
i = 0
DO
i = i + 1
READ mottv$(i)
LOOP WHILE mottv$(i) <> ""
'présent2 passé1 futur3
'niveau 1
DATA aujourd'hui2,hier1,demain3,maintenant2
DATA en ce moment2,avant-hier1,plus tard3,tout à l'heure3
DATA après-demain3,il était une fois1
'niveau 2
DATA l'année prochaine3,avant1,tout de suite2,dans quatre jours3
DATA autrefois1,il y a longtemps1,bientôt3
DATA il court2,il est parti1,nous lirons3
FOR i = 1 TO 20
READ ppf$(i)
NEXT
'nature 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 mo3$(i): NEXT
'noms '10/5/94
DATA 3un livre,4une pensée,2un chat,3un téléviseur,4le courage,3un
ordinateur
DATA 3la Lune,3le film,4un rêve,1une fille,1l'instituteur,1un
indien,2un tigre,2une limace
DATA 2l'hirondelle,4le rire,1un garçon,3un mur,2un loup,1un cycliste
DATA 2un poisson,2le thon,4la peur,2un oiseau,2un moustique,4le
bonheur,2un crocodile,2une coccinelle
DATA 3un banc,4un calcul,3le téléphone,4un vol,3une vitre
DATA 1une femme,4la force,1un homme,1la championne,4un cauchemar,1un
anglais,1le boulanger,2une grenouille
DATA 2une abeille,4une maladie,1un footballeur,4le malheur,2la
girafe,3une craie,3le tableau
FOR i = 1 TO 48: READ mo6$(i): NEXT
'pluriel niveau 1 11/5/94
DATA une classe,un élève,une fille,une chaise,une lampe,un tigre,une
fleur
DATA une table,une ardoise,une porte,un film,une salle,un ordinateur
DATA un mur,une douche,un carnet,une télévision,un homme,une vitre
'pluriel niveau 2
DATA un coeur,un bateau,un tableau,un clown,un poteau,un caillou,un
travail,un cheval,un oeil
DATA un nez,un cheveu,un banc,un jeu,un tapis,un repas,une souris
FOR i = 1 TO 35: READ mo7$(i): NEXT
'féminin 4/3/94
'niveau 1
DATA
cousin,chanteur,homme,lion,chien,coq,voisin,danseur,chat,marchand
'niveau 2
DATA
directeur,voleur,garçon,monsieur,cheval,maître,loup,animateur,écolier,boulanger
'niveau 3
DATA
ami,homme,singe,loup,cheval,lion,chien,coq,lapin,taureau,porc,cerf,tigre
FOR i = 1 TO 33: READ mo8$(i): NEXT
'niveau 1
DATA
cousine,chanteuse,femme,lionne,chienne,poule,voisine,danseuse,chatte,marchande
'niveau 2
DATA
directrice,voleuse,fille,dame,jument,maîtresse,louve,animatrice,écolière,boulangère
'niveau 3
DATA
amie,femme,guenon,louve,jument,lionne,chienne,poule,lapine,vache,truie,biche,tigresse
FOR i = 1 TO 33: READ mo9$(i): NEXT
'infinitif 22/5/94
'niveau 1
DATA marcher,lire,regarder,sauter,travailler
DATA parler,courir,écrire,être,avoir,gagner,finir
DATA effacer,avoir,être
'niveau 2
DATA taper,grandir,salir,être,avoir,casser
DATA penser,dormir,voyager,sortir
DATA dessiner,classer,penser,aller,filmer
FOR i = 1 TO 30: READ inf$(i): NEXT
'niveau 1
DATA nous marchons,vous lisez,tu regardes,nous sautons,elle
travaille
DATA je parle,ils courent,vous écrivez,je suis,elle a,tu gagnes,nous
finissons
DATA vous effacez,vous avez,elles sont
'niveau 2
DATA nous taperons,il grandit,vous salissez,elle était,j'avais,ils
casseront
DATA ils pensaient,elle dort,il voyageait,il sortira
DATA vous dessiniez,je classais,nous pensions,elle va,il filmera
FOR i = 1 TO 30: READ conj$(i): NEXT
'trouve le temps - remarque : 8 points
DATA "Il y a très longtemps, les dinosaures ........ sur la Terre."
DATA "Dans quelques jours, les élèves ........ en vacances."
DATA "En ce moment, l'enfant ........ son livre."
DATA "Bientôt, l'avion ........ sur l'aéroport."
DATA "Maintenant, le chat ........ son lait."
DATA "Dans cinq minutes, Florian ........ avec son ballon."
DATA "Hier soir, nous ........ du poisson."
DATA "L'année dernière, elle ........ à Paris."
DATA "La semaine prochaine, Camille ........ au cinéma."
DATA "Demain, il ne ........ pas beau."
FOR i = 1 TO 10: READ tlt$(i): NEXT
DATA vivent,vivront,vivaient,vont vivre,3
DATA partaient,partent,partiront,sont partis,3
DATA lira,va lire,a lu,lit,4
DATA atterrit,atterrira,atterrissait,a atterri,2
DATA boit,buvait,a bu,va boire,1
DATA joue,jouera,a joué,jouait,2
DATA mangerons,allons manger,avons mangé,mangeons,3
DATA habitera,habite,va habiter,habitait,4
DATA va,ira,est allé,allait,2
DATA fait,faisait,a fait,fera,4
FOR i = 1 TO 10 * 5: READ tltv$(i): NEXT
'conjugaison 12/5/94
DATA "je ","tu ","il ","nous ","vous ","ils "
FOR i = 1 TO 6: READ pp$(i): NEXT
'être présent imparfait passé composé futur
DATA suis,es,est,sommes,êtes,sont
DATA étais,étais,était,étions,étiez,étaient
DATA ai été,as été,a été,avons été,avez été,ont été
DATA serai,seras,sera,serons,serez,seront
FOR i = 1 TO 4
FOR j = 1 TO 6
READ etre$(j, i)
NEXT j
NEXT i
'avoir présent imparfait passé composé futur
DATA ai,as,a,avons,avez,ont
DATA avais,avais,avait,avions,aviez,avaient
DATA ai eu,as eu,a eu,avons eu,avez eu,ont eu
DATA aurai,auras,aura,aurons,aurez,auront
FOR i = 1 TO 4
FOR j = 1 TO 6
READ avoir$(j, i)
NEXT j
NEXT i
'aller présent imparfait passé composé futur
DATA vais,vas,va,allons,allez,vont
DATA allais,allais,allait,allions,alliez,allaient
DATA suis allé,es allé,est allé,sommes allés,êtes allés,sont allés
DATA irai,iras,ira,irons,irez,iront
FOR i = 1 TO 4
FOR j = 1 TO 6
READ aller$(j, i)
NEXT j
NEXT i
'marcher présent imparfait passé composé futur
DATA marche,marches,marche,marchons,marchez,marchent
DATA marchais,marchais,marchait,marchions,marchiez,marchaient
DATA ai marché,as marché,a marché,avons marché,avez marché,ont
marché
DATA marcherai,marcheras,marchera,marcherons,marcherez,marcheront
FOR i = 1 TO 4
FOR j = 1 TO 6
READ marcher$(j, i)
NEXT j
NEXT i
'finir présent imparfait passé composé futur
DATA finis,finis,finit,finissons,finissez,finissent
DATA finissais,finissais,finissait,finissions,finissiez,finissaient
DATA ai fini,as fini,a fini,avons fini,avez fini,ont fini
DATA finirai,finiras,finira,finirons,finirez,finiront
FOR i = 1 TO 4
FOR j = 1 TO 6
READ finir$(j, i)
NEXT j
NEXT i
'copie texte et espace 'espace à la fin
te$(1) = "LE MULOT, LE PAPILLON, L'OISEAU, LE LAPIN CHERCHENT PIQUE
LE HERISSON. "
te$(2) = "Lundi, quelle histoire, j'ai trouvé un ours velu dans mon
placard. Il semblait fatigué. "
te$(3) = "Il était une fois un pingouin qui vivait sur une jolie
banquise. Il se nommait Minable. "
te$(4) = "Il était une fois une pauvre veuve qui vivait avec son
fils Jack. La mère dit à son fils d'aller vendre leur vache. "
ti$(1) = "PIQUE LE HERISSON"
ti$(2) = "Zoé"
ti$(3) = "Minable le pingouin"
ti$(4) = "Jack et le haricot magique"
RETURN
erreur:
programme$ = "exo_fr1"
SCREEN 0
COLOR , bleu: CLS
BEEP
CALL cadre(8, 5, 70, 9, rouge)
COLOR , rouge
CALL centre(10, blanc, "ATTENTION")
SELECT CASE ERR
CASE 71
CALL centre(12, blancbrill, "Disque non prêt")
CASE 70
CALL centre(12, blancbrill, "Disquette protégée")
CASE 53, 57, 72
CALL centre(12, blancbrill, "Problème sur le disque")
CASE 61
CALL centre(12, blancbrill, "Disque plein")
CASE 25, 26, 68
CALL centre(12, blancbrill, "Imprimante non prête")
CASE 27
CALL centre(12, blancbrill, "Imprimante sans papier")
CASE ELSE
CALL centre(12, blancbrill, "Erreur système n°" + LTRIM$(STR$(ERR)))
CALL centre(14, blancbrill, "Essayez de relancez le programme.")
CLOSE
w$ = INPUT$(1)
COLOR , noir: CLS
END
END SELECT
CALL centre(14, blancbrill, "Corrigez puis tapez " + rt$ + " [Echap]
= Fin")
CALL getinvimouse(r)
IF r = 27 THEN COLOR , noir: CLS : END
COLOR , bleu: CLS : RUN programme$
RESUME
DEFINT A-Z
SUB 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 afformate (m$(), nm)
LOCATE 9, 1, 0
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 afformate2 (m$(), nm, v, h)
'il faut tester avant si les mots ne sont pas
'plus grand que col ===
co = 80
h3 = h
col = co - (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$(co): 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 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 bilan (ma$(), niveaux(), eleve, VarEnreg AS TypeEnreg, rt$,
noir, bleu, rouge, vertclair, cyanclair, rougeclair, jaune,
blancbrill)
'6/4/95
ma = 21
DIM t$(100), moy$(ma), bi$(21)
FOR i = 1 TO 21: bi$(i) = ma$(i): NEXT
ll$ = STRING$(30, ".")
pt$ = MID$(ll$, 1, 15)
ni$ = "Niveau " + CHR$(26) + " 1 2 3 4"
COLOR , noir: CLS
'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 niv 1 est en 1°
nbexo$ = LTRIM$(MID$(VarEnreg.nbexo, 1, 3))
resultat$ = MID$(VarEnreg.notes, 1, 400)
CLOSE
IF VAL(nbexo$) = 0 THEN EXIT SUB
titr$ = "BILAN"
CALL titre
j = 1
FOR i = 1 TO 200 STEP 2 '===
t$(j) = MID$(resultat$, i, 2)
j = j + 1
NEXT
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 I)"
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 cadre2
v = 7: h = 42: debut = 8: fin = 17: GOSUB cadre2
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
moygen = INT(VAL(moygen$))
'CALL convertir(moygen$)
PRINT "Moyenne générale :"; moygen; "sur 10"
END IF
CALL entree(noir, noir)
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
cadre2:
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 cadre (v, h, l, nli, c)
'c est l'intérieur
'le fond écran est bleu
v2 = v
'cadre
COLOR c, bleu
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 , bleu
LOCATE v2 + 1, h: PRINT CHR$(223)
COLOR , noir
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 blancbrill
END SUB
DEFINT A-Z
SUB cadre2 (v%, h%, l%, nli%, marron, blancbrill)
COLOR marron
LOCATE v, h: PRINT "╔"; STRING$(l, 205); "╗"
FOR i = 1 TO nli - 1: v = v + 1: LOCATE v, h: PRINT "║"; SPACE$(l);
"║": NEXT
LOCATE v + 1, h: PRINT "╚"; STRING$(l, 205); "╝"
COLOR blancbrill
END SUB
DEFINT A-Z
SUB cadre3 (v, h, nb, coul)
'inversion de v et h !
LINE (((h - 1) * 8) - 5, ((v - 1) * 14) - 2)-(((h - 1 + nb) * 8) +
5, (v * 14) + 2), coul, B
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, cc, ph$)
COLOR cc
LOCATE v, INT(41 - LEN(ph$) / 2)
PRINT ph$
COLOR 15
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), marron)
COLOR , marron
IF eleve <> 0 THEN
CALL centre(v + 3, blancbrill, pre$ + ","): w$ = LCASE$(w$)
CALL centre(v + 5, blancbrill, w$)
CALL centre(v + 7, blancbrill, z$)
CALL centre(v + 9, blancbrill, y$)
ELSE
CALL centre(v + 3, blancbrill, w$)
CALL centre(v + 5, blancbrill, z$)
CALL centre(v + 7, blancbrill, y$)
END IF
CALL entree(noir, noir)
w$ = "": z$ = "": y$ = ""
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)
IF prog = 16 THEN '=== fois
z$ = LTRIM$(z$)
IF LEFT$(z$, 1) = "," THEN z$ = "0" + z$
END IF
END SUB
DEFINT A-Z
SUB efface (v, hk)
IF v = 23 THEN COLOR , noir
LOCATE v, 1: FOR i = 1 TO hk: PRINT SPACE$(80): NEXT: LOCATE v, 1
END SUB
DEFINT A-Z
SUB entree (x, y)
COLOR blanc, 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))
COLOR 15, y
END SUB
DEFINT A-Z
SUB epuration (re$, re2$)
' re$ à l'entrée, re2$ à la sortie
'épuration à droite
IF RIGHT$(re$, 3) = "..." THEN
re2$ = MID$(re$, 1, LEN(re$) - 3)
ELSEIF RIGHT$(re$, 2) = ")," OR RIGHT$(re$, 2) = ")." THEN
re2$ = MID$(re$, 1, LEN(re$) - 2)
ELSEIF RIGHT$(re$, 1) = "," OR RIGHT$(re$, 1) = "." OR RIGHT$(re$,
1) = ")" OR RIGHT$(re$, 1) = "'" OR RIGHT$(re$, 1) = CHR$(34) THEN
re2$ = MID$(re$, 1, LEN(re$) - 1)
ELSE
re2$ = re$
END IF
'épuration à gauche de re2$
IF LEFT$(re2$, 1) = "(" OR LEFT$(re2$, 1) = "'" OR LEFT$(re2$, 1) =
CHR$(34) THEN
re2$ = MID$(re2$, 2)
END IF
END SUB
DEFINT A-Z
SUB erreur2 (tx!)
LOCATE , , 0
CALL centre(23, noir, SPACE$(60))
CALL centre(23, rougeclair, "Erreur")
CALL attendre(tx!)
CALL centre(23, blancbrill, SPACE$(6))
END SUB
DEFINT A-Z
SUB exact2 (tx!)
CALL centre(23, noir, SPACE$(60))
CALL centre(23, jaune, "Exact")
CALL attendre(tx!)
CALL centre(23, blancbrill, SPACE$(5))
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
IF h3 > 0 THEN
COLOR blanc, noir
LOCATE v2, h3: PRINT gg$
END IF
'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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(1); " "
COLOR blancbrill, coul
DO
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &H9F)'non numérique
POKE 1050, PEEK(1052)
DEF SEG
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(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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(v - vt); " "
COLOR blancbrill, coul
LOOP WHILE rr <> 13
r = v - vt
COLOR blancbrill
END SUB
DEFINT A-Z
SUB flechesmenu (w$(), r, coul)
nm = 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
LOCATE v, h - 1
PRINT " "; p$(r); " "
COLOR blancbrill, coul
hh = h: vv = v
'fleches
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &H9F)'non numérique
POKE &H417, (PEEK(&H417) AND &HBF) 'minus
POKE 1050, PEEK(1052)
DEF SEG
souris = 0
DO
r$ = INKEY$
' Obtient l'emplacement de la souris et l'état des boutons.
MousePoll v_mouse, h_mouse, lButton, rButton
' LOCATE 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSE
BEEP
END IF
ELSEIF v_mouse = 9 THEN
IF h_mouse >= 6 AND h_mouse <= 24 THEN
GOSUB afficheliste
r = 2
LOCATE v_mouse, 5
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSE
BEEP
END IF
ELSEIF v_mouse = 11 THEN
IF h_mouse >= 6 AND h_mouse <= 24 THEN
GOSUB afficheliste
r = 3
LOCATE v_mouse, 5
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSE
BEEP
END IF
ELSEIF v_mouse = 13 THEN
IF h_mouse >= 6 AND h_mouse <= 24 THEN
GOSUB afficheliste
r = 4
LOCATE v_mouse, 5
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSE
BEEP
END IF
ELSEIF v_mouse = 15 THEN
IF h_mouse >= 6 AND h_mouse <= 24 THEN
GOSUB afficheliste
r = 5
LOCATE v_mouse, 5
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSE
BEEP
END IF
ELSEIF v_mouse = 17 THEN
IF h_mouse >= 6 AND h_mouse <= 24 THEN
GOSUB afficheliste
r = 6
LOCATE v_mouse, 5
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSE
BEEP
END IF
ELSEIF v_mouse = 19 THEN
IF h_mouse >= 6 AND h_mouse <= 24 THEN
GOSUB afficheliste
r = 7
LOCATE v_mouse, 5
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, 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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(r); " "
CALL attendre(.5)
EXIT SUB
ELSE
BEEP
END IF
ELSE
BEEP
END IF
END IF
LOOP WHILE r$ = ""
IF souris = 0 AND LEN(r$) < 2 THEN
rr = ASC(r$)
ELSEIF souris = 0 THEN
rr = ASC(RIGHT$(r$, 1))
END IF
SELECT CASE rr
CASE gauche
h = h - 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 flechestrouvephrase (v, h, w$(), np, r, coul, drap, v2, h3)
'pour trouvephrase
'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
IF h3 > 0 THEN
COLOR blanc, noir
LOCATE v2, h3: PRINT gg$
END IF
'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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(1); " "
COLOR blancbrill, coul
DO
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &H9F)'non numérique
POKE 1050, PEEK(1052)
DEF SEG
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(coul)
END IF
IF rr = 8 THEN
r = 8
EXIT SUB
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
IF couleur = 1 THEN COLOR coul, blanc ELSE COLOR noir, blanc
PRINT " "; p$(v - vt); " "
COLOR blancbrill, coul
LOOP WHILE rr <> 13
r = v - vt
COLOR blancbrill
END SUB
DEFINT A-Z
SUB 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 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%, coul, fond)
DIM re$(nl + 1)
inpdebut:
IF fond = blanc THEN
COLOR noir, blanc
ELSE
COLOR blancbrill
END IF
r$ = ".": xx = 0
DEF SEG = 0
POKE 1050, PEEK(1052)
DEF SEG
ligne = CSRLIN
colonne = POS(0)
LOCATE ligne, colonne, 1
IF (deb% = 65 OR deb% = 32) AND (prog <> 2 AND prog <> 3) THEN PRINT
LEFT$(SPACE$(80), nl) '=== recolle orth
'pour orth
LOCATE ligne, colonne, 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(fond)
xx = 1: EXIT FOR
END IF
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
END IF
GOTO input0
END IF
IF re$(ii) = "*" AND prog = 3 THEN
r$ = "*": LOCATE , , 0: EXIT SUB 'recolle ====
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(fond): xx = 1: EXIT FOR
END IF
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$)
IK = 1
inp2:
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
IK = IK + 1: IF IK <> l THEN GOTO inp2
'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, colonne, 1: GOTO
inpdebut
LOCATE , , 0
END SUB
DEFINT A-Z
SUB lettres (fond)
'31/5/95
DIM c(80), x$(80)
F = 0
'on mémorise la zone quitter
LOCATE 23, 1, 0
COLOR rougeclair, noir
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)
DEF SEG = 0: POKE 1050, PEEK(1052): DEF SEG
BEEP
CALL centre(23, rougeclair, "Des lettres !")
CALL attendre(1)
'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, fond
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 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 (ni, np)
DIM p$(4)
p$(1) = "1": p$(2) = "2": p$(3) = "3": p$(4) = "4"
CALL titre
CALL cadre(7, 25, 30, 2, vert)
COLOR , vert
CALL centre(8, blancbrill, "Niveau de difficulté")
CALL fleches(13, 40, p$(), np, ni, rouge, 1, 23, 35)
END SUB
DEFINT A-Z
SUB ouinon (r$)
h = POS(0)
v = CSRLIN
LOCATE v, h
COLOR blanc: PRINT "["; : COLOR jaune: PRINT "O"; : COLOR blanc:
PRINT "]ui ou ["; : COLOR jaune: PRINT "N"; : COLOR blanc: 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 place (v, h, p$, c)
COLOR c
LOCATE v, h: PRINT p$
END SUB
DEFINT A-Z
SUB pleinecran (r$, m$, co, v1, v2)
'pour sub espace
'20/11/96
m$ = RTRIM$(m$)
'_saisie plein ecran_
COLOR , noir
CALL centre(22, vertclair, "Avec les flèches, déplace le curseur là
où tu veux insérer un espace.")
CALL centre(23, blanc, CHR$(24) + " " + CHR$(25) + " " + CHR$(27) +
" " + CHR$(26) + " Espace Ret.Arr Suppr " + rt$ + " = valider")
COLOR noir, blanc
VIEW PRINT v1 - 1 TO v2
v = v1: h = 1
pl0:
CLS 2
pl1:
LOCATE v1, 1, 0: PRINT m$
pl2:
IF h < 1 THEN h = 1: BEEP
IF v < v1 THEN v = v1: BEEP
IF h > co THEN h = 1: v = v + 1
lc = h + (co * (v - v1))
IF lc > LEN(m$) THEN 'fin texte
lc = LEN(m$) + 1
v = INT(LEN(m$) / co)
h = (LEN(m$) - (co * v)) + 1
v = v + v1
END IF
IF v = v2 AND h > co - 2 THEN h = co - 2
LOCATE v, h, 1, 7 'curseur
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 >= 54 AND h_mouse <= 66 THEN
r$ = CHR$(13)
CALL attendre(.3)
ELSEIF h_mouse >= 25 AND h_mouse <= 30 THEN
'espace
r$ = CHR$(32)
CALL attendre(.2)
ELSEIF h_mouse >= 35 AND h_mouse <= 41 THEN
'del
r$ = CHR$(8)
CALL attendre(.2)
souris = 0
ELSEIF h_mouse = 14 THEN
'haut
r2 = 72
CALL attendre(.2)
souris = 2
EXIT DO
ELSEIF h_mouse = 16 THEN
'bas
r2 = 80
CALL attendre(.2)
souris = 2
EXIT DO
ELSEIF h_mouse = 18 THEN
'gauche
r2 = 75
CALL attendre(.2)
souris = 2
EXIT DO
ELSEIF h_mouse = 20 THEN
'droite
r2 = 77
CALL attendre(.2)
souris = 2
EXIT DO
ELSEIF h_mouse >= 45 AND h_mouse <= 49 THEN
'suppr
r2 = 83
CALL attendre(.2)
souris = 2
EXIT DO
ELSE
BEEP
END IF
ELSE
BEEP
END IF
END IF
LOOP WHILE r$ = ""
IF souris = 1 THEN GOTO pl2
IF r$ = CHR$(27) OR r$ = CHR$(13) THEN VIEW PRINT: LOCATE , , 0:
EXIT SUB
IF LEN(r$) = 2 OR souris = 2 THEN GOTO pl3
r2 = ASC(r$)
max = 356
IF r2 = 32 THEN
IF LEN(m$) > max THEN
BEEP
ELSE
m$ = MID$(m$, 1, lc - 1) + r$ + MID$(m$, lc)
h = h + 1
END IF
GOTO pl1
END IF
IF r2 = 8 THEN 'delete doit concerner seulement les espaces
IF h = 1 AND v = v1 THEN GOTO pl0
esp$ = MID$(m$, lc - 1, 1)
IF esp$ <> CHR$(32) THEN
BEEP
ELSE
m$ = MID$(m$, 1, lc - 2) + MID$(m$, lc): h = h - 1
IF h < 1 AND v > v1 THEN h = co: v = v - 1
END IF
GOTO pl0
END IF
pl3:
'carac étendu
IF souris = 0 THEN r2 = ASC(RIGHT$(r$, 1))
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 pl2 'home
IF r2 = 79 THEN h = co: GOTO pl2 'end
IF r2 = 73 THEN v = v1: h = 1: GOTO pl2'pgup
IF r2 = 81 THEN v = v2: h = co: GOTO pl2'pgdown
IF r2 = 75 THEN h = h - 1: IF h < 1 AND v > v1 THEN h = co: v = v -
1: GOTO pl2 'gauche
IF r2 = 83 THEN 'suppr doit concerner seulement les espaces
esp$ = MID$(m$, lc, 1)
IF esp$ <> CHR$(32) THEN
BEEP
ELSE
m$ = MID$(m$, 1, lc - 1) + MID$(m$, lc + 1)
GOTO pl0
END IF
END IF
GOTO pl2
END SUB
DEFINT A-Z
SUB quitter (fond)
'27/10/95 ok
DIM c(80), x$(80)
F = 0
'on mémorise la zone quitter
LOCATE 23, 1, 0
COLOR blanc, 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, 40 + 1 - 13
BEEP: PRINT "Quitter ";
CALL ouinon(r$)
IF r$ = "O" THEN COLOR , 0: CLS : RUN "exo_fr1"
'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, fond
END SUB
DEFINT A-Z
SUB recupere (m$)
'pour sub espace
'13/5/94
'recuperation texte
COLOR , noir: CALL efface(23, 1)
COLOR , bleu
m$ = ""
FOR y = 9 TO 16
FOR x = 1 TO 80
s = SCREEN(y, x)
m$ = m$ + CHR$(s)
NEXT x
NEXT y
FOR x = 1 TO 38
s = SCREEN(17, x)
m$ = m$ + CHR$(s)
NEXT
IF LEFT$(m$, 355) = SPACE$(355) THEN m$ = CHR$(255): EXIT SUB
m$ = RTRIM$(m$): m$ = LTRIM$(m$)
ASS = ASC(RIGHT$(m$, 1))
IF ASS = 33 OR ASS = 46 OR ASS = 58 OR ASS = 59 OR ASS = 63 THEN
m$ = m$ + " "
ELSE
m$ = m$ + ". "
END IF
END SUB
DEFINT A-Z
SUB resultats (re, ni, nbniv)
tit$ = titr$
titr$ = "Résultats"
CALL titre
w! = LEN(tit$) / 2
IF w! = INT(LEN(tit$) / 2) THEN n = 4 ELSE n = 2
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 Solution (sol$)
BEEP
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)
CALL centre(23, rougeclair, "Solution : " + sol$)
CALL attendre(2)
LOCATE 23, 1: PRINT SPACE$(80)
END SUB
DEFINT A-Z
SUB tableauexo (p$())
'tableau des exercices
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
COLOR , noir, noir: CLS
LOCATE 2
COLOR , vert: PRINT SPACE$(80)
CALL centre(2, noir, titr$)
LOCATE 21, 1: PRINT SPACE$(80)
VIEW PRINT 3 TO 20: COLOR blancbrill, bleu: CLS 2: VIEW PRINT
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 lettres (fond%)
DECLARE SUB quitter (fond%)
DECLARE SUB afficheformate (m$(), nm%)
DECLARE SUB attendre (tx!)
DECLARE SUB centre (v%, cc%, ph$)
DECLARE SUB entree (x%, y%)
DECLARE SUB erreur2 (tx!)
DECLARE SUB Exact ()
DECLARE SUB exact2 (tx!)
DECLARE SUB fleches (v%, h%, w$(), np%, r%, coul%, drap%, v2%, h3%)
DECLARE SUB getinvi (rr%)
DECLARE SUB inputgen (nl%, r$, deb%, fin%, x%, y%)
DECLARE SUB ligne23 (x%, y%)
DECLARE SUB niveau (r%, np%)
DECLARE SUB resultats (re%, ni%, nbniv%)
DECLARE SUB Solution (sol$)
DECLARE SUB titre ()
DECLARE SUB tri (n$(), no%)
DECLARE SUB trouvemot (m$, m$(), nm%)
DECLARE SUB cadre (v%, h%, l%, nli%, c%)
DECLARE SUB consigne (nl%, w$, z$, y$)
DECLARE SUB getinvimouse (rr%)
DECLARE SUB ouinon (r$)
DECLARE SUB MouseHide ()
'Français CE module 2
'Daniel CLERC
'7/2/94
DEFINT A-Z
SUB alphabet (re%, ni%, rt$, gg$, pre$, titr$, prog%, nom$, noir%,
bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
'16/3/94
alpha$ = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
er = 0: juste = 0: aide = 0
w$ = "Tu vas devoir taper les 26 lettres"
z$ = "de l'alphabet dans le bon ordre."
CALL consigne(2, w$, z$, y$)
MouseHide
CALL titre
'mémorisation
COLOR , noir
CALL centre(23, blanc, "Mémorise l'alphabet")
CALL cadre(9, 10, 60, 4, blanc)
COLOR , blanc
CALL centre(10, noir, "a b c d e f g h i j k l m n o p q r s t u v w
x y z")
CALL centre(12, noir, UCASE$("a b c d e f g h i j k l m n o p q r s
t u v w x y z"))
CALL getinvimouse(w)
CALL titre
CALL cadre(8, 2, 76, 6, blanc)
COLOR jaune, blanc
'points
colonne = 1
FOR i = 1 TO 26
LOCATE 10, 2 + colonne: PRINT "█"
LOCATE 12, 2 + colonne: PRINT "█"
colonne = colonne + 3
NEXT
colonne = 1
FOR ii = 1 TO 26
COLOR noir, vert
LOCATE 21, 77: PRINT 27 - ii
COLOR blancbrill, blanc
LOCATE 10, 2 + colonne
PRINT "■"
LOCATE 12, 2 + colonne
PRINT "■"
al1:
COLOR , noir: CALL centre(23, blanc, "Tape la lettre n°" + LTRIM$(STR$(ii)))
COLOR noir, blanc
DO
DEF SEG = 0
POKE 1050, PEEK(1052)
DEF SEG
DO
r$ = INKEY$
LOOP WHILE r$ = ""
IF LEN(r$) < 2 THEN r = ASC(r$) ELSE BEEP: r = 0
IF r = 27 THEN
CALL quitter(blanc): r = 0
END IF
LOOP WHILE r = 0
IF (r > 64 AND r < 91) OR (r > 96 AND r < 123) THEN
IF r > 96 THEN r = r - 32
COLOR noir
LOCATE 10, 2 + colonne
PRINT CHR$(r)
LOCATE 12, 2 + colonne
PRINT CHR$(r + 32)
COLOR , noir
'test si juste
IF r = ASC(MID$(alpha$, ii, 1)) THEN
CALL centre(23, jaune, " Exact ")
COLOR blancbrill
CALL attendre(.3)
IF er = 0 THEN juste = juste + 1
colonne = colonne + 3
ELSE
BEEP
CALL centre(23, rougeclair, " Erreur ")
CALL attendre(.8)
COLOR rouge, blanc
LOCATE 10, 2 + colonne
PRINT CHR$(r)
LOCATE 12, 2 + colonne
PRINT CHR$(r + 32)
LOCATE 13, 2 + colonne: PRINT CHR$(4)
er = er + 1
IF er > 1 THEN aide = 1
IF aide = 1 THEN GOSUB alphaaide
GOTO al1
END IF
ELSE
BEEP
COLOR , noir
CALL centre(23, rougeclair, " Des lettres ! ")
CALL attendre(2)
GOTO al1
END IF
er = 0
NEXT ii
LOCATE 23, 1: PRINT SPACE$(80): CALL entree(noir, noir)
re = juste - 16: IF re < 0 THEN re = 0
CALL resultats(re, 1, 1)
EXIT SUB
alphaaide:
COLOR , bleu
CALL centre(16, rougeclair, "Mémorise l'alphabet :")
LOCATE 18, 13: COLOR jaune: PRINT "a b c d e f g h i j k l m n o p q
r s t u v w x y z"
COLOR vertclair: LOCATE 18, 11 + ii * 2: PRINT LCASE$(MID$(alpha$,
ii, 1))
LOCATE 19, 11 + ii * 2: PRINT "-"
COLOR , noir: LOCATE 23, 1: PRINT SPACE$(80)
CALL entree(noir, bleu)
COLOR , bleu
LOCATE 16
FOR i = 1 TO 4
PRINT SPACE$(80)
NEXT
RETURN
END SUB
DEFINT A-Z
SUB classement (re%, ni%, mo2$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
'23/5/94
DIM mo$(6), z(6), r%(6), z$(6)
nm = 102: cc = 0: pt = 0
'presentation
w$ = "Tu vas trier 6 mots"
z$ = "en ordre alphabétique."
CALL consigne(2, w$, z$, y$)
'niveau
CALL niveau(ni, 2)
IF ni = 1 THEN le = 7 ELSE le = 9
CALL titre
MouseHide
'tirage
FOR ii = 1 TO 6
DO
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
IF ni = 1 THEN
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
END IF
LOOP WHILE f = 1 OR f2 = 1
LOOP WHILE LEN(mo2$(z(ii))) > le
mo$(ii) = mo2$(z(ii))
r%(ii) = ii
NEXT ii
'affichage
CALL cadre(5, 20, 16, 14, rouge)
COLOR jaune, rouge
LOCATE 7
FOR i = 1 TO 6
LOCATE , 26: 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(5, 44, 16, 14, blanc)
c = 7
LOCATE c: COLOR noir, blanc
FOR j = 1 TO 6
LOCATE , 45: PRINT RTRIM$(STR$(j)); "-": PRINT
NEXT
FOR ii = 1 TO 6 '++++++++++++++++
CALL niv(6, ii)
cla3:
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)
CALL centre(23, blanc, "Tape le mot n°" + LTRIM$(STR$(ii)))
COLOR noir, blanc
LOCATE c, 49
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &HBF) 'minus
DEF SEG
CALL inputgen(12, r$, 65, 163, noir, blanc)
re$ = r$
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$(ii) THEN
cc = cc + 1
IF cc >= 2 THEN
BEEP
CALL Solution(mo$(ii))
ELSE
CALL erreur2(1)
END IF
GOTO cla3
ELSE
CALL exact2(1)
COLOR , rouge
LOCATE ((r%(ii) - 1) * 2) + 7, 24
IF cc = 0 THEN COLOR vertclair ELSE COLOR rougeclair
PRINT CHR$(4): COLOR blancbrill
c = c + 2
IF cc = 0 THEN pt = pt + 2
cc = 0
END IF
NEXT ii
CALL ligne23(noir, noir)
CALL entree(noir, noir)
re = pt - 2: IF re < 0 THEN re = 0
CALL resultats(re, ni, 2)
END SUB
DEFINT A-Z
SUB copietexte (re, ni, te$(), ti$(), rt$, gg$, pre$, titr$, noir,
bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair,
jaune, blancbrill)
'6/10/94
DIM m$(40), re$(200)
er = 0
CALL titre
CALL cadre(5, 25, 30, 2, vert)
COLOR , vert
CALL centre(6, blancbrill, "Choix du texte")
COLOR blancbrill, bleu
CALL fleches(10, 28, ti$(), 4, ni, rouge, 1, 23, 35)
m$ = te$(ni)
nbcar = LEN(m$)
CALL titre
CALL niv(1, 1)
CALL trouvemot(m$, m$(), nm)
LOCATE 7, , 0: COLOR jaune, bleu
CALL afficheformate(m$(), nm)
LOCATE 11
COLOR rouge
PRINT STRING$(80, "_")
copie0:
FOR nl = 1 TO 5
IF SCREEN(nl + 6, 1) = 32 THEN EXIT FOR
NEXT
COLOR , blanc: LOCATE 14, 1: FOR jj = 1 TO nl + 1: PRINT SPACE$(80):
NEXT
LOCATE 15, 1
COLOR noir
FOR jx = 1 TO nl * 80
c = jx MOD 80
IF c = 0 THEN
c = 80
ELSE
v = INT(jx / 80) + 7
END IF
IF SCREEN(v, c) = 32 THEN
PRINT " ";
ELSE
PRINT ".";
END IF
NEXT jx
CALL ligne23(noir, bleu)
COLOR noir, blanc
vb = 8
'saisie
DEF SEG = 0
POKE 1050, PEEK(1052)
DEF SEG
LOCATE 14, 1, 1
FOR ii = 1 TO nbcar
ligne = CSRLIN
colonne = POS(0)
IF colonne < 80 THEN
IF SCREEN(ligne - vb, colonne) = 32 AND SCREEN(ligne - vb, colonne +
1) = 32 THEN
colonne = 1: ligne = ligne + 1
nbcar = nbcar - 1
END IF
END IF
IF colonne = 80 THEN
IF SCREEN(ligne - vb, 80) = 32 THEN
colonne = 1: ligne = ligne + 1
nbcar = nbcar - 1
ELSE
nbcar = nbcar - 1
END IF
END IF
IF ii > nbcar THEN EXIT FOR
copie1:
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &H9F)'non numérique
IF ni > 1 THEN
POKE &H417, (PEEK(&H417) AND &HBF) 'minus
ELSE
POKE &H417, (PEEK(&H417) OR &H40)'MAJ
END IF
DEF SEG
LOCATE ligne, colonne, 1
DO
re$(ii) = INKEY$
LOOP WHILE re$(ii) = ""
IF ASC(re$(ii)) = 27 THEN CALL quitter(blanc): COLOR noir: GOTO
copie1
IF LEN(re$(ii)) = 2 THEN BEEP: GOTO copie1
IF ASC(re$(ii)) = 8 THEN BEEP: GOTO copie1
IF re$(ii) = "?" THEN re$(ii) = ","
IF re$(ii) = ";" THEN re$(ii) = "."
IF re$(ii) = "/" THEN re$(ii) = ":"
IF re$(ii) = "4" THEN re$(ii) = "'"
PRINT re$(ii);
'analyse
IF ii > 1 THEN
IF ASC(re$(ii - 1)) = 32 AND ASC(re$(ii)) = 32 THEN LOCATE ,
colonne: PRINT "."; : GOTO copie1
END IF
IF colonne = 1 AND ASC(re$(ii)) = 32 THEN
LOCATE , 1: PRINT "."; : GOTO copie1
END IF
'test
IF re$(ii) = LCASE$(CHR$(SCREEN(ligne - vb, colonne))) OR re$(ii) =
CHR$(SCREEN(ligne - vb, colonne)) OR re$(ii) =
UCASE$(CHR$(SCREEN(ligne - vb, colonne))) THEN
erreurs = 0
ELSE
erreurs = erreurs + 1
END IF
IF erreurs <> 0 THEN
COLOR rouge: LOCATE ligne, colonne: PRINT re$(ii)
COLOR , noir: BEEP: CALL erreur2(1)
IF SCREEN(ligne - vb, colonne) > 64 AND erreurs = 1 THEN
er = er + 1
END IF
COLOR noir, blanc
GOTO copie1
END IF
erreurs = 0
NEXT ii
PRINT
COLOR , noir: LOCATE 23, 1, 0: PRINT SPACE$(80): CALL entree(noir,
noir)
re = 10 - INT(er): IF re < 0 THEN re = 0
CALL resultats(re, ni, 2)
END SUB
DEFINT A-Z
SUB devine (re%, ni%, motdevine$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
'23/2/97
DIM p$(3), mot$(550), z(10), lettre$(26)
lp$ = STRING$(10, ".")
p$(1) = "Les jours": p$(2) = "Les mois": p$(3) = "Les mots"
'présentation
w$ = "Tu vas deviner un mot."
z$ = "Conseil : cherche d'abord les voyelles."
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(13, 40 - 4, p$(), 3, ni, rouge, 1, 23, 35)
'affectation des mots en fonction du niveau ++++++++
IF ni = 3 THEN
OPEN "mots1.dat" FOR INPUT AS #1
i = 1
DO UNTIL EOF(1)
INPUT #1, mot$(i)
i = i + 1
LOOP
CLOSE #1
nf = i - 1 'il y a 515 mots dans mots1.dat
FOR ii = 1 TO 10
DO
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
nn = z(ii)
LOOP WHILE LEN(mot$(nn)) < 4 OR LEN(mot$(nn)) > 8
mot$(ii) = LCASE$(LTRIM$(RTRIM$(mot$(nn))))
'accents, espace, tirets et guillemets
z = 0
FOR x = 1 TO LEN(mot$(ii))
z$ = MID$(mot$(ii), x, 1)
IF z$ = "ù" OR z$ = "à" OR z$ = "é" OR z$ = "è" OR z$ = "ç" OR z$ =
"'" OR z$ = " " OR z$ = "-" OR z$ = "î" OR z$ = "ô" OR z$ = "â" OR
z$ = "û" OR z$ = "ê" THEN z = 1: EXIT FOR
NEXT
LOOP WHILE z = 1
mot$(ii) = UCASE$(mot$(ii))
NEXT
nf = 10
ELSEIF ni = 1 THEN
titr$ = "Devine les jours"
FOR i = 1 TO 7: mot$(i) = UCASE$(motdevine$(i)): NEXT
nf = 7
ELSEIF ni = 2 THEN
titr$ = "Devine les mois"
j = 1
FOR i = 8 TO 16
mot$(j) = UCASE$(motdevine$(i))
j = j + 1
NEXT
nf = 8
END IF '+++++++++++++++++++
FOR i = 1 TO 10: z(i) = 0: NEXT
'prg principal
ct = 0
FOR ii = 1 TO 5 '++++++++++++++++++++++++++
CALL titre
IF ni = 3 THEN
GOSUB liste
CALL titre
END IF
CALL cadre(10, 28, 24, 4, blanc)
COLOR , blanc
CALL niv(5, ii)
CALL cadre(16, 28, 24, 2, vert)
compteur = 0: boucle = 1: boucle2 = 1
'tirage des mots
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
nn = z(ii)
mot$ = mot$(nn)
limite = LEN(mot$) + 3: IF ni = 3 THEN limite = limite + 6
mot2$ = MID$(lp$, 1, LEN(mot$))
FOR x = 1 TO LEN(mot$)
IF MID$(mot$, x, 1) = "é" THEN mot$ = MID$(mot$, 1, x - 1) + "E" +
MID$(mot$, x + 1)
IF MID$(mot$, x, 1) = "è" THEN mot$ = MID$(mot$, 1, x - 1) + "E" +
MID$(mot$, x + 1)
IF MID$(mot$, x, 1) = "ç" THEN mot$ = MID$(mot$, 1, x - 1) + "C" +
MID$(mot$, x + 1)
IF MID$(mot$, x, 1) = "ù" THEN mot$ = MID$(mot$, 1, x - 1) + "U" +
MID$(mot$, x + 1)
IF MID$(mot$, x, 1) = "à" THEN mot$ = MID$(mot$, 1, x - 1) + "A" +
MID$(mot$, x + 1)
NEXT
CALL ligne23(noir, noir)
COLOR , blanc: CALL centre(12, noir, mot2$): COLOR blancbrill
'saisie
DO
devine1:
CALL cadre(5, 28, 24, 2, rouge)
COLOR , rouge
IF limite - boucle2 > 1 THEN
CALL centre(6, blancbrill, LTRIM$(STR$(limite - boucle2)) + "
essais")
ELSE
CALL centre(6, blancbrill, "Dernier essai")
END IF
DO
COLOR , noir: CALL centre(23, blanc, "Tape une lettre")
COLOR blancbrill
DEF SEG = 0
POKE 1050, PEEK(1052)
DEF SEG
DO
r$ = INKEY$
LOOP WHILE r$ = ""
IF LEN(r$) < 2 THEN r = ASC(r$) ELSE BEEP: r = 0
IF r = 27 THEN CALL quitter(blanc): COLOR , bleu: r = 0
LOOP WHILE r = 0
IF CHR$(r) = "é" THEN r = ASC("e")
IF CHR$(r) = "è" THEN r = ASC("e")
IF CHR$(r) = "ç" THEN r = ASC("c")
IF CHR$(r) = "ù" THEN r = ASC("u")
IF CHR$(r) = "à" THEN r = ASC("a")
IF (r > 64 AND r < 91) OR (r > 96 AND r < 123) THEN
IF r > 96 THEN r = r - 32
'tester si lettre pas encore proposée
f = 0
FOR j = 1 TO boucle - 1
IF lettre$(j) = CHR$(r) THEN f = 1: EXIT FOR
NEXT
IF f = 1 THEN
BEEP: COLOR , noir
CALL centre(23, rougeclair, "Lettre déjà proposée"): CALL
attendre(.7)
LOCATE 23: PRINT SPACE$(80)
GOTO devine1
END IF
COLOR , noir
s2 = 1
DO
s = INSTR(s2, mot$, CHR$(r))
IF s <> 0 THEN
mot2$ = MID$(mot2$, 1, s - 1) + CHR$(r) + MID$(mot2$, s + 1)
COLOR , blanc: CALL centre(12, noir, mot2$): COLOR blancbrill
s2 = s + 1
compteur = compteur + 1
IF boucle + 1 >= limite THEN boucle2 = boucle2 - 1 'dernier essai
juste
END IF
LOOP WHILE s <> 0
ELSE
CALL lettres(bleu)
GOTO devine1
END IF
lettre$(boucle) = CHR$(r)
'afficher les lettres utilisées
m$ = ""
FOR i = 1 TO boucle
m$ = m$ + " " + lettre$(i)
NEXT
m$ = RTRIM$(m$): m$ = LTRIM$(m$)
IF LEN(m$) > 24 THEN
CALL cadre(16, INT(41 - LEN(m$) / 2) - 2, LEN(m$) + 2, 2, vert)
END IF
COLOR , vert
CALL centre(17, blancbrill, m$)
boucle = boucle + 1
boucle2 = boucle2 + 1
IF boucle2 = limite THEN
BEEP
ct = ct + 2
COLOR , bleu
LOCATE 4, 1: FOR i = 1 TO 4: PRINT SPACE$(80): NEXT
CALL cadre(10, 28, 24, 4, rouge)
COLOR , rouge: CALL centre(12, blanc, mot$)
COLOR , noir
LOCATE 23: PRINT SPACE$(80)
CALL centre(23, rougeclair, "Solution")
COLOR , bleu
CALL getinvimouse(r)
EXIT DO
END IF
IF compteur = LEN(mot$) THEN
COLOR blancbrill, bleu
LOCATE 4, 1: FOR i = 1 TO 4: PRINT SPACE$(80): NEXT
LOCATE 16, 1: FOR i = 1 TO 4: PRINT SPACE$(80): NEXT
COLOR , noir
LOCATE 23: PRINT SPACE$(80)
CALL exact2(1)
CALL entree(noir, noir)
EXIT DO
END IF
LOOP
NEXT ii '+++++++++++++++++++++++++++
re = INT(10 - ct)
IF re < 0 THEN re = 0
CALL resultats(re, ni, 3)
EXIT SUB
liste:
CALL titre
CALL cadre(6, 33, 14, 11, marron)
LOCATE 7: COLOR blancbrill, marron
FOR i = 1 TO 10
LOCATE , 37: PRINT mot$(i)
NEXT
LOCATE 23: COLOR , noir
CALL centre(23, blanc, "Le mot à deviner est dans cette liste.")
CALL getinvimouse(z)
RETURN
END SUB
DEFINT A-Z
SUB lecrap (re%, ni%, mo2$(), rt$, gg$, pre$, titr$, prog%, nom$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
'23/5/94
DIM v$(3), p$(6), a(6)
v$(3) = "rapide": v$(2) = "normale": v$(1) = "lente"
c = 0: b = 1: da = 1
lp$ = STRING$(30, ".")
GOSUB lecpres
flag = 0
'niveau
CALL titre
CALL cadre(7, 25, 30, 2, vert)
COLOR , vert
CALL centre(8, blancbrill, "Choix de la vitesse")
CALL fleches(12, 37, v$(), 3, rep, rouge, 1, 23, 35)
SELECT CASE rep
CASE 1
ni = 1
CASE 2
ni = 2
CASE 3
ni = 3
END SELECT
vit = ni
GOSUB lectx
xx = INT(RND * 2)
ct = 0
DO
IF xx = 1 THEN b = 7 ELSE b = 31
GOSUB lec1
GOSUB lecctrl1
LOOP WHILE c > 2
xx = INT(RND * 2)
DO
IF xx = 1 THEN b = 55 ELSE b = 79
GOSUB lec2
GOSUB lecctrl1
LOOP WHILE c > 2
re = 10 - ct: IF re < 0 THEN re = 0
CALL resultats(re, ni, 3)
EXIT SUB
lecpres:
w$ = "5 mots vont s'afficher à l'écran."
z$ = "Tu devras trouver celui que tu n'as"
y$ = "pas vu parmi une liste de 6 mots."
CALL consigne(3, w$, z$, y$)
DO
COLOR , noir
CALL centre(23, blanc, "Tape [E] pour un exemple sinon " + rt$)
CALL getinvi(rr): IF rr = 27 THEN CALL quitter(noir)
LOOP WHILE r = 27
IF UCASE$(CHR$(rr)) <> "E" THEN RETURN
flag = 1
CALL titre
CALL cadre(11, 30, 20, 2, marron)
COLOR , marron
CALL centre(12, blancbrill, "Un exemple")
CALL attendre(1.3)
COLOR blancbrill, bleu
tx! = .3
lec0:
FOR i = 1 TO 5
CALL cadre(10, 30, 20, 4, blanc)
COLOR , blanc
CALL centre(12, noir, LEFT$(lp$, LEN(mo2$(i))))
CALL attendre(.3)
CALL centre(12, noir, mo2$(i))
CALL attendre(tx!)
NEXT
CALL attendre(.7)
CALL titre
COLOR , noir: CALL centre(23, blanc, gg$): COLOR vertclair, bleu
CALL centre(5, blanc, "Parmi ces mots, il y en a un")
CALL centre(6, blanc, "que tu n'as pas lu. Lequel ?")
GOSUB lecchoiaf
CALL ligne23(noir, noir)
IF a(r) <> 5 THEN CALL centre(23, blanc, "On va recommencer plus
doucement..."): tx! = tx! + .3: CALL attendre(2): CALL titre: GOTO
lec0
CALL centre(23, jaune, "Tu as compris !")
CALL attendre(2)
RETURN
lec1:
c = 0
CALL titre
CALL cadre(11, 20, 40, 2, marron)
COLOR , marron
CALL centre(12, blancbrill, "Mots au milieu de l'écran"): COLOR
blancbrill
CALL attendre(tx! * 2)
DO
CALL titre
COLOR , noir
CALL centre(23, blanc, "Vitesse " + v$(rep))
CALL niv(4, da)
CALL attendre(.3)
FOR i = b TO b + 4
CALL cadre(10, 30, 20, 4, blanc)
COLOR , blanc
CALL centre(12, noir, LEFT$(lp$, LEN(mo2$(i))))
CALL attendre(.3)
CALL centre(12, noir, mo2$(i))
CALL attendre(tx!)
NEXT
GOSUB lecresult
LOOP WHILE da < 5
RETURN
lec2:
c = 0
CALL titre
CALL cadre(11, 20, 40, 2, marron)
COLOR , marron
CALL centre(12, blancbrill, "Mots sur tout l'écran"): COLOR
blancbrill
CALL attendre(tx! * 2)
DO
CALL titre
COLOR , noir
CALL centre(23, blanc, "Vitesse " + v$(rep))
CALL niv(4, da)
CALL attendre(.3)
FOR i = b TO b + 4
CALL cadre(5, 8, 64, 14, blanc)
COLOR , blanc
n = LEN(mo2$(i))
ht = INT(RND * (59 - n) + 10)
vt = INT(RND * 8) + 6
COLOR noir: LOCATE vt, ht: PRINT LEFT$(lp$, n)
CALL attendre(.3)
LOCATE vt, ht: PRINT mo2$(i)
CALL attendre(tx!)
NEXT i
GOSUB lecresult
LOOP WHILE da < 5
RETURN
lecctrl1:
da = 1
CALL titre
CALL cadre(11, 30, 20, 2, vert)
COLOR , vert
IF c = 0 AND vit = 3 THEN
CALL centre(12, 15, "Tout juste !")
ELSEIF c = 0 THEN
CALL centre(12, 15, "Tout juste !")
vit = vit + 1: GOSUB lectx
ELSEIF c = 1 THEN
CALL centre(12, 15, "Trois bonnes réponses")
ELSEIF c = 2 AND vit = 3 THEN
CALL centre(12, 15, "Deux bonnes réponses")
vit = 2: GOSUB lectx
ELSEIF c = 2 THEN
CALL centre(12, 15, "Deux bonnes réponses")
ELSE
CALL cadre(10, 20, 40, 4, rouge)
COLOR , rouge
CALL centre(11, 15, "Tu as fait trop d'erreurs...")
CALL centre(13, 15, "Tu vas recommencer la même série.")
vit = 1: GOSUB lectx
ct = ct - c
END IF
COLOR , noir: CALL entree(noir, noir)
RETURN
lecchoiaf:
CALL niv(4, da)
DEF SEG = 0
POKE 1050, PEEK(1052)
DEF SEG
z = INT(RND * 6) + 1
SELECT CASE z
CASE 1
a(1) = 1: a(2) = 5: a(3) = 3: a(4) = 4: a(5) = 2: a(6) = 0
CASE 2
a(1) = 2: a(2) = 0: a(3) = 4: a(4) = 5: a(5) = 3: a(6) = 1
CASE 3
a(1) = 3: a(2) = 1: a(3) = 5: a(4) = 0: a(5) = 4: a(6) = 2
CASE 4
a(1) = 4: a(2) = 2: a(3) = 0: a(4) = 1: a(5) = 5: a(6) = 3
CASE 5
a(1) = 5: a(2) = 3: a(3) = 1: a(4) = 2: a(5) = 0: a(6) = 4
CASE 6
a(1) = 0: a(2) = 4: a(3) = 2: a(4) = 3: a(5) = 1: a(6) = 5
END SELECT
FOR i = 1 TO 6: p$(i) = mo2$(b + a(i)): NEXT
IF flag = 0 THEN
CALL cadre(4, 20, 40, 2, marron)
COLOR , marron
CALL centre(5, blancbrill, "Choisis le mot que tu n'as pas vu.")
END IF
'trouver longueur mot max
l2 = 0
FOR i = 1 TO 6
l1 = LEN(p$(i)): IF l2 < l1 THEN l2 = l1
NEXT
h = INT(40 + 1 - (l2 / 2))
CALL fleches(9, h, p$(), 6, r, rouge, 1, 23, 35)
RETURN
lecresult:
CALL titre
GOSUB lecchoiaf
CALL ligne23(noir, noir)
IF a(r) = 5 THEN
CALL exact2(.7)
ELSE
'CALL Solution(mo2$(b + 5))
CALL erreur2(1)
c = c + 1
ct = ct + 1
END IF
b = b + 6: da = da + 1
RETURN
lectx:
IF vit = 1 THEN tx! = 1
IF vit = 2 THEN tx! = .75
IF vit = 3 THEN tx! = .5
RETURN
END SUB
DEFINT A-Z
SUB ortho (re%, ni%, motorth$(), rt$, gg$, pre$, titr$, prog%, nom$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
'24/12/97
DIM p$(4), p2$(5), mot$(12), z(20)
p2$(1) = "très lente": p2$(2) = "lente": p2$(3) = "moyenne"
p2$(4) = "rapide": p2$(5) = "très rapide"
lp$ = STRING$(22, ".")
p$(1) = "Les jours": p$(2) = "Les mois"
p$(3) = "Les objets": p$(4) = "Les animaux"
'présentation
w$ = "L'ordinateur va afficher des mots."
z$ = "Tu les retaperas."
CALL consigne(2, w$, z$, y$)
'niveau
CALL titre
CALL cadre(7, 25, 30, 2, vert)
COLOR , vert
CALL centre(8, blancbrill, "Choix de la série")
CALL fleches(13, 40 - 4, p$(), 4, ni, rouge, 1, 23, 35)
vit = 3
'debut
c = 0: flag = 0: re = 10
CALL titre
IF ni = 1 THEN
dernier = 7
ELSEIF ni = 2 THEN
dernier = 12
ELSE
dernier = 10
END IF
IF ni = 1 THEN
FOR i = 1 TO 7 'jour
mot$(i) = motorth$(i)
NEXT
ELSEIF ni = 2 THEN
j = 1
FOR i = 8 TO 19 'mois
mot$(j) = motorth$(i)
j = j + 1
NEXT
ELSEIF ni = 3 THEN
j = 1
FOR i = 20 TO 29
mot$(j) = motorth$(i)
j = j + 1
NEXT
ELSEIF ni = 4 THEN
j = 1
FOR i = 30 TO 39
mot$(j) = motorth$(i)
j = j + 1
NEXT
END IF
'affichage des mots
CALL cadre(6, 33, 14, dernier + 1, marron)
COLOR blancbrill, marron
LOCATE 7
FOR i = 1 TO dernier
LOCATE , 35: PRINT mot$(i)
NEXT
COLOR , noir
CALL centre(23, blanc, "Mémorise l'orthographe des mots")
CALL getinvimouse(w)
FOR ii = 1 TO dernier '+++++++++++++++++++++++++++++
'prg principal
CALL titre
CALL cadre(10, 29, 22, 4, blanc)
s$ = mot$(ii)
COLOR , blanc
CALL centre(12, noir, SPACE$(20))
or0:
CALL niv(dernier, ii)
CALL cadre(6, 29, 22, 2, vert)
COLOR , vert
CALL centre(7, blancbrill, "Vitesse " + p2$(vit))
CALL attendre(.5)
COLOR , blanc
IF flag = 0 THEN
SELECT CASE ii
CASE 1, 3, 5, 7, 9, 11
CALL centre(12, noir, s$)
CALL attendre(4 / vit)
CASE ELSE
'flash
FOR x = 1 TO 3
CALL centre(12, noir, s$)
CALL attendre(.2)
CALL centre(12, noir, SPACE$(LEN(s$)))
CALL attendre(.15)
NEXT
END SELECT
ELSE
CALL centre(12, noir, s$)
CALL attendre(5 / vit)
END IF
tr = 0
p$ = MID$(lp$, 1, LEN(s$))
FOR x = 2 TO LEN(s$)
IF ASC(MID$(s$, x, 1)) = 32 THEN tr = x
NEXT
IF tr <> 0 THEN p$ = MID$(p$, 1, tr - 1) + " " + MID$(p$, tr + 1)
COLOR , blanc
CALL centre(12, noir, p$)
COLOR , noir
CALL centre(23, blanc, "Tape le mot")
nl = LEN(s$)
LOCATE 12, INT(40 + 1 - (LEN(s$) / 2))
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &HBF) 'minus
DEF SEG
CALL inputgen(nl, r$, 32, 165, noir, blanc)
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80): LOCATE 23, 1
IF r$ = s$ THEN
cc = cc + 1
CALL exact2(.7)
IF flag = 1 THEN re = re - 1
flag = 0
ELSE
CALL erreur2(1)
cc = 0: c = c + 1: flag = 1
IF c = 2 THEN c = 0: vit = vit - 1: IF vit < 1 THEN vit = 1
IF r$ = "aout" AND s$ = "août" THEN
BEEP
CALL centre(23, rougeclair, "Tu dois taper l'accent circonflexe...")
CALL centre(22, jaune, "û -> touches ^ puis u")
CALL attendre(1.5)
END IF
'_________________
'mettre en rouge là où c'est faux
COLOR , blanc
LOCATE 12, INT(41 - (LEN(s$) / 2))
FOR i = 1 TO LEN(r$)
IF MID$(s$, 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$) / 2))
'on compte les erreurs
flag2 = 0
FOR i = 1 TO LEN(r$)
IF MID$(s$, i, 1) <> MID$(r$, i, 1) THEN
flag2 = flag2 + 1
END IF
NEXT
IF flag2 < 3 THEN
FOR i = 1 TO LEN(r$)
IF MID$(s$, i, 1) = MID$(r$, i, 1) THEN
PRINT " ";
ELSE
COLOR rouge
PRINT CHR$(24);
END IF
NEXT
ELSE
CALL centre(13, noir, SPACE$(LEN(s$)))
END IF
CALL attendre(1)
'________________
CALL ligne23(noir, noir): GOTO or0
END IF
IF vit = 1 AND cc = 2 THEN vit = 2: cc = 0
IF vit = 2 AND cc = 2 THEN vit = 3: cc = 0
IF vit = 3 AND cc = 3 THEN vit = 4: cc = 0
IF vit = 4 AND cc = 3 THEN vit = 5: cc = 0
NEXT
CALL resultats(re, ni, 4)
END SUB
DEFINT A-Z
SUB recolle (re, ni, rt$, motrecolle$(), gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
'13/12/96
DIM p$(3), h(15), r$(31), mot$(550), m$(20), m2$(20), z(12), x(15,
60)
zz = 0: ct = 0: re = 0
lim = 1
p$(1) = "Les jours": p$(2) = "Les mois": p$(3) = "Les mots"
w$ = "L'ordinateur va mélanger les lettres"
z$ = "d'un mot."
CALL consigne(2, w$, z$, y$)
CALL titre
CALL cadre(7, 25, 30, 2, vert)
COLOR , vert
CALL centre(8, blancbrill, "Niveau de difficulté")
CALL fleches(13, 40 - 4, p$(), 3, ni, rouge, 1, 23, 35)
IF ni = 1 THEN
dernier = 7
ELSEIF ni = 2 THEN
dernier = 12
ELSE
dernier = 5
END IF
CALL titre
IF ni = 3 THEN
OPEN "mots1.dat" FOR INPUT AS #1
i = 1
DO UNTIL EOF(1)
INPUT #1, mot$(i)
i = i + 1
LOOP
CLOSE #1
nf = i - 1
z = INT(RND * (nf - 150)) + 1
i = 1: pt = 1
DO
IF LEN(mot$(z + i)) < 8 THEN r$(pt) = LTRIM$(RTRIM$(mot$(z + i))):
pt = pt + 1
i = i + 1
LOOP WHILE pt < 31
n2 = 29
'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)
ELSEIF ni = 1 THEN
FOR i = 1 TO 7: r$(i) = motrecolle$(i): NEXT
n2 = 7
ELSE
j = 1
FOR i = 8 TO 19
r$(j) = motrecolle$(i)
j = j + 1
NEXT
n2 = 12
END IF
FOR ll = 1 TO dernier '+++++++++++++++++++++++
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(dernier, 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(40 + 1 - (nl / 2))
'LOCATE 18, 1: PRINT SPACE$(80)
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)
COLOR , bleu
IF r$ = "*" THEN
GOSUB recaf
GOTO rec1
END IF
LOCATE 20, 1: PRINT SPACE$(80)
COLOR , noir
IF r$ <> r$(nt) THEN
LOCATE 23, 1: PRINT SPACE$(80)
IF r$ = "aout" AND r$(nt) = "août" THEN
BEEP
CALL centre(23, rougeclair, "Tu dois taper l'accent circonflexe...")
COLOR , bleu
CALL centre(20, jaune, "û -> touches ^ puis u")
CALL attendre(2)
GOTO rec1
END IF
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
SELECT CASE ni
CASE 1
re = re + 3
CASE 2
re = re - 2
CASE 3
re = re * 2
END SELECT
CALL resultats(re, ni, 3)
EXIT SUB
recaf:
COLOR blancbrill, noir
LOCATE 23, 1: PRINT SPACE$(80)
COLOR , bleu
LOCATE 16
FOR i = 1 TO 5
PRINT SPACE$(80)
NEXT
SELECT CASE ni
CASE 1
LOCATE 16
FOR i = 1 TO 4
LOCATE , 30: PRINT r$(i)
NEXT
LOCATE 16
FOR i = 5 TO 7
LOCATE , 45: PRINT r$(i)
NEXT
CASE 2
LOCATE 16
FOR i = 1 TO 4
LOCATE , 26: PRINT r$(i)
NEXT
LOCATE 16
FOR i = 5 TO 8
LOCATE , 37: PRINT r$(i)
NEXT
LOCATE 16
FOR i = 9 TO 12
LOCATE , 47: PRINT r$(i)
NEXT
CASE 3
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
END SELECT
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
DEFINT A-Z
SUB trouvetemps (re, ni, tlt$(), tltv$(), rt$, gg$, pre$, titr$,
prog%, nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%,
vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'17/2/96
re = 0
DIM z(5), ve$(5), pp$(2)
w$ = "Une phrase va s'afficher."
z$ = "Tu devras choisir le verbe correct."
CALL consigne(2, w$, z$, y$)
'niveau
CALL niveau(ni, 2)
FOR ii = 1 TO 5 '+++++++++++++++++++++++++++
'tirage
DO
f = 0
IF ni = 1 THEN
z(ii) = INT(RND * 5) + 1
ELSE
z(ii) = INT(RND * 5) + 6
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)
FOR i = 1 TO 5
ve$(i) = tltv$(i + ((b - 1) * 5))
NEXT
er = 0
DO
tlt1:
CALL titre
CALL niv(5, ii)
CALL cadre(6, 8, 64, 4, blanc)
COLOR , blanc
CALL centre(8, noir, tlt$(b))
CALL fleches(14, 37, ve$(), 4, rep, rouge, 1, 23, 35)
CALL titre
'afficher la phrase avec le verbe
ph$ = tlt$(b)
s = INSTR(1, ph$, "........") '8 points
ph$ = MID$(ph$, 1, s - 1) + ve$(rep) + MID$(ph$, s + 8)
CALL cadre(9, 8, 64, 4, blanc)
COLOR , blanc
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
' call titre
GOTO tlt1
END IF
COLOR , noir
IF rep = VAL(ve$(5)) THEN
CALL exact2(1)
IF er = 0 THEN re = re + 2
EXIT DO
ELSE
CALL erreur2(.7)
er = er + 1
IF er > 1 THEN
CALL titre
BEEP
ph$ = tlt$(b)
s = INSTR(1, ph$, "........") '8 points
ph$ = MID$(ph$, 1, s - 1) + ve$(VAL(ve$(5))) + MID$(ph$, s + 8)
COLOR , noir
CALL centre(23, rougeclair, "Solution")
CALL cadre(9, 8, 64, 4, rouge)
COLOR , rouge
CALL centre(11, blancbrill, ph$)
CALL getinvimouse(w)
EXIT DO
END IF
END IF
LOOP
NEXT ii
CALL resultats(re, ni, 2)
END SUB
|
DECLARE SUB flechestrouvephrase (v%, h%, w$(), np%, r%, coul%,
drap%, v2%, h3%)
DECLARE SUB niv (limit%, xx%)
DECLARE SUB attendre (tx!)
DECLARE SUB centre (v%, cc%, ph$)
DECLARE SUB erreur2 (tx!)
DECLARE SUB exact2 (tx!)
DECLARE SUB fleches (v%, h%, w$(), np%, r%, coul%, drap%, v2%, h3%)
DECLARE SUB niveau (r%, np%)
DECLARE SUB quitter (fond%)
DECLARE SUB resultats (re%, ni%, nbniv%)
DECLARE SUB Solution (sol$)
DECLARE SUB titre ()
DECLARE SUB cadre (v%, h%, l%, nli%, c%)
DECLARE SUB consigne (nl%, w$, z$, y$)
DECLARE SUB getinvimouse (rr%)
DECLARE SUB ouinon (r$)
'Français AAS CE module 3
'Daniel CLERC
'7/1/97
DEFINT A-Z
SUB ani (re, ni, rt$, gg$, pre$, titr$, noir, bleu, vert, rouge,
marron, blanc, vertclair, cyanclair, rougeclair, jaune, blancbrill)
DIM ph$(10, 3), p$(3), z(10), r%(3), q$(3)
'8/5/94
re = 0
rep = 0
q$(1) = "déclarative."
q$(2) = "interrogative."
q$(3) = "négative."
'niveau 1
ph$(1, 1) = "Demain, vous irez au cinéma."
ph$(1, 2) = "Demain, irez-vous au cinéma ?"
ph$(1, 3) = "Demain, vous n'irez pas au cinéma."
ph$(2, 1) = "Florian regarde souvent la télévision."
ph$(2, 2) = "Est-ce que Florian regarde souvent la télévision ?"
ph$(2, 3) = "Florian ne regarde pas souvent la télévision."
ph$(3, 1) = "Ce dessin animé est vraiment très mauvais."
ph$(3, 2) = "Ce dessin animé est-il vraiment très mauvais ?"
ph$(3, 3) = "Ce dessin animé n'est pas vraiment mauvais."
ph$(4, 1) = "Papa nous filme avec sa caméra vidéo."
ph$(4, 2) = "Est-ce que Papa nous filme avec sa caméra vidéo ?"
ph$(4, 3) = "Papa ne nous filme pas avec sa caméra vidéo."
ph$(5, 1) = "Maman tient son bébé dans les bras."
ph$(5, 2) = "Maman tient-elle son bébé dans les bras ?"
ph$(5, 3) = "Maman ne tient pas son bébé dans les bras."
'niveau 2
ph$(6, 1) = "L'avion va décoller dans trois minutes."
ph$(6, 2) = "Est-ce que l'avion va décoller dans trois minutes ?"
ph$(6, 3) = "L'avion ne va pas décoller dans trois minutes."
ph$(7, 1) = "Les joueurs ont gagné ce match difficile."
ph$(7, 2) = "Les joueurs ont-ils gagné ce match difficile ?"
ph$(7, 3) = "Les joueurs n'ont pas gagné ce match difficile."
ph$(8, 1) = "L'alpiniste gravit les pentes de la montagne."
ph$(8, 2) = "L'alpiniste gravit-il les pentes de la montagne ?"
ph$(8, 3) = "L'alpiniste ne gravit pas les pentes de la montagne."
ph$(9, 1) = "Il se passionne pour son jeu vidéo."
ph$(9, 2) = "Est-ce qu'il se passionne pour son jeu vidéo ?"
ph$(9, 3) = "Il ne se passionne pas pour son jeu vidéo."
ph$(10, 1) = "Elle écoute de la musique dans son casque."
ph$(10, 2) = "Ecoute-t-elle de la musique dans son casque ?"
ph$(10, 3) = "Elle n'écoute pas de la musique dans son casque."
'présentation
w$ = "Trois phrases vont être affichées."
z$ = "Une déclarative, une négative et"
y$ = "une interrogative."
CALL consigne(3, w$, z$, y$)
CALL niveau(ni, 2)
IF ni = 2 THEN
FOR i = 1 TO 5
ph$(i, 1) = ph$(i + 5, 1)
ph$(i, 2) = ph$(i + 5, 2)
ph$(i, 3) = ph$(i + 5, 3)
NEXT
END IF
FOR ii = 1 TO 5 '+++++++
CALL titre
CALL niv(5, ii)
'tirage phrase
DO
f = 0
z(ii) = INT(RND * 5) + 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)
'mélange A N I
FOR kk = 1 TO 3
DO
f = 0
r%(kk) = INT(RND * 3) + 1
FOR j = 1 TO kk - 1
IF r%(kk) = r%(j) THEN f = 1: EXIT FOR
NEXT
LOOP WHILE f = 1
p$(kk) = ph$(n, r%(kk))
'r%() est l'index
NEXT kk
'tirage question
DO
rep = INT(RND * 3) + 1
LOOP WHILE rep2 = rep
rep2 = rep
ani0:
CALL cadre(6, 15, 50, 2, blanc)
COLOR , blanc
CALL centre(7, noir, "Sélectionne la phrase " + q$(rep))
l = 0
FOR ij = 1 TO 3
l2 = LEN(p$(ij)): IF l2 > l THEN l = l2
NEXT
h = INT(41 - l / 2)
CALL fleches(12, h, p$(), 3, r, rouge, 1, 23, 35)
LOCATE 23: COLOR , noir
IF r%(r) = rep THEN
CALL exact2(.7): IF cc = 0 THEN re = re + 2
ELSE
cc = cc + 1
IF cc < 3 THEN
CALL erreur2(.7)
CALL centre(23, rougeclair, "Tu as montré la phrase " + q$(r%(r)))
CALL getinvimouse(w)
COLOR , noir: LOCATE 23, 1: PRINT SPACE$(80)
GOTO ani0
ELSE
CALL titre
COLOR , noir
CALL centre(23, rougeclair, " Solution ")
COLOR , bleu
CALL centre(7, vertclair, "Regarde la phrase " + q$(rep))
CALL centre(12, rougeclair, ph$(n, rep))
CALL getinvimouse(z)
END IF
END IF
cc = 0
NEXT ii
CALL resultats(re, ni, 2)
END SUB
DEFINT A-Z
SUB intrus (re, ni, motintrus$(), rt$, gg$, pre$, titr$, noir, bleu,
vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair, jaune,
blancbrill)
'3/3/94
nbeliste = 20
nbeserie = nbeliste / 2
DIM mot$(30, 20), mot2$(20), z(20), sol(20), nbe(20)
re = 0: q = 1
k = 0
FOR i = 1 TO nbeliste
j = 0
DO
j = j + 1: k = k + 1
mot$(i, j) = motintrus$(k)
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
'présentation
w$ = "Tu vas devoir trouver le mot 'pirate'"
z$ = "dans une liste de propositions."
CALL consigne(2, w$, z$, y$)
'niveau
CALL niveau(ni, 2)
IF ni = 1 THEN niv2 = 1 ELSE niv2 = nbeserie + 1
'affectation
bb = 1
FOR boucle = 1 TO nbeserie
'tirage aléatoire des séries
DO
f = 0
z(boucle) = INT(RND * nbeserie) + niv2
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
intrus5:
CALL niv(nbeserie, boucle)
'trouver longueur mot max
l2 = 0
FOR i = 1 TO nbemot
l1 = LEN(mot2$(i)): IF l2 < l1 THEN l2 = l1
NEXT
h = INT(40 + 1 - (l2 / 2))
CALL cadre(4, 20, 40, 2, marron)
COLOR , marron
CALL centre(5, blancbrill, "Sélectionne l'intrus")
COLOR , bleu
CALL fleches(8, h, mot2$(), nbemot, r, rouge, 1, 23, 35)
COLOR , noir
LOCATE 22, 1: PRINT SPACE$(80): PRINT SPACE$(80)
IF r = 0 THEN
CALL quitter(bleu): GOTO intrus5
ELSEIF r <> sol(numeroboucle) THEN
erreurs = erreurs + 1
IF erreurs < 3 THEN
CALL erreur2(.5)
ELSE
CALL Solution(mot2$(sol(numeroboucle)))
COLOR , bleu
END IF
END IF
LOOP WHILE r <> sol(numeroboucle)
CALL exact2(.5): IF erreurs = 0 THEN re = re + 1'en fonction du
nombre de série
LOCATE 22: PRINT SPACE$(80)
CALL centre(23, vertclair, mot2$(nbemot + 1))
CALL attendre(3)
bb = bb + 1: IF bb > 3 THEN bb = 1
NEXT boucle
CALL resultats(re, ni, 2)
END SUB
DEFINT A-Z
SUB passepresent (re%, ni%, ppf$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
'22/5/94
gg = 20: re = 0
DIM p$(3), z(19)
p$(1) = "Passé": p$(2) = "Présent": p$(3) = "Futur"
'présentation
w$ = "Tu vas choisir entre le présent,"
z$ = "le passé et le futur."
CALL consigne(2, w$, z$, y$)
CALL niveau(ni, 2)
FOR ii = 1 TO 10 '+++++++
CALL titre
CALL niv(10, ii)
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)
n$ = MID$(ppf$(n), 1, LEN(ppf$(n)) - 1): b = VAL(RIGHT$(ppf$(n), 1))
CALL cadre(7, 40 - 10, 20, 4, blanc)
COLOR , blanc
CALL centre(9, noir, n$)
de1:
CALL fleches(15, 40 - 2, p$(), 3, r, rouge, 1, 23, 35)
LOCATE 23: COLOR , noir
IF r = b THEN
CALL exact2(1)
IF cc = 0 THEN re = re + 1
ELSE
cc = cc + 1
IF cc < 3 THEN
CALL erreur2(1)
ELSE
CALL Solution(p$(b))
END IF
GOTO de1
END IF
cc = 0
NEXT ii '++++++++++
CALL resultats(re, ni, 2)
END SUB
DEFINT A-Z
SUB trouvephrase (re%, ni%, rt$, gg$, gg2$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
'3/2/96
'attention : changer sub fleches en fonction de prog ===
DIM m$(13), m2$(13), m(13), mot$(13), ph$(20), z(5), pp$(2)
re = 0
'=== espace à la fin
'niveau 1
ph$(1) = "Olivier regarde la télévision. "
ph$(2) = "Un enfant écrit une phrase. "
ph$(3) = "Le petit chat boit son lait. "
ph$(4) = "Les pompiers éteignent le feu. "
ph$(5) = "Cette grande fille attrape un papillon. "
ph$(6) = "Il a vu son camarade. "
ph$(7) = "Elle est partie faire des courses. "
ph$(8) = "Vous avez effacé votre dessin. "
ph$(9) = "Florian joue avec ses jouets. "
ph$(10) = "Les boulangers vendent du pain. "
'niveau 2
ph$(11) = "Des oiseaux vivent au bord de la mer. "
ph$(12) = "Ce jeune chien a des poils foncés. "
ph$(13) = "Une lettre a été envoyée. "
ph$(14) = "Le mur du jardin a été démoli. "
ph$(15) = "Le berger donne à manger à ses moutons. "
ph$(16) = "Vous allez faire une grande randonnée. "
ph$(17) = "Michel est parti à la campagne. "
ph$(18) = "Mélanie est allée visiter Paris. "
ph$(19) = "On voit des enfants ramasser des champignons. "
ph$(20) = "Je suis content de vous voir. "
'présentation
w$ = "Tu vas remettre dans l'ordre"
z$ = "les mots d'une phrase."
CALL consigne(2, w$, z$, y$)
CALL niveau(ni, 2)
FOR ii = 1 TO 5 '+++++++++++++++++++++++++
flagerr = 0
'tirage suivant niveau
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)
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 3 TO 19: CLS 2: VIEW PRINT
CALL niv(5, ii)
CALL cadre(16, 2, 75, 2, blanc)
COLOR , blanc
CALL centre(17, noir, ph3$)
COLOR , noir
IF jj = 0 THEN
CALL centre(23, blanc, SPACE$(10) + gg$ + SPACE$(10))
ELSE
CALL centre(23, blanc, gg$ + " " + CHR$(27) + "- = Corriger")
END IF
COLOR blancbrill, bleu
v = INT(21 - nm2) / 2
CALL flechestrouvephrase(v - 1, 36, m2$(), nm2, r, rouge, 1, 23, 0)
IF r = 83 OR r = 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 ?")
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
COLOR , noir
IF flag = 0 THEN GOTO debuttp
CALL centre(23, 15, SPACE$(80))
IF ph$ = ph3$ THEN
CALL exact2(1.5)
IF flagerr = 0 THEN
re = re + 2
ELSEIF flagerr = 1 THEN
re = re + 1
END IF
ELSE
CALL erreur2(1.2)
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(r)
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(r)
GOTO debuttp
ELSEIF LEFT$(ph$, 1) <> LEFT$(ph3$, 1) THEN
CALL centre(23, rougeclair, "Une phrase commence par une
majuscule.")
CALL getinvimouse(r)
GOTO debuttp
ELSEIF RIGHT$(ph3$, 2) <> ". " THEN
CALL centre(23, rougeclair, "Une phrase finit par un point.")
CALL getinvimouse(r)
GOTO debuttp
ELSE
GOTO debuttp
END IF
END IF
NEXT ii '++++++++++++++++++++++
CALL resultats(re, ni, 2)
END SUB
DEFINT A-Z
SUB trouveverbe (re, ni, mottv$(), rt$, gg$, pre$, titr$, noir,
bleu, vert, rouge, marron, blanc, vertclair, cyanclair, rougeclair,
jaune, blancbrill)
'3/3/94
nbeliste = 20
nbeserie = nbeliste / 2
DIM mot$(30, 20), mot2$(20), z(20), sol(20), nbe(20)
re = 0: q = 1
k = 0
FOR i = 1 TO nbeliste
j = 0
DO
j = j + 1: k = k + 1
mot$(i, j) = mottv$(k)
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
'présentation
w$ = "Tu vas devoir trouver le verbe"
z$ = "dans une liste de mots."
CALL consigne(2, w$, z$, y$)
CALL niveau(ni, 2)
IF ni = 1 THEN niv2 = 1 ELSE niv2 = nbeserie + 1
'affectation
bb = 1
FOR boucle = 1 TO nbeserie
'tirage aléatoire des séries
DO
f = 0
z(boucle) = INT(RND * nbeserie) + niv2
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
tv5:
CALL niv(nbeserie, boucle)
CALL cadre(4, 20, 40, 2, marron)
COLOR , marron
CALL centre(5, blancbrill, "Sélectionne le verbe")
'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(8, h, mot2$(), nbemot, r, rouge, 1, 23, 35)
COLOR , noir
LOCATE 22, 1
PRINT SPACE$(80)
PRINT SPACE$(80)
IF r = 0 THEN
CALL quitter(bleu): GOTO tv5
ELSEIF r <> sol(numeroboucle) THEN
erreurs = erreurs + 1
IF erreurs < 3 THEN
CALL erreur2(.4)
CALL centre(23, rougeclair, "Tu ne peux pas " + mot2$(r) + "...")
CALL attendre(3)
LOCATE 23, 1: PRINT SPACE$(80)
ELSE
CALL Solution(mot2$(sol(numeroboucle)))
COLOR , bleu
END IF
END IF
LOOP WHILE r <> sol(numeroboucle)
CALL exact2(.5): IF erreurs = 0 THEN re = re + 1'en fonction du
nombre de série
LOCATE 22: PRINT SPACE$(80)
CALL centre(23, vertclair, mot2$(nbemot + 1))
CALL attendre(3)
bb = bb + 1: IF bb > 3 THEN bb = 1
NEXT boucle
CALL resultats(re, ni, 2)
END SUB
|
DECLARE SUB niv (limit%, xx%)
DECLARE SUB afformate2 (m$(), nm%, v%, h%)
DECLARE SUB quitter (fond%)
DECLARE SUB pleinecran (r$, m$, co%, v1%, v2%)
DECLARE SUB epuration (re$, re2$)
DECLARE SUB afficheformate (m$(), nm%)
DECLARE SUB attendre (tx!)
DECLARE SUB centre (v%, cc%, ph$)
DECLARE SUB entree (x%, y%)
DECLARE SUB erreur2 (tx!)
DECLARE SUB exact2 (tx!)
DECLARE SUB fleches (v%, h%, w$(), np%, r%, coul%, drap%, v2%, h3%)
DECLARE SUB inputgen (nl%, r$, deb%, fin%, x%, y%)
DECLARE SUB ligne23 (x%, y%)
DECLARE SUB niveau (r%, np%)
DECLARE SUB recupere (m$)
DECLARE SUB resultats (re%, ni%, nbniv%)
DECLARE SUB Solution (sol$)
DECLARE SUB titre ()
DECLARE SUB trouvemot (m$, m$(), nm%)
DECLARE SUB cadre (v%, h%, l%, nli%, c%)
DECLARE SUB afformate (m$(), nm%)
DECLARE SUB consigne (nl%, w$, z$, y$)
DECLARE SUB getinvimouse (rr%)
DECLARE SUB ouinon (r$)
DECLARE SUB transforme (m$)
DECLARE SUB deplacemot1 (rr%, nm%, flag%, li%, place%, limax%, m$(),
ligne%())
DECLARE SUB MousePoll (row%, col%, lButton%, rButton%)
'Module 4 exo francais CE
'7/5/96
DEFINT A-Z
SUB cherchemot (re%, ni%, rt$, gg$, gg2$, pre$, titr$, prog%, nom$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%, couleur%)
'20/5/94
DIM m$(200), ligne(10), z(5), ph$(7), ti$(4)
re = 0: ct = 0
ti$(1) = "Le cirque"
ti$(2) = "Les métiers"
ti$(3) = "Le dessin"
ti$(4) = "Le caillou blanc"
ph$(1) = "Vous avez devant vous le cirque le plus grand du monde. Il
y a chez nous les lions les plus méchants, les éléphants les plus
savants et les singes les plus adroits. Nous avons aussi les numéros
les plus nouveaux. "
ph$(1) = ph$(1) + "Nos places ont les prix les plus bas ! On a même
quelques places à offrir ! "
ph$(2) = "L'institutrice demande aux enfants quels métiers ils
aiment le mieux. Ils cherchent un peu, puis donnent leurs avis. Lisa
pense devenir boulangère, Paul, aviateur et Rita, ministre. Enfin,
Marie donne sa réponse. "
ph$(2) = ph$(2) + "Le métier qu'elle désire faire ? Celui de la
maîtresse d'école. "
ph$(3) = "Je vais dessiner un homme. Il aura une grosse tête, des
grands bras et de petites jambes. Il aura aussi des longues dents et
un nez tout rond. Je me demande s'il aura des lunettes. Je vais
aussi lui faire une barbe "
ph$(3) = ph$(3) + "et une moustache pour cacher un peu son visage.
Il sera plus beau comme cela ! "
ph$(4) = "Mélanie avait un secret. Lorsque les choses n'allaient pas
très bien à l'école ou chez elle, elle parlait à son caillou blanc
et lui demandait de l'aide. Le caillou lui répondait toujours et
elle l'écoutait. Quand "
ph$(4) = ph$(4) + "elle pleurait, elle lui expliquait pourquoi elle
avait du chagrin et il la consolait. "
'espace à la fin des phrases ===
'présentation
w$ = "Un mot va être affiché."
z$ = "Tu devras le retrouver dans un texte"
y$ = "le plus rapidement possible."
CALL consigne(3, w$, z$, y$)
'niveau = texte (4)
CALL titre
CALL cadre(7, 25, 30, 2, vert)
COLOR , vert
CALL centre(8, blancbrill, "Choix du texte")
CALL fleches(12, 33, ti$(), 4, ni, rouge, 1, 23, 35)
'affect mots
m$ = ph$(ni)
CLS
re = 0: ct = 0
CALL trouvemot(m$, m$(), nm)
'on teste le nombre de mots dont la long est sup à 4
ll = 0
FOR i = 1 TO nm
IF LEN(m$(i)) > 4 THEN ll = ll + 1
NEXT
'on mémorise les mots à gauche
i = 1: l2 = 0: li = 0
DO
l = LEN(m$(i))
l2 = l2 + l
IF l2 > 80 THEN
i = i - 1: l2 = 0
ELSEIF l2 = 80 THEN
l2 = 0
ELSEIF l2 = 80 - 1 THEN
l2 = 0
ELSE
IF l2 = LEN(m$(i)) THEN li = li + 1: ligne(li) = i
l2 = l2 + 1
END IF
COLOR blancbrill
i = i + 1
LOOP WHILE i <= nm
limax = li
'affichage du texte
CALL titre
CALL afformate2(m$(), nm, 9, 10)
COLOR , noir
CALL centre(23, blanc, "Lis le texte")
CALL getinvimouse(w)
FOR ii = 1 TO 5 '++++++++++++++++++++++++++++++
'tirage
IF ll < 10 THEN
re$ = m$(INT(RND * nm) + 1)
ELSE
DO
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
LOOP WHILE f = 1
re$ = m$(z(ii))
LOOP WHILE LEN(re$) < 5
END IF
'épuration à droite
IF RIGHT$(re$, 3) = "..." THEN
re2$ = MID$(re$, 1, LEN(re$) - 3)
ELSEIF RIGHT$(re$, 2) = ")," OR RIGHT$(re$, 2) = ")." THEN
re2$ = MID$(re$, 1, LEN(re$) - 2)
ELSEIF RIGHT$(re$, 1) = "," OR RIGHT$(re$, 1) = "." OR RIGHT$(re$,
1) = ")" OR RIGHT$(re$, 1) = "'" OR RIGHT$(re$, 1) = CHR$(34) THEN
re2$ = MID$(re$, 1, LEN(re$) - 1)
ELSE
re2$ = re$
END IF
'épuration à gauche de re2$
IF LEFT$(re2$, 1) = "(" OR LEFT$(re2$, 1) = "'" OR LEFT$(re2$, 1) =
CHR$(34) THEN
re2$ = MID$(re2$, 2)
END IF
chemot3:
'affichage du mot signal
CALL titre
CALL cadre(10, INT((80 / 2 + 1) - LEN(re2$) / 2) - 3, LEN(re2$) + 4,
4, rouge)
CALL niv(5, ii)
CALL attendre(.3)
COLOR , rouge
CALL centre(12, blancbrill, re2$)
COLOR , noir
IF ct = 0 THEN
CALL centre(23, blanc, "Lis le mot")
ELSE
CALL centre(23, blanc, "Relis le mot")
END IF
CALL attendre(2)
'affichage du texte
CALL titre
CALL niv(5, ii)
COLOR noir, blanc
VIEW PRINT 8 TO 13: CLS 2
VIEW PRINT
CALL afformate(m$(), nm)
IF ct <> 0 THEN
IF couleur = 1 THEN
COLOR , vertclair: CALL centre(5, blancbrill, " " + re2$ + " ")
ELSE
COLOR , blanc: CALL centre(5, noir, " " + re2$ + " ")
END IF
END IF
COLOR blancbrill, noir: CALL centre(23, blanc, gg2$)
li = 1
place = 1
rr = 0
flag = 1
GOSUB chemotat
DO
ki = 1: l2 = 0: h = 1: v = 9
IF couleur = 1 THEN COLOR noir, vert ELSE COLOR noir, blanc
DO
l = LEN(m$(ki))
l2 = l2 + l
IF l2 > 80 THEN
ki = ki - 1: l2 = 0
h = 1: v = v + 1
IF ki = flag THEN
LOCATE v, h
IF RIGHT$(m$(ki), 1) = "," OR RIGHT$(m$(ki), 1) = "." THEN
PRINT MID$(m$(ki), 1, LEN(m$(ki)) - 1)
ELSE
PRINT m$(ki)
END IF
v2 = v: h3 = h: m2$ = m$(ki)
EXIT DO
END IF
ELSEIF l2 = 80 THEN
l2 = 0
h = 80 - LEN(m$(ki)) + 1
IF ki = flag THEN
LOCATE v, h
IF RIGHT$(m$(ki), 1) = "," OR RIGHT$(m$(ki), 1) = "." THEN
PRINT MID$(m$(ki), 1, LEN(m$(ki)) - 1)
ELSE
PRINT m$(ki)
END IF
v2 = v: h3 = h: m2$ = m$(ki)
EXIT DO
END IF
v = v + 1
ELSEIF l2 = 80 - 1 THEN
h = 80 - LEN(m$(ki))
IF ki = flag THEN
LOCATE v, h
IF RIGHT$(m$(ki), 1) = "," OR RIGHT$(m$(ki), 1) = "." THEN
PRINT MID$(m$(ki), 1, LEN(m$(ki)) - 1)
ELSE
PRINT m$(ki)
END IF
v2 = v: h3 = h: m2$ = m$(ki)
EXIT DO
END IF
ELSE
l2 = l2 + 1
h = l2 - LEN(m$(ki))
IF ki = flag THEN
LOCATE v, h
IF RIGHT$(m$(ki), 1) = "," OR RIGHT$(m$(ki), 1) = "." THEN
PRINT MID$(m$(ki), 1, LEN(m$(ki)) - 1)
ELSE
PRINT m$(ki)
END IF
v2 = v: h3 = h: m2$ = m$(ki)
EXIT DO
END IF
END IF
ki = ki + 1
LOOP WHILE ki <= nm
GOSUB chemotat1
IF souris = 1 THEN EXIT DO
CALL deplacemot1(rr, nm, flag, li, place, limax, m$(), ligne())
IF rr = 13 THEN res$ = m$(flag): EXIT DO
COLOR noir, blanc '===
LOCATE v2, h3: PRINT m2$
LOOP
CALL ligne23(noir, noir)
IF temps >= 30 THEN
ct = ct + 1
BEEP
CALL centre(23, rougeclair, " Trop lent ! "): CALL attendre(1.5)
IF ct < 2 THEN GOTO chemot3
GOSUB cherchesol
GOTO chemot4
END IF
IF re$ <> res$ AND re2$ <> res$ THEN
ct = ct + 1
CALL ligne23(noir, noir)
CALL erreur2(.7)
IF ct < 2 THEN GOTO chemot3
GOSUB cherchesol
ELSE
IF temps >= 20 THEN
CALL centre(23, jaune, "Exact mais trop lent !"): CALL attendre(1.8)
IF ct = 0 THEN re = re + 1
ELSE
CALL exact2(.7)
IF ct = 0 THEN re = re + 2
IF ct = 1 THEN re = re + 1
END IF
END IF
chemot4:
ct = 0
NEXT ii '+++++++++++++++++++++++++++++
CALL resultats(re, ni, 4)
EXIT SUB
chemotat:
DEF SEG = 0
POKE 1050, PEEK(1052)
DEF SEG
duree = 30
depart = VAL(RIGHT$(TIME$, 2))
IF depart < 60 - duree THEN
fin = duree + depart
ELSE
fin = duree + depart - 60
END IF
RETURN
chemotat1:
DEF SEG = 0
POKE 1050, PEEK(1052)
DEF SEG
CALL cadre(4, 75, 2, 2, rouge)
COLOR blancbrill, rouge
souris = 0
DO
seconde = VAL(RIGHT$(TIME$, 2))
IF seconde >= depart THEN
temps = -(depart - seconde)
ELSE
temps = 60 - depart + seconde
END IF
IF temps < 10 THEN LOCATE 5, 77 ELSE LOCATE 5, 76
PRINT LTRIM$(STR$(temps))
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 >= 9 AND v_mouse <= 19 THEN
sc = SCREEN(v_mouse, h_mouse)
IF sc = 32 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 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 THEN EXIT DO
mot$ = mot$ + CHR$(sc)
h3 = h3 + 1
LOOP WHILE h3 <> 81
souris = 1
COLOR noir, blanc
CALL epuration(mot$, res$)
CALL afformate(m$(), nm)
LOCATE v_mouse, h1
IF couleur = 1 THEN COLOR noir, vert ELSE COLOR noir, blanc
PRINT mot$
CALL attendre(.3)
EXIT DO
END IF
ELSEIF v_mouse = 23 THEN
IF h_mouse >= 46 AND h_mouse <= 48 THEN
r$ = CHR$(13)
CALL attendre(.3)
ELSEIF h_mouse = 33 THEN
'haut
rr = 72
CALL attendre(.2)
souris = 2
ELSEIF h_mouse = 35 THEN
'bas
rr = 80
CALL attendre(.2)
souris = 2
ELSEIF h_mouse = 37 THEN
'gauche
rr = 75
CALL attendre(.2)
souris = 2
ELSEIF h_mouse = 39 THEN
'droite
rr = 77
CALL attendre(.2)
souris = 2
ELSE
BEEP
END IF
ELSE
BEEP
END IF
END IF
IF r$ = CHR$(13) OR r$ = CHR$(27) THEN EXIT DO
IF LEN(r$) = 2 OR souris = 2 THEN EXIT DO
LOOP WHILE seconde <> fin
IF souris = 1 OR souris = 2 THEN RETURN
IF temps >= 30 THEN
rr = 13
RETURN
END IF
IF LEN(r$) < 2 THEN
IF ASC(r$) = 13 THEN
rr = 13
RETURN
ELSEIF ASC(r$) = 27 THEN
rr = 27
RETURN
ELSE
GOTO chemotat1
END IF
END IF
rr = ASC(RIGHT$(r$, 1))
RETURN
cherchesol:
LOCATE 23, 1: PRINT SPACE$(80)
BEEP
CALL centre(23, rougeclair, "Solution")
IF souris = 0 THEN
COLOR noir, blanc: LOCATE v2, h3: PRINT m2$
END IF
ki = 1: l2 = 0: h = 1: v = 9
IF couleur = 1 THEN COLOR blancbrill, rouge ELSE COLOR noir, blanc
DO
l = LEN(m$(ki))
l2 = l2 + l
IF l2 > 80 THEN
ki = ki - 1: l2 = 0
h = 1: v = v + 1
IF m$(ki) = m$(z(ii)) THEN
LOCATE v, h
IF RIGHT$(m$(ki), 1) = "," OR RIGHT$(m$(ki), 1) = "." THEN
PRINT MID$(m$(ki), 1, LEN(m$(ki)) - 1)
ELSE
PRINT m$(ki)
END IF
EXIT DO
END IF
ELSEIF l2 = 80 THEN
l2 = 0
h = 80 - LEN(m$(ki)) + 1
IF m$(ki) = m$(z(ii)) THEN
LOCATE v, h
IF RIGHT$(m$(ki), 1) = "," OR RIGHT$(m$(ki), 1) = "." THEN
PRINT MID$(m$(ki), 1, LEN(m$(ki)) - 1)
ELSE
PRINT m$(ki)
END IF
EXIT DO
END IF
v = v + 1
ELSEIF l2 = 80 - 1 THEN
h = 80 - LEN(m$(ki))
IF m$(ki) = m$(z(ii)) THEN
LOCATE v, h
IF RIGHT$(m$(ki), 1) = "," OR RIGHT$(m$(ki), 1) = "." THEN
PRINT MID$(m$(ki), 1, LEN(m$(ki)) - 1)
ELSE
PRINT m$(ki)
END IF
EXIT DO
END IF
ELSE
l2 = l2 + 1
h = l2 - LEN(m$(ki))
IF m$(ki) = m$(z(ii)) THEN
LOCATE v, h
IF RIGHT$(m$(ki), 1) = "," OR RIGHT$(m$(ki), 1) = "." THEN
PRINT MID$(m$(ki), 1, LEN(m$(ki)) - 1)
ELSE
PRINT m$(ki)
END IF
EXIT DO
END IF
END IF
ki = ki + 1
LOOP WHILE ki <= nm
CALL getinvimouse(w)
RETURN
END SUB
DEFINT A-Z
SUB conjugaison (re%, ni%, pp$(), etre$(), avoir$(), aller$(),
marcher$(), finir$(), rt$, gg$, pre$, titr$, prog%, nom$, noir%,
bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
'28/1/96
DIM verbe$(5), temps$(4), rep$(6)
res! = 1
verbe$(1) = "être"
verbe$(2) = "avoir"
verbe$(3) = "aller"
verbe$(4) = "marcher"
verbe$(5) = "finir"
temps$(1) = "présent"
temps$(2) = "imparfait"
temps$(3) = "passé composé"
temps$(4) = "futur"
'choix du verbe
CALL titre
CALL cadre(7, 25, 30, 2, vert)
COLOR , vert
CALL centre(8, blancbrill, "Choix du verbe")
CALL fleches(12, 37, verbe$(), 5, verbe, rouge, 1, 23, 35)
'choix du temps
CALL titre
CALL cadre(7, 25, 30, 2, vert)
COLOR , vert
CALL centre(8, blancbrill, "Choix du niveau")
CALL fleches(12, 34, temps$(), 4, temps, rouge, 1, 23, 35)
ni = temps
'exemple
CALL titre
IF temps = 2 THEN w$ = " à l'" ELSE w$ = " au "
CALL cadre(4, 20, 40, 2, vert)
COLOR , vert
CALL centre(5, blancbrill, "Verbe " + verbe$(verbe) + w$ +
temps$(temps))
FOR i = 1 TO 6
SELECT CASE verbe
CASE 1
rep$(i) = etre$(i, temps)
CASE 2
rep$(i) = avoir$(i, temps)
CASE 3
rep$(i) = aller$(i, temps)
CASE 4
rep$(i) = marcher$(i, temps)
CASE 5
rep$(i) = finir$(i, temps)
END SELECT
NEXT i
'tester si j'
IF LEFT$(rep$(1), 1) = "a" OR LEFT$(rep$(1), 1) = "é" OR
LEFT$(rep$(1), 1) = "i" THEN
pp$(1) = "j'"
ELSE
pp$(1) = "je "
END IF
'changer pour elles si pas passé composé
IF temps <> 3 THEN
pp$(6) = "elles "
END IF
CALL cadre(7, 25, 30, 12, blanc)
COLOR noir, blanc
LOCATE 8, , 0
FOR i = 1 TO 6
LOCATE , 33: PRINT pp$(i); rep$(i)
PRINT
NEXT i
COLOR , noir
CALL centre(23, blanc, "Mémorise")
CALL getinvimouse(w)
CALL cadre(7, 25, 30, 12, blanc)
COLOR noir, blanc
LOCATE 8
FOR i = 1 TO 6
LOCATE , 33: PRINT pp$(i); SPACE$(12)
PRINT
NEXT i
v = 8
FOR ii = 1 TO 6
CALL niv(6, ii)
cts1:
COLOR , noir
LOCATE 23: PRINT SPACE$(80)
CALL centre(23, blanc, "Tape la réponse")
COLOR noir, blanc
LOCATE v, 33: PRINT pp$(ii);
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &HBF) 'minus
DEF SEG
CALL inputgen(17, r$, 32, 151, noir, blanc)
'attention au féminin pour le passé composé
'verbe 3 (aller) temps 3
IF verbe = 3 AND temps = 3 THEN
IF ii = 1 AND r$ = "suis allée" THEN
r$ = rep$(1)
ELSEIF ii = 2 AND r$ = "es allée" THEN
r$ = rep$(2)
ELSEIF ii = 4 AND r$ = "sommes allées" THEN
r$ = rep$(4)
ELSEIF ii = 5 AND r$ = "êtes allées" THEN
r$ = rep$(5)
END IF
END IF
LOCATE 23: COLOR , noir
IF r$ = rep$(ii) THEN
CALL exact2(.7)
IF cc = 0 THEN res! = res! + 1.5
ELSE
IF LEFT$(rep$(ii), 4) = "êtes" AND (LEFT$(r$, 4) = "etes" OR
LEFT$(r$, 4) = "ètes" OR LEFT$(r$, 4) = "étes") THEN
BEEP
CALL centre(23, rougeclair, "Tu dois taper l'accent circonflexe...")
CALL centre(22, jaune, "ê -> touches ^ puis e")
CALL attendre(1.5)
GOTO cts1
END IF
cc = cc + 1
IF cc < 2 THEN
CALL erreur2(.7)
GOTO cts1
ELSE
CALL Solution(rep$(ii))
GOTO cts1
END IF
END IF
cc = 0
v = v + 2
NEXT ii
re = INT(res!)
CALL resultats(re, ni, 4)
END SUB
DEFINT A-Z
SUB deplacemot1 (rr, nm, flag, li, place, limax, m$(), ligne())
'25/2/96
'saisie déplacement mot dans texte en restant dans même colonne
'flag indique la position du mot dans le texte
'place indique la position du mot dans la ligne
'li indique la ligne
'ligne(li) indique le nombre du 1° mot de la ligne li
'ligne(li+1) - ligne(li) donne le nombre de mot pour la ligne li
'sauf pour la dernière : nm -ligne(li) +1
SELECT CASE rr
CASE 27
CALL quitter(noir)
CASE 77 'droite
flag = flag + 1
IF flag > nm THEN
flag = nm: BEEP
ELSEIF flag = ligne(li + 1) THEN
li = li + 1: IF li > limax THEN li = limax
END IF
place = flag - ligne(li) + 1
CASE 75 'gauche
flag = flag - 1
IF flag = 0 THEN
flag = 1: BEEP
ELSEIF flag < ligne(li) THEN
li = li - 1: IF li < 1 THEN li = 1
END IF
place = flag - ligne(li) + 1
CASE 72 'haut
IF li = 1 THEN
BEEP
ELSE
li = li - 1
'si place est sup aux nombres de mots de la ligne de dessus
IF place > ligne(li + 1) - ligne(li) THEN
place = ligne(li + 1) - ligne(li)
END IF
flag = ligne(li) + place - 1
IF flag < 1 THEN flag = 1
END IF
CASE 80 'bas
IF li = limax THEN
BEEP
ELSE
li = li + 1
'si place est sup aux nombres de mots de la ligne de dessous
IF ligne(li + 1) <> 0 THEN
IF place > ligne(li + 1) - ligne(li) THEN
place = ligne(li + 1) - ligne(li)
END IF
ELSE
'calcul sur la dernière ligne
IF place > nm - ligne(li) + 1 THEN
place = (nm - ligne(li)) + 1
END IF
END IF
flag = ligne(li) + place - 1
IF flag > nm THEN flag = nm
END IF
CASE 13
EXIT SUB
CASE ELSE
BEEP
END SELECT
END SUB
DEFINT A-Z
SUB espace (re%, ni%, te$(), tit$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
'10/2/97
DIM m$(160), m2$(160), pp$(2)
er = 0
tit$(1) = "PIERRE" '===
'présentation
w$ = "Dans un texte, les espaces entre les"
z$ = "mots vont être supprimés."
CALL consigne(2, w$, z$, y$)
'choix du texte
CALL titre
CALL cadre(7, 25, 30, 2, vert)
COLOR , vert
CALL centre(8, blancbrill, "Choix du texte")
COLOR blancbrill, bleu
CALL fleches(12, 34, tit$(), 4, ni, rouge, 1, 23, 35)
m$ = te$(ni)
m2$ = m$
CALL titre
CALL trouvemot(m$, m$(), nm)
CALL afformate2(m$(), nm, 11, 10)
COLOR , noir
CALL centre(23, blanc, "Lis ce texte")
m$ = ""
FOR i = 1 TO nm
m$ = m$ + m$(i)
NEXT
CALL getinvimouse(w)
debespace:
CALL titre
CALL niv(1, 1)
DO
CALL pleinecran(r$, m$, 80, 11, 15)
IF r$ = CHR$(27) THEN CALL quitter(noir)
LOOP WHILE r$ = CHR$(27)
CALL recupere(m$)
CALL titre
COLOR , bleu
CALL transforme(m$)
CALL trouvemot(m$, m$(), nm)
FOR i = 1 TO nm
l = LEN(m$(i))
IF l > 39 THEN
BEEP: LOCATE , , 0: COLOR , noir
CALL centre(23, rougeclair, "Tu n'as pas fait assez d'espaces !")
CALL getinvimouse(r)
GOTO debespace
END IF
NEXT i
'LOCATE 11
CALL afformate2(m$(), nm, 11, 10)
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
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80): LOCATE 23, 1
IF flag = 0 THEN GOTO debespace
IF m$ = m2$ THEN
CALL exact2(1)
IF er = 0 THEN
re = 10
ELSEIF er = 1 THEN
re = 9
END IF
ELSE
CALL erreur2(1)
er = er + 1
IF er > 1 THEN
'solution
CALL titre
CALL trouvemot(m2$, m2$(), nm)
COLOR , bleu
CALL centre(5, rougeclair, "Compare les textes")
COLOR noir, blanc: VIEW PRINT 8 TO 11: CLS 2: VIEW PRINT
LOCATE 9, , 0: CALL afficheformate(m2$(), nm)
COLOR rouge, bleu: LOCATE 13: PRINT STRING$(80, CHR$(196))
CALL trouvemot(m$, m$(), nm)
COLOR blancbrill, rouge: VIEW PRINT 15 TO 18: CLS 2: VIEW PRINT
LOCATE 16, , 0
CALL afficheformate(m$(), nm)
COLOR rougeclair, noir
'calcul de la note sur la longueur et les mots juste à partir du
début
ecart = ABS(LEN(m$) - LEN(m2$))
FOR i = 1 TO nm
IF m2$(i) <> m$(i) THEN note = (i / nm) * 10: EXIT FOR
NEXT
IF note >= 7 AND ecart <= 2 THEN
re = 7
ELSEIF note >= 5 AND ecart <= 3 THEN
re = 6
ELSE
re = 4
END IF
CALL entree(noir, noir)
ELSE
CALL titre
CALL trouvemot(m2$, m$(), nm)
CALL afformate2(m$(), nm, 11, 10)
COLOR , noir
CALL centre(23, blanc, "Relis le texte")
CALL getinvimouse(w)
GOTO debespace
END IF
END IF
tit$(1) = "PIERRE (en majuscules)" '===
CALL resultats(re, ni, 4)
END SUB
DEFINT A-Z
SUB femin (re%, ni%, ma$(), fe$(), rt$, gg$, pre$, titr$, prog%,
nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
'22/1/97
DIM z(5)
re = 0: cc = 0
'présentation
w$ = "Tu vas taper des noms au féminin."
CALL consigne(1, w$, z$, y$)
'niveau
CALL niveau(ni, 3)
IF ni = 1 THEN
debut = 1: fin = 10
ELSEIF ni = 2 THEN
debut = 11: fin = 20
ELSE
debut = 21: fin = 33
END IF
CALL titre
IF ni = 3 THEN
CALL cadre(5, 22, 34, 14, rouge)
COLOR , rouge
LOCATE 6
ELSE
CALL cadre(7, 22, 34, 11, rouge)
COLOR , rouge
LOCATE 8
END IF
FOR i = debut TO fin
COLOR blancbrill
LOCATE , 26: PRINT ma$(i); " "; CHR$(26);
LOCATE , 45: COLOR jaune: PRINT fe$(i)
NEXT
COLOR , noir
CALL centre(23, blanc, "Mémorise")
CALL getinvimouse(r)
FOR ii = 1 TO 5 '++++++++++++
DO
f = 0
IF ni = 1 THEN
z(ii) = INT(RND * 10) + 1
ELSEIF ni = 2 THEN
z(ii) = INT(RND * 10) + 11
ELSE
z(ii) = INT(RND * 13) + 21
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)
CALL titre
CALL niv(5, ii)
CALL cadre(8, 15, 18, 2, vert)
CALL cadre(8, 47, 18, 2, vert)
COLOR blancbrill, vert
LOCATE 9, 17: PRINT "Masculin"
LOCATE 9, 49: PRINT "Féminin"
CALL cadre(11, 15, 18, 4, rouge)
CALL cadre(11, 47, 18, 4, blanc)
LOCATE 13, 17
COLOR blancbrill, rouge: PRINT "un "; ma$(k)
fe0:
COLOR , noir
LOCATE 23, 1: PRINT SPACE$(80)
CALL centre(23, blanc, "Tape le mot")
COLOR noir, blanc
LOCATE 13, 49
PRINT "une ";
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &HBF) 'minus
DEF SEG
CALL inputgen(11, r$, 65, 165, noir, blanc)
COLOR , noir
LOCATE 23: PRINT SPACE$(80)
IF r$ = fe$(k) THEN
CALL exact2(1)
IF cc = 0 THEN re = re + 2
ELSE
IF r$ = "maitresse" AND fe$(k) = "maîtresse" THEN
BEEP
CALL centre(23, rougeclair, "Tu dois taper l'accent circonflexe...")
CALL centre(22, jaune, "î -> touches ^ puis i")
CALL attendre(1.5)
GOTO fe0
END IF
cc = cc + 1
IF cc < 2 THEN
CALL erreur2(1)
ELSE
CALL Solution(fe$(k))
END IF
GOTO fe0
END IF
cc = 0
NEXT ii '++++++++++++++
CALL resultats(re, ni, 3)
END SUB
DEFINT A-Z
SUB infinitif (re%, ni%, inf$(), conj$(), rt$, gg$, pre$, titr$,
prog%, nom$, noir%, bleu%, vert%, rouge%, marron%, blanc%,
vertclair%, cyanclair%, rougeclair%, jaune%, blancbrill%)
'28/1/96
DIM k(20), z(5)
nf = 15: re = 0
'présentation
w$ = "Tu vas taper l'infinitif d'un verbe."
CALL consigne(1, w$, z$, y$)
'niveau
CALL niveau(ni, 2)
IF ni = 1 THEN
debut = 1: fin = 15
ELSE
debut = 16: fin = 30
END IF
CALL titre
CALL cadre(4, 22, 34, 16, rouge)
COLOR , rouge
LOCATE 5
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)
FOR ii = 1 TO 5 '+++++++++
DO
f = 0
IF ni = 1 THEN
z(ii) = INT(RND * nf) + 1
ELSE
z(ii) = INT(RND * nf) + 16
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)
CALL titre
CALL niv(5, ii)
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)
inf0:
CALL ligne23(noir, noir)
CALL centre(23, blanc, "Tape le verbe")
COLOR noir, blanc
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &HBF) 'minus
DEF SEG
LOCATE 13, 49
CALL inputgen(11, r$, 65, 165, noir, blanc)
CALL ligne23(noir, noir)
IF r$ = inf$(k) THEN
CALL exact2(1)
IF cc = 0 THEN re = re + 2
ELSE
IF (r$ = "etre" OR r$ = "ètre" OR r$ = "étre") AND inf$(k) = "être"
THEN
BEEP
CALL centre(23, rougeclair, "Tu dois taper l'accent circonflexe...")
COLOR , bleu
CALL centre(18, jaune, "ê -> touches ^ puis e")
CALL attendre(2)
GOTO inf0
END IF
cc = cc + 1
IF cc < 3 THEN
IF cc = 1 THEN
CALL erreur2(1)
ELSE
CALL centre(23, rougeclair, "Aide : " + MID$(inf$(k), 1,
LEN(inf$(k)) - 2) + "..")
CALL attendre(1.5)
END IF
ELSE
CALL Solution(inf$(k))
END IF
GOTO inf0
END IF
cc = 0
NEXT ii '++++++++++++
CALL resultats(re, ni, 2)
END SUB
DEFINT A-Z
SUB nature (re%, ni%, m$(), rt$, gg$, pre$, titr$, prog%, nom$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
'4/5/94
DIM p$(5), z(10), mot$(20)
p$(1) = "verbe"
p$(2) = "nom": p$(3) = "adjectif qualificatif": p$(4) =
"déterminant"
p$(5) = "pronom personnel"
nf = 25
'+++++++++++++++
DIM s(20), ph$(10), m2$(20), z2(5), ph3$(10)
ph$(1) = "Un gros avion vole dans le ciel. " 'espace à la fin
ph3$(1) = "4321042"
ph$(2) = "Il lit un livre amusant. "
ph3$(2) = "51423"
ph$(3) = "La poule blanche couve ses oeufs. "
ph3$(3) = "423142"
ph$(4) = "Dans la cour, le petit enfant joue. "
ph3$(4) = "0424321"
ph$(5) = "Elle chante une jolie chanson. "
ph3$(5) = "51432"
ph$(6) = "Le gros chien aboie dans sa niche. "
ph3$(6) = "4321042"
ph$(7) = "Ce matin, tu bois ton lait chaud. "
ph3$(7) = "4251423"
ph$(8) = "Il attrape son meilleur camarade. "
ph3$(8) = "51432"
ph$(9) = "Cet enfant a les yeux bleus. "
ph3$(9) = "421423"
ph$(10) = "Nous dessinons un magnifique dessin. "
ph3$(10) = "51432"
'l$ = STRING$( 238)
l$ = STRING$(196, 80)
CALL niveau(ni, 2)
IF ni = 1 THEN
GOSUB nature1
ELSE
GOSUB nature2
END IF
CALL resultats(re, ni, 2)
EXIT SUB
nature1:
w$ = "L'ordinateur va afficher une phrase."
z$ = "Avec les flèches, tu devras"
y$ = "sélectionner le mot demandé."
CALL consigne(3, w$, z$, y$)
re = 1 'car 9 essais...
FOR ii = 1 TO 3
CALL titre
CALL niv(3, ii)
'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(40 + 1 - (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
'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)
'affichage de la phrase et du curseur
CALL cadre(6, 15, 50, 2, blanc)
COLOR , blanc
CALL centre(7, noir, "Sélectionne un " + p$(nat))
i = 1
DO
COLOR , noir
CALL centre(23, blanc, CHR$(27) + " " + CHR$(26) + " puis " + rt$)
CALL cadre(10, 15, 50, 4, blanc)
COLOR , blanc
CALL centre(12, noir, ph$)
CALL centre(13, noir, SPACE$(38))
COLOR blancbrill, 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)
COLOR , noir
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
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(1)
IF c = 0 THEN re = re + 1
EXIT DO
ELSE
c = c + 1
CALL erreur2(1)
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)
CASE 13
'voir le mot selectionné
LOCATE 23: PRINT SPACE$(80)
rep = VAL(MID$(ph3$, i, 1))
IF rep = nat THEN
LOCATE 23, 18: CALL exact2(1)
IF c = 0 THEN re = re + 1
EXIT DO
ELSE
c = c + 1
LOCATE 23, 18: CALL erreur2(1)
IF rep <> 0 THEN
COLOR rougeclair
CALL centre(23, rougeclair, "Tu as montré un " + p$(rep))
CALL getinvimouse(w)
LOCATE 23, 1: PRINT SPACE$(80)
COLOR blancbrill
END IF
END IF
CASE ELSE
BEEP
END SELECT
LOOP
NEXT jj
NEXT ii
RETURN
'++++++++++++++
nature2:
w$ = "L'ordinateur va afficher des mots."
z$ = "Avec les flèches, tu devras trouver"
y$ = "la classe de ce mot."
CALL consigne(3, w$, z$, y$)
c = 0: TT = 10
re = 0
FOR ii = 1 TO 10
CALL titre
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)
n$ = MID$(m$(n), 1, LEN(m$(n)) - 1): ret = VAL(RIGHT$(m$(n), 1))
CALL cadre(5, 40 - 12, 25, 4, blanc)
COLOR , blanc
CALL centre(7, noir, n$)
nat1:
COLOR , noir
LOCATE 23: PRINT SPACE$(80)
CALL centre(23, blanc, gg$)
COLOR blancbrill, bleu
CALL fleches(13, 31, p$(), 5, r, rouge, 1, 23, 35)
r = r - 1
COLOR , noir: LOCATE 23, 1: PRINT SPACE$(80)
IF r = ret THEN
CALL exact2(1)
IF cc = 0 THEN re = re + 1
ELSE
cc = cc + 1
IF cc < 3 THEN
CALL erreur2(1)
ELSE
CALL Solution(p$(ret + 1))
END IF
GOTO nat1
END IF
cc = 0
NEXT ii
RETURN
END SUB
DEFINT A-Z
SUB noms (re%, ni%, a$(), rt$, gg$, pre$, titr$, prog%, nom$, noir%,
bleu%, vert%, rouge%, marron%, blanc%, vertclair%, cyanclair%,
rougeclair%, jaune%, blancbrill%)
'10/5/94
DIM p$(4), z(10)
p$(1) = "personne": p$(2) = "animal": p$(3) = "chose": p$(4) =
"autre"
gg = 48: c = 0
'présentation
w$ = "L'ordinateur va afficher des mots."
z$ = "Avec les flèches, tu devras trouver"
y$ = "le groupe du nom."
CALL consigne(3, w$, z$, y$)
'niveau
CALL niveau(ni, 2)
FOR ii = 1 TO 10 '+++++++++++++++
CALL titre
CALL niv(10, ii)
'LOCATE 9: FOR i = 1 TO 5: PRINT SPACE$(20): NEXT
DO
DO
f = 0
z(ii) = INT(RND * gg) + 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)
n$ = MID$(a$(n), 2, LEN(a$(n)) - 1)
b = VAL(LEFT$(a$(n), 1))
LOOP WHILE b = 4 AND ni = 1
CALL cadre(7, 20, 16, 2, marron)
COLOR , marron
LOCATE 8, 22: PRINT "Nom"
CALL cadre(10, 20, 16, 4, blanc)
LOCATE 12, 22: COLOR noir, blanc: PRINT n$
no0:
COLOR blanc, noir
IF ni = 1 THEN
CALL fleches(11, 45, p$(), 3, r, rouge, 1, 23, 45)
ELSE
CALL fleches(10, 45, p$(), 4, r, rouge, 1, 23, 45)
END IF
COLOR , noir
LOCATE 23
IF r = b THEN
CALL exact2(1)
ELSE
cc = cc + 1: IF cc = 1 THEN c = c + 1
IF cc < 3 THEN
CALL erreur2(1)
ELSE
CALL Solution(p$(b))
END IF
GOTO no0
END IF
cc = 0
NEXT ii
re = 10 - c: IF re < 0 THEN re = 0
CALL resultats(re, ni, 2)
END SUB
DEFINT A-Z
SUB pluriel (re%, ni%, n$(), rt$, gg$, pre$, titr$, prog%, nom$,
noir%, bleu%, vert%, rouge%, marron%, blanc%, vertclair%,
cyanclair%, rougeclair%, jaune%, blancbrill%)
'22/5/94
DIM z(5)
re = 0
'présentation
w$ = "Tu vas taper des noms au pluriel."
CALL consigne(1, w$, z$, y$)
CALL titre
LOCATE 4, 10: PRINT "Rappel"
CALL cadre(5, 10, 60, 14, rouge)
COLOR , rouge
CALL centre(7, blancbrill, "Le nom s'accorde avec le déterminant.")
CALL centre(8, blancbrill, "(s, x ou rien)")
h = 28
LOCATE 11
LOCATE , h: PRINT "une bille -> des billes"
LOCATE , h + 9: PRINT CHR$(24); SPACE$(13); CHR$(24)
PRINT
LOCATE , h: PRINT "un jeu -> des jeux"
LOCATE , h + 6: PRINT CHR$(24); SPACE$(11); CHR$(24)
PRINT
LOCATE , h: PRINT "un nez -> des nez"
LOCATE , h + 6: PRINT CHR$(24); SPACE$(11); CHR$(24)
CALL entree(noir, noir)
'niveau
CALL niveau(ni, 2)
IF ni = 1 THEN nf = 19 ELSE nf = 35
FOR ii = 1 TO 5 '+++++++++++++
CALL titre
CALL niv(5, ii)
g = 0
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
b = z(ii)
LOOP WHILE ni = 2 AND b < 16
r$ = n$(b)
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:
COLOR , noir
LOCATE 23: PRINT SPACE$(80)
CALL centre(23, blanc, "Tape le mot")
COLOR noir, blanc
LOCATE 13, 49: PRINT "des ";
DEF SEG = 0
POKE &H417, (PEEK(&H417) AND &HBF) 'minus
DEF SEG
CALL inputgen(13, rp$, 65, 165, noir, blanc)
CALL ligne23(noir, noir)
IF rp$ = w$ THEN
CALL exact2(1)
IF cc = 0 THEN re = re + 2
ELSE
cc = cc + 1
IF cc < 3 THEN
t$ = RIGHT$(rp$, 1)
IF t$ = "x" OR t$ = "s" OR t$ = "z" THEN
CALL erreur2(1)
ELSE
CALL centre(23, rougeclair, "Accord : x, s ou rien")
CALL attendre(2)
END IF
ELSE
CALL Solution(w$)
END IF
GOTO plu1
END IF
cc = 0
NEXT ii '+++++++++
CALL resultats(re, ni, 2)
END SUB
DEFINT A-Z
SUB transforme (m$)
'pour sub espace
'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
|
|