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é :
  1. Programmation
  2. 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 :

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

Informatique : LEAD : 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 (peter017 @ 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

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 :

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.

Informatique : Lecipe : schéma général.

Informatique : Lecipe : détail d'une sortie.

Informatique : Lecipe : schéma du port parallèle. Les sorties considérées sont colorées.

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

Informatique : Lecipe : une vue d'écran.

SortieArrêtMarche
A01
B02
C04
D08
E016
F032
G064
H0128
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.

[Cliquez pour agrandir : 89 Kio] Informatique - Lecipe : le montage électronique, avec 4 sorties fonctionnelles.

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 (peter017@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

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

Informatique : Jeu6lettres : 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 :

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

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.