Maths, Informatique, Jeux
Site Web réalisé par Frédéric et François WANG
Répertoire principalInformatiqueProgrammationCodes sourceMini programmes BASIC

Introduction

Cette page comporte les codes sources de plusieurs petits programmes BASIC. Pour les débutants en programmation, un petit questionnaire ludique permet de voir si vous avez réussi à comprendre chaque programme sans l'avoir exécuter auparavant. Enfin, une explication est donnée sur les principale fonction du programme.

Télécharger les sources (mini_programmes.zip, 125 ko)

MUSIQUE.BAS

Le code source

'MUSIQUE.BAS
'Créé le Samedi 19 octobre par Frédéric WANG.
'Ce petit programme permet de jouer quelques notes de musique.

CLS
PRINT "Appuyer sur a, z, e, r, t, y ou u pour jouer de la musique."
PRINT "Appuyer sur espace pour quitter."
DO
tt$ = INKEY$
FOR a = 1 TO 7
IF tt$ = MID$("azertyu", a, 1) THEN PLAY "L30" + CHR$(64 + a)
NEXT a
LOOP UNTIL tt$ = " "

Mini questionnaire

Le programme s'arrête après l'appuie de la barre d'espacement.
Le programme s'arrête aussi dès qu'il a fini de jouer de la musique.
Le programme joue 7 notes à suivre si on appuie sur une des touches a, z, e, r, t, y ou u.
CHR$ permet de jouer de la musique.
La variable a prend 7 valeurs différentes.
tt$ = INKEY$ dépose la touche appuyée dans la variable tt$.
UNTIL tt$ = " " signifie "tant que l'on appuie sur aucune touche".

Explication

La fonction INKEY$ retourne la touche appuyée. On la dépose dans la variable tt$ pour éviter que son contenu change pendant les tests. La boucle principale DO...LOOP permet d'attendre que l'utilisateur souhaite quitter le programme. Ce dernier boucle jusqu'à ce que l'on appuie sur espace (UNTIL tt$ = " ").

L'association de la boucle FOR a = 1 TO 7 ... NEXT avec MID$ est interessante à étudier. La varible a prends les valeurs entières de 1 à 7. la fonction MID$("azertyu", a, 1) retourne donc chacun des caractères de a, z, e, r, t, y, u et les compare avec tt$ pour savoir si une de ces touches est appuyées.

Enfin, l'instruction PLAY permet de jouer de la musique. "L30" règle la durée des notes jouée tandis que la fonction CHR$(64 + a) retourne une des caractère A, B, C, D, E, F, G qui code chacun pour une note différente.

PALETTE.BAS

Le code source

'PALETTE.BAS
'Créé le Samedi 19 octobre par Frédéric WANG.
'Ce petit programme permet de visualiser toutes les couleurs du QBASIC.

CLS : SCREEN 12
DIM C(3): C$ = "Rouge Vert Bleu"
y = 0: PALETTE 0, 3289650: PALETTE 5, 0
DO
PALETTE 6, C(0) + 256 * C(1) + 65536 * C(2)
LINE (0, 0)-(639, 479), 6, BF
FOR A = 0 TO 2
COLOR 5: LOCATE 12 + A * 2, 30: PRINT " "; CHR$(32 + (A = y) * 16);
COLOR (A = 0) * -4 + (A = 1) * -2 + (A = 2) * -1
PRINT " "; MID$(C$, 1 + A * 5, 5); ":"; C(A); "/ 63"
NEXT A
COLOR 5
LOCATE 19, 25: PRINT "Numéro de la couleur:"; C(0) + 256 * C(1) + 65536 * C(2)
LOCATE 25, 12: PRINT "Changer la couleur avec les flèches et les touches - ou +"
LOCATE 28, 25: PRINT "Appuyer sur espace pour quitter"
DO: tt$ = INKEY$: LOOP WHILE tt$ = ""
IF tt$ = CHR$(0) + "K" AND C(y) > 0 THEN C(y) = C(y) - 1
IF tt$ = CHR$(0) + "M" AND C(y) < 63 THEN C(y) = C(y) + 1
IF tt$ = CHR$(0) + "H" AND y > 0 THEN y = y - 1
IF tt$ = CHR$(0) + "P" AND y < 2 THEN y = y + 1
IF tt$ = "-" THEN C(y) = 0
IF tt$ = "+" THEN C(y) = 63
LOOP UNTIL tt$ = " "

Mini questionnaire

La variable y peut prendre les valeurs 1, 2, 3.
C(0), C(1), C(2) sont les pourcentages respectivement en bleu, vert et rouge de la couleur.
Chacun de ces pourcentages RGB peut prendre des valeurs de 0 à 255.
PALETTE permet de changer les valeurs RGB d'une couleur du QBASIC
LINE (0, 0)-(639, 479), 6, BF trace une ligne en travers de l'écran.
Les touches + et - augmente et diminue de 1 une valeur RGB de la couleurs.
Les touches flèches sont codées par une expression de la forme CHR$(0) + caractère

Explication

L'instruction SCREEN 12 passe en mode graphique pour pouvoir se servir de l'instruction PALETTE. Cette dernière fixe les valeurs RGB de 3 couleurs : la couleur de fond 0 est un gris de valeurs (50,50,50), la couleur d'écriture 5 le noir (0,0,0), et enfin, la couleur observée a pour valeurs (C(0),C(1),C(2))

TOUCHES.BAS

Le code source

'TOUCHES.BAS
'Créé le Samedi 19 octobre par Frédéric WANG.
'Ce petit jeu permet de tester votre agilité au clavier.

RANDOMIZE TIMER
Temps = TIMER
DO
CLS
c$ = CHR$(97 + RND * 25)
LOCATE 2, 1: PRINT "Appuyez sur la touche «"; c$; "»"
LOCATE 1, 15: PRINT "Nombre de points:"; Pts
Sec = 5
DO
LOCATE 1, 1: PRINT "Temps:"; Sec
GOSUB VerifTemps
TT$ = INKEY$
IF TT$ = c$ THEN Pts = Pts + Sec: EXIT DO
LOOP WHILE Sec > 0
LOOP WHILE Sec > 0
CLS
PRINT "Votre score:"; Pts
END

VerifTemps:
IF TIMER - Temps >= 1 THEN Sec = Sec - 1: Temps = TIMER
RETURN

Mini questionnaire

RANDOMIZE TIMER initialise le hasard en fonction du temps

Explication

POURCENT.BAS

Le code source

' POURCENT.BAS (provient du site « Maths, Informatique, Jeux »
'                      http://maths-informatique-jeux.chez-alice.fr)
'
' Programmé le 13 Juillet 2004 par Frédéric WANG (FWSmail35@aol.com)
' Ce programme montre comment faire une barre remplie selon un certain
' pourcentage. Cela peut servir pour comme barre de chargement, de barre de
' de vie de personnage (pour un jeu) ou tout autre barre de ce genre...

SCREEN 13
RANDOMIZE TIMER
longueur% = 200 ' Longueur de la barre
t% = RND * 100  ' Pourcentage de remplissage

DO
  LINE (49, 69)-(51 + longueur%, 81), 39, BF
  IF t% THEN LINE (50, 70)-(50 + longueur% * t% / 100, 80), 43, BF
  LOCATE 12, 10: PRINT USING "Pourcentage : ### %"; t%
  LOCATE 14, 4: PRINT "Réglez le pourcentage avec - et +"
  DO
    tt$ = INKEY$
    IF tt$ = "-" AND t% > 0 THEN t% = t% - 1
    IF tt$ = "+" AND t% < 100 THEN t% = t% + 1
  LOOP WHILE tt$ = ""
LOOP UNTIL tt$ = " "

Mini questionnaire

Explication

HASARD.BAS

Le code source

' HASARD.BAS (provient du site « Maths, Informatique, Jeux »
'                      http://maths-informatique-jeux.chez-alice.fr)
'
' Programmé en 2002 par Frédéric WANG (FWSmail35@aol.com)
' Dernière mise à jour : Mardi 13 Juillet 2004
' Ce programme montre un exemple d'utilisation du hasard.

SCREEN 12
RANDOMIZE TIMER
Deplacement = 25
Eloignement = 220
CIRCLE (320, 240), Eloignement, 14

DO
  LOCATE 1, 1: PRINT "-"; Deplacement; "+"; "    "
  TT$ = INKEY$
  IF TT$ = "*" THEN RUN
  IF TT$ = "+" OR TT$ = "-" THEN Deplacement = Deplacement + 44 - ASC(TT$)
  IF Deplacement < 1 THEN Deplacement = 1
  IF Deplacement > Eloignement THEN Deplacement = Eloignement
  x = x + (RND - .5) * Deplacement
  y = y + (RND - .5) * Deplacement
  DO WHILE SQR((320 - x) ^ 2 + (240 - y) ^ 2) > Eloignement
    x = RND * 640: y = RND * 480
    PSET (x, y), 0
  LOOP
  IF RND * 20 < 1 THEN CC = RND * 6 + 9
  LINE -(x, y), CC
LOOP WHILE TT$ <> " "

Mini questionnaire

Explication

Cette page est conforme aux normes du W3C - Auteur : Frédéric WANG - Dernière mise à jour : mardi 26 octobre 2004
Valid XHTML 1.1 Valid MathML 2.0 Valid SVG Valid CSS Amaya, the W3C browser/editor Déclaration qualité Opquast Foxkeh banners for Firefox 2