"Bataille dans l'espace" pour SHARP PC-1500
 Jean-Luc BECHENNEC, L'Ordinateur de poche, 1983.
Paru dans "L'Ordinateur de poche" n11, mars 1983.
Programme BASIC de 2047 octets.

CLOAD "B. DANS L ESPACE"
RUN ou DEF G

Commandes :
7 8 9
4 5 6
1 2 3
SHIFT - Feu

----- BASIC program -----------------------------------------
10 "G"CLS :WAIT 110:CURSOR 6:PRINT "*** COMBAT ***"
20 CLEAR :DIM A$(2,2)*14,B$(2,2)*14,C$(2,2)*6,R(72),P(6)
30 FOR A=0 TO 2:FOR B=0 TO 2:READ A$(A,B):NEXT B:NEXT A
40 FOR A=0 TO 2:FOR B=0 TO 2:READ B$(A,B):NEXT B:NEXT A
50 FOR A=0 TO 2:FOR B=0 TO 2:READ C$(A,B):NEXT B:NEXT A
60 FOR A=0 TO 6:READ P(A):NEXT A
70 RESTORE :USING "###":RANDOM :WAIT 0:A$="7F7D7E2E76797F"
80 INPUT "Niveau de jeu (de0a20)=";N:IF N>20 OR N<0 THEN 80
90 N=20-N: GOSUB 400
100 CURSOR 0:PRINT "Lancement":FOR A=0 TO 72:R(A)=POINT (A+54):NEXT A:CURSOR 0:PRINT "         "
110 D=RND 4:DX=RND 3-2:DY=RND 3-2
120 FOR E=0 TO D:C$=INKEY$ 
130 IF C$="7"LET CX=-1:CY=1: GOTO 220
140 IF C$="8"LET CX=0:CY=1: GOTO 220
150 IF C$="9"LET CX=1:CY=1: GOTO 220
160 IF C$="6"LET CX=1:CY=0: GOTO 220
170 IF C$="3"LET CX=1:CY=-1: GOTO 220
180 IF C$="2"LET CX=0:CY=-1: GOTO 220
190 IF C$="1"LET CX=-1:CY=-1: GOTO 220
200 IF C$="4"LET CX=-1:CY=0: GOTO 220
210 IF C$="5"LET CX=0:CY=0
220 IF DDGCURSOR (X+90):GPRINT R(X+36)
230 GCURSOR 138:GPRINT C$(CX+1,CY+1)
240 X=X+DX-CX:Y=Y+DY-CY:DD=0:IF X>=-36 AND X<=36 AND Y>=-3 AND Y<=3 GOSUB 500
250 IF X>99 OR X<-99 OR Y>99 OR Y<-99CURSOR 0:PRINT "PARTI...":GCURSOR 45:GPRINT A$:GCURSOR 129:GPRINT A$: GOTO 270
260 CURSOR 0:PRINT X;"/";Y:GCURSOR 45:GPRINT A$(DX+1,DY+1):GCURSOR 129:GPRINT B$(SGN X+1,SGN Y+1):BEEP 1,1,1
270 IF C$="F" GOTO 290
280 NEXT E: GOTO 110
290 CLS :WAIT 200:PRINT "On rentre a la base !":IF M<>0LET Y=S/M:A$=STR$ S+"/"+STR$ M+":": GOTO 310
300  GOTO 360
310 IF Y>.8PRINT A$;"Excellent !"
320 IF Y<.2PRINT A$;"Tres mauvais !"
330 IF Y>=.2 AND Y<.4PRINT A$;"Mediocre !"
340 IF Y<=.8 AND Y>.66PRINT A$;"Bien !"
350 IF Y<=.6 AND Y>.4PRINT A$;"Moyen !"
360 END
400 X=RND 100-50:Y=RND 100-50:T$="":DD=0:CX=0:CY=0:CLS :WAIT 0
410 FOR A=54 TO 86:GCURSOR A:GPRINT "7F":GCURSOR (180-A):GPRINT "7F":NEXT A
420 GCURSOR 87:GPRINT "77777F1C7F7777":CURSOR 24:PRINT STR$ S:RETURN 
500 B=P(Y+3) OR (127-R(X+36)):B=127-B:DD=1:GCURSOR (X+90):GPRINT B:IF B=20 GOSUB 520
510 RETURN 
520 GCURSOR 87:GPRINT "5D1C7F777F1C5D":BEEP 2
530 FOR T=0 TO N:T$=INKEY$ :NEXT T
540 IF T$=CHR$ 1CURSOR 0:WAIT 150:BEEP 5,10,10:PRINT "Touche !":S=S+1: GOSUB 400
550 GCURSOR 87:GPRINT "77777F1C7F7777":M=M+1:RETURN 
1000 DATA "003C2020200000","08142200000000","001E0202020000"
1010 DATA "00102040201000","003E2222223E00","00040201020400"
1020 DATA "00002020203C00","00000000221408","00000202021E00"
1030 DATA "74747700771414","081C2A08080808","17177700771414"
1040 DATA "0010207F201000","14147700771414","0004027F020400"
1050 DATA "14147700777474","080808082A1C08","14147700771717"
1060 DATA "183A38","283A38","303A38","381A38","382A38","383238","383A18","383A28"
1070 DATA "383A30"
1080 DATA 64,32,16,8,4,2,1
