Balle rebondissante
GW-Basic, utilisé par PC-Basic
Programme avec Graphique et Texte
Quand vous pensez à Pong, la simulation de tennis de table d'Atari sui generis, vous visualisez une balle pixelisée rebondissant à gauche et à droite, déviée uniquement par les bords de l'écran et les palettes actionnées par l'utilisateur.
Concentrons-nous sur cette balle qui dévie. BOUNCEB.BAS est une simulation simple d'une petite boule blanche qui ne cesse de bouger et de rebondir aux quatre coins de l'écran, jusqu'à ce que vous appuyiez sur la touche ÉCHAP.
Après avoir construit et peint un cercle blanc à la ligne 60, quatre énoncés conditionnels (voir lignes 80 à 100) testent à plusieurs reprises l'emplacement de la balle électronique, en s'assurant que si elle s'aventure trop en haut, en bas, à gauche ou à droite, le signe de la variable numérique, affectée à A pour le mouvement horizontal et à B pour le mouvement vertical, est commutée.
Changer de signe inverse le chemin horizontal ou vertical (ou les deux) parcouru par la balle en un rien de temps.
Le scintillement qui résulte des CLS récurrents est ennuyeux. Basculer entre les écrans 1 et 2, où les images sont dessinées hors écran avant d'être affichées, atténuerait ce problème.
Ensuite, puisque la physique de la balle correspond principalement à celle de Pong, essayez d'écrire le code d'un jeu de Pong-like : incluez les palettes des joueurs, les tableaux de scores, etc.
Nous examinerons comment exploiter INKEY$ pour contrôler les objets en mouvement à l'écran dans les sections suivants, vous souhaiterez donc peut-être attendre jusque-là.
BOUNCEB.BAS
5 X=350:Y=150:A=7:B=-7
10
KEY OFF:RANDOMIZE TIMER
20 SCREEN 9
30 COLOR 15,1
40 CLS
50
WHILE(INKEY$<>CHR$(27))
60 CIRCLE(X,Y),10:PAINT(X,Y),15,15
65 FOR PAUSE= 1
TO 800:NEXT PAUSE
70 CLS
80 IF (X<10) THEN A=-(A+INT(1+3*RND(1))-2)
90
IF (X>629) THEN A=-(A+INT(1+3*RND(1))-2)
100 IF (Y<10) THEN B=-(B+INT(1+3*RND(1))-2)
110 IF (Y>339) THEN B=-(B+INT(1+3*RND(1))-2)
120 X=X+A
130 Y=Y+B
140
WEND
150 CLS
160 END