Le jeu de cible
GW-Basic, utilisé par PC-Basic
Programme avec Graphique et Texte
Après avoir saisi le mot de passe – c'est simplement q.
Le principe est simple : pendant trois étapes, vous devez déplacer votre réticule (à l'aide du clavier numérique) vers le centre de la cible, là où elle se trouve à l'écran.
Vous disposez de très peu de temps pour le faire : vous manquez de temps et le jeu redémarre à la première étape.
Bien que le code pour TARGET.BAS est long, ce n'est pas particulièrement compliqué.
De nombreuses lignes sont consacrées à l'affichage de graphiques et sont donc remplies d'instructions PSET, DRAW et CIRCLE.
Les lignes 5 à 8 définissent les coordonnées des cibles pour chaque étape à l'aide de deux tableaux : un pour x et un pour y.
Après avoir affiché quelques graphiques sur l'écran de saisie du mot de passe, les animations d'ouverture sont affichées.
Finalement, il vous est demandé de définir votre niveau de jeu : facile, moyen ou difficile.
Plus le niveau est difficile, plus le temps limite des étapes est court. Voir les lignes 410 à 440 pour les détails.
Une fois que les étapes chronométrées commencent, le programme doit constamment vérifier trois choses :
(1) la direction dans laquelle vous déplacez le réticule ;
(2) Que le réticule reste dans une plage étroite à l'écran (c'est-à-dire, vérification des erreurs) ;
et (3) Si, lorsque la gâchette a été appuyée, le réticule était juste au-dessus de la cible (c'est-à-dire un tir réussi).
INKEY$, bien sûr, prend en compte toutes les données du clavier et les instructions conditionnelles effectuent les analyses (lisez attentivement les lignes 550 à 750 pour voir).
Les lignes de code restantes s'occupent des animations qui déplacent le réticule hors de l'écran, déclarent la partie terminée et attribuent la victoire au joueur.
TARGET.BAS pourrait devenir une expérience beaucoup plus frustrante et mordante si les cibles elles-mêmes étaient situées au hasard à l'écran ou déplacées indépendamment pendant que le joueur courait pour aligner la ligne de mire.
Mettez-vous au travail !
TARGET.BAS
5 DIM TARGETX(3):DIM TARGETY(3)
6 TARGETX(1)=150:TARGETY(1)=100 'STAGE 1
7 TARGETX(2)=170:TARGETY(2)=80
'STAGE 2
8 TARGETX(3)=200:TARGETY(3)=150 'STAGE 3
10 SCREEN 7:COLOR
15,8:CLS
11 PSET(0,185),8
12 DRAW"R320 D1 L320 D1 R320 D1 L320 D1 R320 D1
L320 D1 R320 D1 L320 D1 R320 D1 L320 D1 R320 D1 L320 D1 R320 D1 L320
14
PRINT:PRINT:PRINT" QUEL EST LE "
15 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:
PRINT:PRINT:PRINT:PRINT:PRINT" Mot De Passe":COLOR 15
20 PSET(50,30):DRAW"R40
F20 D30 G20 D40 L40 U110
30 PSET(65,50):DRAW"R30 D30 L30 U30
40
PAINT(70,100),14,15
50 PSET(160,60):DRAW"E20 R30 F20 D30 G40 D40 L20 U40 E40
U30 L30 G10 H10
60 PAINT(220,80),11,15
70
CIRCLE(180,185),10:PAINT(180,185),11,15
80 FOR C=1 TO 10000:NEXT C:FOR A=1
TO 15:NEXT A:COLOR,8
85 INPUT I$:IF I$="q" THEN GOTO 100
90 GOTO 80
100 SOUND 400,3:FOR N=1 TO 1000:NEXT N:SOUND 600,5
105 FOR B=1 TO 1000:NEXT
B:CLS:COLOR 8
360 LOCATE 15,1:PRINT"Appuyez sur S pour commencer"
380
INPUT I$:IF I$="S" THEN GOTO 400
385 IF I$="s" THEN GOTO 400
390 GOTO
330
400 CLS:COLOR 15
410 PRINT"DIFFICULTÉ?":PRINT:PRINT"Appuyez 1 POUR
FACILE"
411 PRINT"Appuyez 2 POUR MOYEN"
412 PRINT"Appuyez 3 POUR
DIFFICILE"
415 PRINT:PRINT:PRINT"INSTRUCTIONS: Utilisez le clavier numérique
pour déplacer le réticule vers le centre"
416 PRINT"de la CIBLE le plus
rapidement possible. Une fois au centre, tirez en appuyant sur"
417 PRINT"le
chiffre 5. Il y a trois étapes."
418 COUNT=0 'Mettre le compteur d'étape à
zéro
420 I$=INKEY$
430 IF I$="1" THEN T=150:GOTO 455
435 IF I$="2"
THEN T=100:GOTO 455
440 IF I$="3" THEN T=50:GOTO 455
450 GOTO 420
455
FOR LOOP=1 TO 3 'TROIS ÉTAPES
457 COUNT=COUNT+1 'Définir le l'étape actuelle
460 FOR N=1 TO 15:COLOR ,N:NEXT N
470 COLOR 3,3:CLS:COLOR 1
471 LOCATE
10,1:PRINT" PRÉPAREZ-VOUS POUR L'ÉTAPE ";LOOP;"...."
472 FOR V=1 TO
10000:NEXT V:E=0:XX=90:YY=90
474 COLOR 3,3:CLS:COLOR 1
480
PSET(10,10),8:DRAW"R30 D190 L30 U190
490
PAINT(30,30),2,8:PSET(35,20),15:DRAW"D180
500 PSET(280,10),8:DRAW"R30 D190
L30 U190
510 PAINT(290,40),2,8:PSET(305,20),15:DRAW"D180
520
PSET(50,10),8:DRAW"D10 L10 R10 D10 R220 U10 R10 L10 U10 L220
530
PAINT(60,20),2,8:PSET(55,15),15:DRAW"R210
540 CIRCLE(TARGETX(LOOP),TARGETY(LOOP)),20,1:CIRCLE(TARGETX(LOOP),TARGETY(LOOP)),10,4
545 CIRCLE(TARGETX(LOOP),TARGETY(LOOP)),5,1:PSET(TARGETX(LOOP),TARGETY(LOOP)),4
550 I$=INKEY$:E=E+1:IF E=T THEN GOTO 850
560 IF I$="5" THEN GOTO 755
570
IF I$="8" THEN YY=YY-2
580 IF I$="2" THEN YY=YY+2
590 IF I$="4" THEN
XX=XX-2
600 IF I$="6" THEN XX=XX+2
610 IF I$="3" THEN XX=XX+2:YY=YY+2
620 IF I$="1" THEN XX=XX-2:YY=YY+2
630 IF I$="7" THEN XX=XX-2:YY=YY-2
640 IF I$="9" THEN YY=YY-2:XX=XX+2
650 IF I$="E" THEN END
660 IF
I$="e" THEN END
670 IF XX=>240 THEN XX=XX-4
680 IF XX=<80 THEN XX=XX+4
690 IF YY=>180 THEN YY=YY-4
700 IF YY=<50 THEN YY=YY+4
710 PSET(XX,YY),1:DRAW"D40
U20 L30 R60
720 FOR B=1 TO 300:NEXT B
725 PSET(XX,YY),3:DRAW"D40 U20 L30
R60
730 CIRCLE(TARGETX(LOOP),TARGETY(LOOP)),20,1
740 CIRCLE(TARGETX(LOOP),TARGETY(LOOP)),10,4:CIRCLE(TARGETX(LOOP),TARGETY(LOOP)),5,1
745 PSET(TARGETX(LOOP),TARGETY(LOOP)),4
750 GOTO 550
755 SOUND 1000,1:IF
XX=TARGETX(LOOP) AND YY=(TARGETY(LOOP)-20) THEN GOTO 760
756 GOTO 550
760
SOUND 1000,4:SOUND 3000,2:FOR B=1 TO 5
770 FOR V=1 TO 15
780 PSET(XX,YY),V:DRAW"D40
U20 L30 R60
790 NEXT V
800 NEXT B
810 CLS:COLOR 1
820 FOR C=150 TO
370 STEP 6
830 PSET(C,YY),1:DRAW"D40 U20 L30 R60":FOR V=1 TO 1000:NEXT V
835 PSET(C,YY),3:DRAW"D40 U20 L30 R60":NEXT C
840 NEXT LOOP
845 IF
COUNT=3 THEN 1100
850 PSET(80,50):DRAW"R20 D20 U20 R20
860
PSET(130,50):DRAW"R15 D20 L15 R30 L15 U20 R15
870 PSET(170,70):DRAW"U20 F15
E15 D20
880 PSET(240,50):DRAW"L30 D10 R10 L10 D10 R30
890
PSET(100,140):DRAW"R20 D20 L20 U20
900 PSET(130,140):DRAW"F20 E20
910
PSET(210,140):DRAW"L30 D10 R20 L20 D10 R30
920 PSET(250,140):DRAW"D10 L30 U10
R30 L30 D10 R10 F10 H10 L10 D10
930 SOUND 37,10:FOR B=1 TO 10000:NEXT B
940 COLOR 1,1:CLS:COLOR 3:DS=DS+1:IF DS=3 THEN GOTO 1000
950 COLOR
1,1:CLS:COLOR 15
1000
PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
1005
PRINT"GAME OVER":FOR Z=0 TO 70 STEP 10
1010 ED=INT(1+15*RND(1))
1020
PSET(70,Z),ED:DRAW"R60 D10 L50 D30 R40 U10 L20 U10 R30 D30 L60 U50
1025
PSET(70,Z),1:DRAW"R60 D10 L50 D30 R40 U10 L20 U10 R30 D30 L60 U50
1030 NEXT
Z
1035 FOR F=1 TO 4
1036 FOR V=1 TO 15
1040 PSET(70,70),V:DRAW"R60 D10
L50 D30 R40 U10 L20 U10 R30 D30 L60 U50
1045 NEXT V
1046 NEXT F:SOUND
37,10
1047 FOR B=1 TO 25000:NEXT B:COLOR 3,3:CLS:COLOR 4:FOR X=1 TO 1000:NEXT
X:GOTO 360
1100 CLS
1110 LOCATE 10,1:PRINT" TU AS GAGNÉ!"
1115 IF T=150
THEN PRINT"Mais tu l'as fait au niveau FACILE,"
1120 IF T=100 THEN
PRINT"Bien, vous l'avez fait au niveau MOYEN."
1125 IF T=50 THEN PRINT"Super,
tu l'as fait au niveau DIFFICILE!"
1130 PRINT:PRINT"Appuyez <ESCAPE> pour
terminer le jeu."
1135 I$=INKEY$:IF I$<>CHR$(27) THEN 1135
1140 CLS:END