BASIC
Présentation de mes logiciels écrits en BASIC : LEAD (Logiciel Évolué d'Affichage de Diviseurs), Lecipe (Logiciel Évolué de Contrôle d'Interface Parallèle Électronique) et Jeu6lettres.
- Parenté :
- Programmation
- BASIC
J'ai écrit ces logiciels en BASIC (Beginner's All-purpose Symbolic Instruction Code).
Ils sont disponibles gratuitement et livrés tel quel. Je ne peux en aucun cas être tenu pour responsable d'éventuels dommages ou dysfonctionnements.
LEAD
LEAD signifie « Logiciel Evolué d'Affichage de Diviseurs »
Présentation
Mon logiciel permet :
- de dire si un nombre est premier
- pour un nombre non-premier :
- de donner la liste de ses diviseurs,
- de dire s'il est parfait (égal à la somme de ses diviseurs sauf lui-même).
- de dire si c'est une puissance, de quel nombre et à quelle puissance.
Il permet de calculer instantanément la liste des diviseurs d'un nombre, ce qui est très utile aux "matheux", par exemple pour le calcul de fractions ou de PGCD.
Il reconnaît tous les nombres entiers entre 1 et 1 000 000 exclus.
Vue d'écran
Code source
10 CLS : LOCATE 1, 15: COLOR 17, 4: PRINT "L.E.A.D. : Logiciel Evolué d'Affichage de Diviseurs" 30 COLOR 15, 0 50 LOCATE 2, 1: INPUT "Entrer un nombre : ", n 60 LOCATE 3, 1: PRINT " " 100 p = n: v = 1: j = 1: l = 4: m = n: w = 0: c = 1: d = 1 140 IF n = 0 OR n - FIX(n) > 0 OR n <= 1 OR n > 999999 THEN BEEP: GOTO 10 150 ON ERROR GOTO 10 190 FOR i = 2 TO (n - 1) 200 z = n MOD i 300 IF z = 0 THEN LOCATE 2, 1: PRINT "Entrer un nombre :"; m: PRINT m; "n'est pas premier. Ses diviseurs sont :": LOCATE l, 1: PRINT i; SPC(45); : n = n / i: a = i: i = 1: l = l + 1: w = w + 1 325 IF z > 0 THEN v = v + 1 340 IF z = 0 AND n = 1 THEN i = m 350 j = j + 1 400 NEXT i 410 FOR e = 2 TO m 415 g = p MOD e 416 IF g = 0 THEN d = d + e 418 IF d = m THEN LOCATE 4, 40: PRINT p; "est parfait." 419 NEXT e 420 x = a ^ w: y = m 450 IF x = y THEN PRINT "soit"; a; "puissance"; w 500 IF v = j THEN CLS : LOCATE 1, 15: COLOR 17, 4: PRINT "L.E.A.D. : Logiciel Evolué d'Affichage de Diviseurs": COLOR 15, 0: LOCATE 2, 1: PRINT "Entrer un nombre :"; m: LOCATE 3, 1: PRINT m; "est un nombre premier.": GOTO 700 700 LOCATE 23, 1: COLOR 28, 1: PRINT "Tapez N pour entrer un nouveau nombre, Q pour quitter, I pour des informations.": COLOR 15, 0 900 LET k$ = INKEY$ 1000 IF k$ = "n" OR k$ = "N" THEN GOTO 10 1050 IF k$ = "i" OR k$ = "I" THEN GOTO 1150 1100 IF k$ = "q" OR k$ = "Q" THEN GOTO 10000 ELSE GOTO 900 1150 c = c + 1: IF c > 14 THEN c = 1: 1200 CLS : COLOR c: PRINT "L.E.A.D. permet d'obtenir la liste des diviseurs d'un nombre compris entre 1 et 1 000 000 exclus."; "Il peut également dire si un nombre est parfait, premier, ou si c'est un carré"; "d'un autre nombre." 1300 PRINT "Ce logiciel a été écrit en QBasic par Peter Potrowl (peter.potrowl AT gmail.com) en mars-avril 2002 et est diffusé sous licence CC-BY-SA-3.0.": COLOR 15 1400 GOTO 700 10000 STOP
Téléchargement
Lecipe
Lecipe signifie « Logiciel Évolué de Contrôle d'Interface Parallèle Électronique »
Ce nom est inspiré de Leucippe est un philosophe grec du Ve siècle avant Jésus-Christ, qui fut un des premiers à penser que la matière était composée d'atomes.
Présentation
Mon logiciel permet :
- de contrôler 8 sorties du port parallèle.
J'ai travaillé sur ce projet de décembre 2001 à fin septembre 2002. Pendant ces 9 mois, j'ai eu l'idée de me servir de mon ordinateur pour piloter mon circuit de trains, j'ai longtemps cherché sur Internet comment contrôler le port parallèle, appris à programmer en Basic, sans cesse amélioré mon interface et mon logiciel (la toute première version, vers le mois d'avril était en noir et blanc) et finalement, ça marche !
Il suffit donc de brancher jusqu'à 8 appareils électriques en sortie de l'interface ci-dessous pour pouvoir les contrôler à l'aide de l'ordinateur.
Explication : selon l'état (0 ou 1) du port parallèle (25 broches) du P.C., la sortie considérée est à 0 ou 5 volts. Lorsque le 5V sort, il arrive sur la résistance puis sur la DEL, qui sert à confirmer la présence du 5V et à éviter tout retour de courant vers l'ordinateur. Le 5V arrive sur la base du transistor qui laisse alors passer le 12V pour alimenter le relais. On peut ainsi mettre en marche ou arrêter l'appareil brancher sur les contacts du relais (lampe, ventilateur, éclairage d'aquarium, mini - chaîne, cafetière électrique...).
Vue d'écran
| Commentaire : dans mon logiciel, écrit en Basic, la « valeur décimale envoyée » correspond à la somme des valeurs attribuées à chacune des sorties.
Dans le cas présenté : A, C, D et G sont en marche. La valeur décimale envoyée est donc : 1+4+8+64=77. |
Code source
1 CLS : OUT (&H378), 0: COLOR 15: a = 0: b = 0: c = 0: d = 0: e = 0: f = 0: g = 0: h = 0 10 LOCATE 1, 5: COLOR 9: PRINT "Logiciel Evolué de Contrôle d'Interface Parallèle Électronique" 15 Locate 2,40: PRINT "Version : 1.10 (16/09/02)": COLOR 15 20 LOCATE 3, 1: PRINT "Tapez ": COLOR 12 25 LOCATE 3, 7: PRINT "Q": COLOR 15 27 LOCATE 3, 9: PRINT "pour quitter." 30 LOCATE 4, 1: PRINT "Tapez les lettres de ": COLOR 12 32 LOCATE 4, 22: PRINT "A": COLOR 15 33 LOCATE 4, 24: PRINT "à": COLOR 12 35 LOCATE 4, 26: PRINT "H": COLOR 15 36 LOCATE 4, 28: PRINT "pour piloter les sorties correspondantes." 37 LOCATE 5, 1: PRINT "Tapez ": COLOR 12 38 LOCATE 5, 7: PRINT "O": COLOR 15 39 LOCATE 5, 9: PRINT "pour remettre toutes les sorties à 0" 40 LOCATE 8, 10: PRINT "Sortie A :" 50 LOCATE 8, 21: IF a = 0 THEN COLOR 12: PRINT "Arrêt ": COLOR 15 ELSE IF a = 1 THEN COLOR 10: PRINT "Marche": COLOR 15 60 LOCATE 9, 10: PRINT "Sortie B :" 70 LOCATE 9, 21: IF b = 0 THEN COLOR 12: PRINT "Arrêt ": COLOR 15 ELSE IF b = 1 THEN COLOR 10: PRINT "Marche": COLOR 15 80 LOCATE 10, 10: PRINT "Sortie C :" 90 LOCATE 10, 21: IF c = 0 THEN COLOR 12: PRINT "Arrêt ": COLOR 15 ELSE IF c = 1 THEN COLOR 10: PRINT "Marche": COLOR 15 100 LOCATE 11, 10: PRINT "Sortie D :" 110 LOCATE 11, 21: IF d = 0 THEN COLOR 12: PRINT "Arrêt ": COLOR 15 ELSE IF d = 1 THEN COLOR 10: PRINT "Marche": COLOR 15 120 LOCATE 12, 10: PRINT "Sortie E :" 130 LOCATE 12, 21: IF e = 0 THEN COLOR 12: PRINT "Arrêt ": COLOR 15 ELSE IF e = 1 THEN COLOR 10: PRINT "Marche": COLOR 15 140 LOCATE 13, 10: PRINT "Sortie F :" 150 LOCATE 13, 21: IF f = 0 THEN COLOR 12: PRINT "Arrêt ": COLOR 15 ELSE IF f = 1 THEN COLOR 10: PRINT "Marche": COLOR 15 160 LOCATE 14, 10: PRINT "Sortie G :" 170 LOCATE 14, 21: IF g = 0 THEN COLOR 12: PRINT "Arrêt ": COLOR 15 ELSE IF g = 1 THEN COLOR 10: PRINT "Marche": COLOR 15 180 LOCATE 15, 10: PRINT "Sortie H :" 190 LOCATE 15, 21: IF h = 0 THEN COLOR 12: PRINT "Arrêt ": COLOR 15 ELSE IF h = 1 THEN COLOR 10: PRINT "Marche": COLOR 15 200 LOCATE 23, 1: PRINT "(c) Peter Potrowl (peter.potrowl AT gmail.com)" 'pas plus de LOCATE 23, sinon, problèmes d'affichage :-D 210 valeursortie = (va + vb + vc + vd + ve + vf + vg + vh) 220 LOCATE 17, 1: PRINT "Valeur décimale envoyée :"; : COLOR 12: LOCATE 17, 27: PRINT valeursortie; " ": COLOR 15 225 LOCATE 19, 1: PRINT "Ce logiciel est diffusé sous la licence CC-BY-SA-3.0. Il est livré tel quel. Je ne peux en aucun cas être tenu pour responsable d'éventuels dysfonctionnements matériels et/ou logiciels et autres plantages..." 230 OUT (&H378), valeursortie 240 LET k$ = INKEY$ 250 IF k$ = "q" OR k$ = "Q" THEN GOTO 1000 260 IF k$ = "a" OR k$ = "A" THEN a = a + 1: GOTO 350 270 IF k$ = "b" OR k$ = "B" THEN b = b + 1: GOTO 370 280 IF k$ = "c" OR k$ = "C" THEN c = c + 1: GOTO 390 290 IF k$ = "d" OR k$ = "D" THEN d = d + 1: GOTO 410 300 IF k$ = "e" OR k$ = "E" THEN e = e + 1: GOTO 430 310 IF k$ = "f" OR k$ = "F" THEN f = f + 1: GOTO 450 320 IF k$ = "g" OR k$ = "G" THEN g = g + 1: GOTO 470 330 IF k$ = "h" OR k$ = "H" THEN h = h + 1: GOTO 490 335 IF k$ = "o" OR k$ = "O" THEN a = 0: b = 0: c = 0: d = 0: e = 0: f = 0: g = 0: h = 0: GOTO 350 340 GOTO 10 350 IF a = 0 OR a = 2 THEN a = 0 ELSE IF a = 1 OR a = 3 THEN a = 1 360 IF a = 0 THEN va = 0 ELSE IF a = 1 THEN va = 1: GOTO 10 370 IF b = 0 OR b = 2 THEN b = 0 ELSE IF b = 1 OR b = 3 THEN b = 1 380 IF b = 0 THEN vb = 0 ELSE IF b = 1 THEN vb = 2: GOTO 10 390 IF c = 0 OR c = 2 THEN c = 0 ELSE IF c = 1 OR c = 3 THEN c = 1 400 IF c = 0 THEN vc = 0 ELSE IF c = 1 THEN vc = 4: GOTO 10 410 IF d = 0 OR d = 2 THEN d = 0 ELSE IF d = 1 OR d = 3 THEN d = 1 420 IF d = 0 THEN vd = 0 ELSE IF d = 1 THEN vd = 8: GOTO 10 430 IF e = 0 OR e = 2 THEN e = 0 ELSE IF e = 1 OR e = 3 THEN e = 1 440 IF e = 0 THEN ve = 0 ELSE IF e = 1 THEN ve = 16: GOTO 10 450 IF f = 0 OR f = 2 THEN f = 0 ELSE IF f = 1 OR f = 3 THEN f = 1 460 IF f = 0 THEN vf = 0 ELSE IF f = 1 THEN vf = 32: GOTO 10 470 IF g = 0 OR g = 2 THEN g = 0 ELSE IF g = 1 OR g = 3 THEN g = 1 480 IF g = 0 THEN vg = 0 ELSE IF g = 1 THEN vg = 64: GOTO 10 490 IF h = 0 OR h = 2 THEN h = 0 ELSE IF h = 1 OR h = 3 THEN h = 1 500 IF h = 0 THEN vh = 0 ELSE IF h = 1 THEN vh = 128: GOTO 10 600 GOTO 10 1000 CLS : OUT (&H378), 0: STOP
Téléchargement
Jeu6Lettres
Présentation
L'ordinateur vous fait deviner un mot de 6 lettres.
L'ordinateur choisit un mot de 6 lettres au hasard dans une liste en contenant environ 300. Vous proposez ensuite des mots de 6 lettres à l'ordinateur pour tenter de deviner le mot. Pour chacun des mots que vous tapez, l'ordinateur écrit le nombre de lettres correctes, jusqu'à ce que vous trouviez le bon mot.
Installation : Il vous suffit juste d'extraire les 2 fichiers (J6l.exe et List.j6l) dans le dossier de votre choix et de créer, sur votre bureau par exemple, un raccourci vers le fichier J6l.exe
Vue d'écran
Cheat codes
Comme la plupart des jeux, il est pourvu de codes de triche. Pour les découvrir, il vous suffit de résoudre les 2 énigmes suivantes :
- La première est une équation (ne pas oublier l'ordre des priorités d'opérations) : 17×5+87-6+52/4+0.5(1-12-91)-3×41-10(31-(6×5+2)+2)
- La seconde est un ensemble de 4 équations. Pour chaque résultat, faire correspondre la lettre correspondante (1:a,2:b...) :
- (3×10-2+V396×V11-268+370)×102-214-28-27-25+4
- 1+2-3+4-5+6-7+8+(-1+2-3+4-5+6)
- (((67×52-263+724×0.05)×10-215)×-1-100)/4-2
- ((((((((((5+3)+0.1)×100)-14)+12)×4)-(35×1.125))×1000-215+1)/101)/10)-0.8
Code source
15 m = 0: OPEN "list.j6l" FOR INPUT AS #1 20 DIM a$(1000) 30 DO 40 LINE INPUT #1, d$ 50 ON ERROR GOTO 85 60 E$ = MID$(d$, 2, 6) 70 a$(m) = E$ 75 m = m + 1 80 LOOP UNTIL (EOF(1)) 85 CLS 90 RANDOMIZE TIMER: c = INT(RND * m) + 1 100 f$ = a$(c) 110 IF LEN(f$) <> 6 THEN GOTO 90 120 COLOR 15: l = 3: v = 0: c = 3 130 DIM t$(6) 140 FOR n = 1 TO 6 150 p$ = MID$(f$, n, 1) 160 t$(n) = p$ 170 NEXT n 175 LOCATE 1, 15: COLOR 1: PRINT "Le jeu des 6 lettres version 1.20": COLOR 15 180 LOCATE 2, 1: PRINT " " 190 LOCATE 2, 1: INPUT "Entrer un mot de 6 lettres (sans majuscule ni accent) ou stop ", b$ 200 IF b$ = "stop" THEN GOTO 320 205 IF b$ = "give" THEN LOCATE 10, 30: PRINT f$ 207 IF b$ = "-5" THEN GOTO 2000 210 IF LEN(b$) <> 6 THEN GOTO 180 220 LOCATE l, c: PRINT b$ 230 FOR w = 1 TO 6 240 q$ = MID$(b$, w, 1) 250 IF q$ = t$(w) THEN v = v + 1 260 NEXT w 270 LOCATE l, c + 10: PRINT v: l = l + 1 280 IF l = 22 AND c = 3 THEN l = 3: c = 30 290 IF v = 6 THEN COLOR 30: LOCATE 22, 17: PRINT "------ Vous avez deviné le mot ! ------": COLOR 15: GOTO 1100 300 IF l >= 22 AND c >= 30 THEN COLOR 14: LOCATE 22, 17: PRINT "Vous avez perdu... Le mot était "; f$: GOTO 320 310 v = 0: GOTO 180 320 LOCATE 23, 1: COLOR 12: PRINT "Q"; : COLOR 15: PRINT "uitter, "; : COLOR 12: PRINT "N"; : COLOR 15: PRINT "ouveau jeu, "; : COLOR 12: PRINT "I"; : COLOR 15: PRINT "nformations, "; : COLOR 12: PRINT "A"; : COLOR 15: PRINT "nnuler " 325 LET k$ = INKEY$ 330 IF k$ = "n" OR k$ = "N" THEN 85 332 IF k$ = "a" OR k$ = "A" THEN LOCATE 23: PRINT " ": GOTO 175 335 IF k$ = "i" OR k$ = "I" THEN 1000 340 IF k$ = "q" OR k$ = "Q" THEN STOP 350 GOTO 325 1000 CLS : PRINT "Ce logiciel est diffusé sous la licence CC-BY-SA-3.0. ": PRINT "Il a été écrit par Peter Potrowl en juillet-août 2002" 1010 LOCATE 23, 1: COLOR 12: PRINT "Q"; : COLOR 15: PRINT "uitter, "; : COLOR 12: PRINT "N"; : COLOR 15: PRINT "ouveau jeu"; 1020 LET k$ = INKEY$ 1030 IF k$ = "n" OR k$ = "N" THEN 85 1040 IF k$ = "q" OR k$ = "Q" THEN STOP 1050 GOTO 1020 1100 LOCATE 23, 1: COLOR 12: PRINT "Q"; : COLOR 15: PRINT "uitter, "; : COLOR 12: PRINT "N"; : COLOR 15: PRINT "ouveau jeu, "; : COLOR 12: PRINT "I"; : COLOR 15: PRINT "nformations" 1110 LET k$ = INKEY$ 1120 IF k$ = "n" OR k$ = "N" THEN 85 1140 IF k$ = "i" OR k$ = "I" THEN 1000 1150 IF k$ = "q" OR k$ = "Q" THEN STOP 1160 GOTO 1110 2000 IF l >= 8 THEN FOR i = 0 TO 5 STEP 1: LOCATE l - i: PRINT " ": NEXT i: l = l - 5 2100 GOTO 180
Téléchargement
Cette page en français a été créée par Peter à partir de connaissances ou expériences personnelles, 15 juin 2001 et modifiée pour la dernière fois 25 août 2020. Son avancement est noté 2/3.