Si tu téléphones à une voyante et qu'elle ne décroche pas avant que ça sonne, raccroche.
Magic 500 n'est que le jeu où l'on devine un nombre, après essais successifs (trop grand, trop petit...)
Développé par les membres de Microloges, le club d'informatique de Beaumetz les loges, Magic 500 présente l'interêt d'offrir des sources quickbasic qui peuvent servir d'exemples aux débutants...
Le fichier principal:
DECLARE SUB jeu (moinsbon!)
DECLARE SUB regle ()
DECLARE SUB beethov ()
DECLARE SUB init (e$)
DECLARE SUB texte (a$, li!, co!, couleur!, t$)
DECLARE SUB espace (w!)
DECLARE SUB elise ()
CONST nbnb = 5 'nb de nb à trouver
CONST nbch = 3 'nb de chiffre à trouver
CONST nbenr = 30
TYPE sov
chnom AS STRING * 20
chnbes AS INTEGER
END TYPE
DIM joueur AS sov
joueur.chnom = "Adam"
' Page de garde...
'__________________________________________________
DO
WIDTH 40, 25
CLS
texte "MICRoLoGES", 12, 5, 3, "non"
elise
texte "PRESENTE:", 14, 10, 4, "oui"
CLS
texte " M A G I C 5 0 0", 12, 1, 5, "non"
SLEEP 2
'_______________________________________________
'page 2
WIDTH 80, 50
CLS
OPEN "score.wou" FOR RANDOM AS #1 LEN = LEN(joueur)
i = 1
texte "MEILLEURS SCORES", 1, 25, 2, "non"
texte "NOM", 5, 15, 3, "non"
texte "ESSAIS", 5, 50, 3, "non"
max = LOF(1) / LEN(joueur)
IF max > nbenr THEN max = nbenr
FOR i = 1 TO max
GET #1, i, joueur
LOCATE 7 + i, 2
COLOR 1
PRINT i
LOCATE 7 + i, 15
PRINT joueur.chnom
LOCATE 7 + i, 50
COLOR 5
PRINT joueur.chnbes
NEXT
CLOSE #1
moinsbon = joueur.chnbes
IF moinsbon = 0 OR max < nbenr THEN moinsbon = 9999
LOCATE 50, 35
COLOR 2
PRINT "J";
COLOR 1
PRINT "ouer/";
COLOR 2
PRINT "R";
COLOR 1
PRINT "ègles/";
COLOR 2
PRINT "Q";
COLOR 1
PRINT "uitter";
DO
init e$ 'on initialise la liste de nb aleatoires
LOOP UNTIL INSTR("jJrRqQ", e$) > 0 AND e$ <> ""
SELECT CASE UCASE$(e$)
CASE "J"
jeu moinsbon
CASE "Q"
fin$ = "oui"
CASE "R"
regle
END SELECT
LOOP UNTIL fin$ = "oui"
SUB jeu (moinsbon)
DIM joueur AS sov
DIM j AS sov
CLS
WIDTH 80, 50
BEEP
FOR no = 1 TO nbnb
nbcach = INT(RND * 9 * 10 ^ (nbch - 1)) + 10 ^ (nbch - 1)
DO
essai = essai + 1
PRINT
COLOR 3
PRINT "Encore "; nbnb - no + 1; "nombre";
IF nbnb - no + 1 > 1 THEN PRINT ("s");
PRINT " ...trouver. ";
COLOR 3
PRINT " Essai nø ";
COLOR 4
PRINT essai;
COLOR 3
PRINT " > ";
t = 0
FOR y = 1 TO nbch
t$ = ""
DO
t$ = INKEY$
LOOP UNTIL INSTR("0123456789q", t$) > 0 AND t$ <> ""
IF t$ = "q" THEN STOP
PRINT t$;
t = t * 10 + VAL(t$)
t$ = ""
NEXT y
IF t > nbcach THEN PRINT " trop grand "
IF t < nbcach THEN PRINT " trop petit "
LOOP UNTIL t = nbcach
COLOR 4
PRINT " BRAVO !"
IF no <nbnb THEN elise ELSE beethov
espace (5)
NEXT no
PRINT " Mission accomplie !"
SLEEP 3
' ici on regarde le score et on le sauve si il est bon
IF essai < moinsbon THEN
PRINT " Bravo ! Vous entrez dans le top "; nbenr
PRINT
BEEP
INPUT "Entrez votre nom : "; nom$
OPEN "score.new" FOR RANDOM AS #2 LEN = LEN(joueur)
OPEN "score.wouf" FOR RANDOM AS #1 LEN = LEN(joueur)
ok$ = "non"
i2 = 0
max = LOF(1) / LEN(joueur)
IF max = 0 THEN
ok$ = "oui"
j.chnom = nom$
j.chnbes = essai
i2 = i2 + 1
PUT #2, i2, j
END IF
FOR i = 1 TO max
GET #1, i, joueur
IF (essai < joueur.chnbes OR joueur.chnbes = 0) AND ok$ = "non" THEN
ok$ = "oui"
j.chnom = nom$
j.chnbes = essai
i2 = i2 + 1
PUT #2, i2, j
END IF
i2 = i2 + 1
PUT #2, i2, joueur
NEXT
IF ok$ = "non" THEN
ok$ = "oui"
j.chnom = nom$
j.chnbes = essai
i2 = i2 + 1
PUT #2, i2, j
END IF
CLOSE #2
CLOSE #1
KILL "score.wou"
NAME "score.new" AS "score.wou"
END IF
END SUB
SUB regle
WIDTH 40, 25
CLS
texte "Règles", 5, 10, 5, "non"
texte "du jeu", 5, 23, 5, "oui"
espace (5)
COLOR 4
PRINT "Il s'agit de découvrir ";
PRINT nbnb;
PRINT " nombres cachés en dépensant"
PRINT "le moins d'essais possibles."
PRINT
PRINT " Les nombres sont des entiers de "; nbch; " chiffres"
PRINT
PRINT " plus petit, ou plus grand"
PRINT "seront mes seules indications"
PRINT
texte "BONNE CHANCE", 23, 12, 3, "oui"
LOCATE 25, 10
COLOR 4
PRINT " presser une touche";
SLEEP
END SUB
Et ce fichier externe, comme un "include"...
SUB beethov
ECOUTE$ = "T180 o2 P2 P8 L8 GGG L2 E-"
SUITE$ = "P24 P8 L8 FFF L2 D"
PLAY ECOUTE$ + SUITE$
END SUB
SUB elise
PLAY ON
lise$ = "o3 L8 E D+ E D+ E o2 B o3 D C L2 o2 A"
PLAY "MB X" + VARPTR$(lise$)
END SUB
SUB espace (w)
FOR i = 1 TO w
PRINT
NEXT
END SUB
SUB init (e$)
DO
e$ = INKEY$
z = z + 1
LOOP UNTIL e$ <> ""
RANDOMIZE (z)
END SUB
SUB texte (a$, li, co, couleur, t$)
LOCATE li, co
COLOR couleur
FOR i = 1 TO LEN(a$)
PRINT (MID$(a$, i, 1)); " ";
IF t$ = "oui" THEN SLEEP 1
NEXT
END SUB
Quick Basic est téléchargeable: qb45fr.zip
Un autre exemple sur Wikipedia: Exemple de programme sous Qbasic
(Fin de la trilogie)
Vous avez appris à utiliser find pour scanner votre disque comme un détective. C'est puissant, mais avouons-le : taper des commandes de 30 caractères à chaque fois, c'est long. Et si vous pouviez filtrer vos milliers de fichiers en temps réel, à chaque pression de touche, avec une interface interactive ?
Bienvenue dans le monde de FZF "Fuzzy Finding", l'outil qui va rendre votre terminal plus rapide que votre explorateur de fichiers.

Le Fuzzy Finding (que l’on peut traduire par recherche approximative) désigne une manière intelligente de chercher une information sans exiger une correspondance exacte.
Contrairement à une recherche classique, le fuzzy finding tolère les erreurs, les approximations et les variations d’écriture.
Dans la vraie vie, les utilisateurs :
Le fuzzy finding permet malgré tout de trouver ce qu’ils cherchent.
Recherche classique ❌
Tu cherches
mathématiques
Tu tapesmathematique
→ Aucun résultat
Recherche avec fuzzy finding ✅
mathematique,maths,mathématique
→ Résultats pertinents affichés
Le fuzzy finding repose sur plusieurs idées simples :
L’objectif n’est pas la perfection, mais la pertinence.
Tu l’utilises déjà tous les jours, souvent sans le savoir :
| Recherche exacte | Fuzzy Finding |
|---|---|
| Mot strictement identique | Mot ressemblant |
| Sensible aux fautes | Tolère les erreurs |
| Résultats parfois vides | Résultats utiles |
| Rigide | Intelligent et souple |
Le Fuzzy Finding permet de :
? Ce n’est pas chercher juste, c’est chercher malin.
sudo apt install fzf

Vous avez installé FZF ? Oubliez tout ce que vous savez sur la recherche classique. Ne tapez pas de chemin, ne cherchez pas d'options compliquées.
Tapez simplement ces trois lettres dans votre dossier personnel : fzf
À l'instant où vous appuyez sur Entrée, votre terminal se transforme. Une liste apparaît, et un curseur clignote.
docbre pour chercher Documents/Bretagne).? Pourquoi c'est un "Wow" ? Parce qu'en moins de 2 secondes, vous venez de trouver un fichier caché dans un sous-dossier complexe sans jamais avoir utilisé votre souris, ni même connu l'emplacement exact du document.
C'est ici que la magie opère. En utilisant le Pipe (|), vous envoyez les résultats de vos outils classiques dans l'entonnoir FZF. Voici les deux duos que vous utiliserez tous les jours :
C'est pour qui ? Ceux qui cherchent un fichier précis en éliminant le "bruit" autour.
find . -name "*.jpg" -o -name "*.png" | fzfC'est pour qui ? Ceux qui cherchent une information à l'intérieur des fichiers (une variable, une fonction, une erreur).
grep -rn "votre_recherche" . | fzfgrep récursif vous inonde de lignes de texte illisibles. En l'envoyant dans FZF, vous transformez ce chaos en une liste interactive.-n vous donne même le numéro de la ligne pour savoir où intervenir.| Si vous cherchez... | Utilisez le combo... | Le rôle de FZF ici : |
| Un contenant (Fichier, Image, PDF) | Find + FZF | Filtrer parmi des noms de fichiers. |
| Un contenu (Ligne de code, Texte, Log) | Grep + FZF | Filtrer parmi des lignes de texte. |
Pour maîtriser FZF, il faut comprendre un concept fondamental de Linux : le Pipe (représenté par la barre verticale |).
Imaginez que vos commandes sont des ouvriers spécialisés :
|) sert de tuyau pour déverser cette montagne directement dans l'outil suivant.C'est la nuance la plus importante : FZF n'est pas un moteur de recherche qui fouille votre disque dur de lui-même. C'est un filtre interactif.
find, il vous aidera à en choisir un.cat, il vous aidera à trouver la bonne phrase.FZF prend une sortie textuelle illisible et la transforme en une interface où vous pouvez taper pour choisir. C'est l'outil qui donne un visage humain à la puissance brute de Linux.
Vous voulez modifier un script ou un fichier de configuration, mais vous n'avez pas envie de naviguer dans vos dossiers à la souris ou de taper le chemin complet /home/user/documents/projets/site/index.html ?
Tapez simplement : gnome-text-editor $(fzf)
Si vous gérez un site web (comme site2wouf.fr), vous avez forcément un fichier sitemap.xml qui contient la liste de toutes vos pages. Au lieu de chercher une URL dans votre interface d'administration, utilisez FZF !
Tapez cette commande magique : xdg-open $(grep -oP 'https?://[^<]+' sitemap.xml | fzf)
<loc>, <url>, etc.? Pourquoi c'est brillant ? Vous venez de transformer un fichier technique illisible en un menu de navigation ultra-rapide pour votre propre site.
"Note : Si votre terminal affiche des messages bizarres (Gtk-Message) au lancement, c'est tout à fait normal. C'est juste Ubuntu qui bavarde.
...
Si vous voulez approfondir votre maîtrise de FZF et de la ligne de commande, voici les ressources indispensables :
Vous trouvez ces commandes géniales mais un peu longues à mémoriser ? Vous avez raison. Dans le monde Linux, on ne tape jamais deux fois la même chose.
Imaginez qu'au lieu de taper xdg-open $(grep -oP 'https?://[^<]+' sitemap.xml | fzf), vous n'ayez qu'à taper un seul mot : map. Ou juste fe pour ouvrir votre éditeur de texte préféré via FZF.
C'est ce qu'on appelle les Alias.
Dans mon prochain article, je vous montrerai comment personnaliser votre fichier .bashrc pour créer vos propres raccourcis "magiques". Nous transformerons ces combinaisons complexes en commandes ultra-courtes pour faire de vous un véritable sprinter du clavier.
Connaissez-vous OOO?.
Open Office (.Org) est une suite bureautique pleine d'avenir, avec déjà un passé riche.
Traitement de texte, tableur, gestionnaire de base de données, etc... Rien ne manque!
Open office est indispensable, un lien vers le site de téléchargement est bien rangé, dans la boite à outil du menu "Informatique".