"Le loup des mers" pour Sharp PC-1500
 Hebdogiciel (Shift ditions ?)
Author: Jol JONGEN
Published in Hebdogiciel #84 (May 1985)
5088 bytes

Dmarrage : DEF A

Commandes:
8 6 4 2    : directions
P O        : periscope
L K        : radar
CL         : check list
flches    : assiette
shift +C,D : torpille

But du jeu:
??
la base se trouve en (0,0,-100)

----- BASIC program -----------------------------------------
1 "LE LOUP DES MERS"
2 "Hebdogiciel no.84"
3 " directions : 8,6,4,2
4 " periscope : P,O
5 " radar : L,K
6 " check-list : CL
7 " assiette : fleches
8 " torpille : shift +C,D
9 " base en (0,0,-100)
20 "A"CLEAR :RESTORE :ON ERROR  GOTO "%"
25 DIM A$(4)*48,B$(4)*32,E$(3)*20,C(4),D(4)
28 RANDOM :C(1)=RND 10,C(2)=RND 10+10,C(3)=0,C(4)=20
30 D(1)=0,D(2)=20,D(3)=RND 10,D(4)=RND 10+10
40 DATA 10,10,20,30,0,"10306068787860627F6278787C7E78607878686030100000"
50 DATA "0028647860607878787C606070686428"
60 DATA "40406070400000406060","N",0,0,0,100
70 DATA "2070787020","0000000020707020","20747E7420","2070200000206020"
75 DATA "2864687060607C78787860607864280000103060687878"
77 DATA "60787E7C7878627F6260787868603010"
80 DATA "60604000004070604040"
85 READ AS,OS,ET,NT,PR,A$(1),B$(1),E$(1),DI$,RA,DE,TN,CA
87 READ A$(2),B$(2),A$(3),E$(2),A$(4),B$(3),E$(3)
88 B$(4)=B$(3),B$(3)=B$(2)
96 FOR WW=1 TO 1: GOTO 236
100 FOR WW=1 TO 2
103 IF RA=1 THEN 310
105 "%" GOTO "%"+INKEY$ 
110 "%8"OS=OS-1,DI$="N": GOTO 230
120 "%4"AS=AS-1,DI$="O": GOTO 230
130 "%2"OS=OS+1,DI$="S": GOTO 230
140 "%6"AS=AS+1,DI$="E": GOTO 230
150 "%P"CLS : GOTO 390
170 "%[0A]"DE=DE-10: GOTO 230
180 "%[0B]"DE=DE+10: GOTO 230
190 "%[18]" GOSUB 800: GOTO 230
195 "%R"TN=TN-20,ET=20:BEEP 15,15,15: GOTO 230
200 "%L"RA=1: GOTO 230
205 "%K"RA=0
230 PR=PR+DE:IF PR>0LET PR=0
233 IF PR<-100LET ET=ET-1,PR=-100
236 CLS 
237 IF RA=1GCURSOR 1:WAIT 0:GPRINT "114A744A11"
239 CURSOR 3:WAIT 0:PRINT "PR.";PR
241 CURSOR 11:PRINT "DIR. ";DI$
243 CURSOR 18:PRINT AS;" /";OS
244 IF AS=0 AND OS=0 AND PR=-100 AND NT<27BEEP 9,5,25:ET=20
245 IF AS=0 AND OS=0 AND PR=-100 AND CA<90LET NT=30,CA=10:BEEP 25,50,50
248 CA=CA-1:NEXT WW
250 D(1)=D(1)+1,D(2)=D(2)-1,C(3)=C(3)+1,C(4)=C(4)-1
260 IF D(1)>20LET D(1)=0
270 IF D(2)<0LET D(2)=20
280 IF C(3)>20LET C(3)=0
290 IF C(4)<0LET C(4)=20
295 IF ET<0 OR CA<0 THEN 1000
300  GOTO 100
310 FOR M=1 TO 4:IF C(M)-AS>-3 AND C(M)-AS<3IF D(M)-OS>-3 AND D(M)-OS<3LET OB=OB+1
320 NEXT M
330 IF OB=0BEEP 2,15,350
340 IF OB>0BEEP OB,15,350:BEEP OB,35,500:OB=0
350 IF RND 25<2 GOTO 370
360  GOTO 105
370 CLS : GOSUB 1100:CLS :RETURN 
390 IF PR<-20 THEN 236
400 FOR M=1 TO 4:IF C(M)-AS>-3 AND C(M)-AS<3IF D(M)-OS>-3 AND D(M)-OS<3LET OB=1,G=M
405 NEXT M
410 IF OB=0 THEN 540
430 IF DI$="S" GOTO 500
440 IF DI$="E" GOTO 480
450 IF DI$="O" GOTO 520
460 IF D(G)>OS THEN 540
470 EB=OS-D(G),PB=AS-C(G)
472 ON G GOTO 473,474,475,476
473 T=3: GOTO 545
474 T=2: GOTO 545
475 T=4: GOTO 545
476 T=1: GOTO 545
480 IF C(G)<AS THEN 540
490 EB=C(G)-AS,PB=OS-D(G)
492 ON G GOTO 493,494,495,496
493 T=4: GOTO 545
494 T=1: GOTO 545
495 T=2: GOTO 545
496 T=3: GOTO 545
500 IF D(G)<OS THEN 540
510 EB=D(G)-OS,PB=C(G)-AS
512 ON G GOTO 513,514,515,516
513 T=2: GOTO 545
514 T=3: GOTO 545
515 T=1: GOTO 545
516 T=4: GOTO 545
520 IF AS<C(G) THEN 540
530 EB=AS-C(G),PB=D(G)-OS
532 ON G GOTO 533,534,535,536
533 T=1: GOTO 545
534 T=4: GOTO 545
535 T=3: GOTO 545
536 T=2: GOTO 545
540 CLS :OB=0,EB=3:BEEP 5,155,40
545 GCURSOR 13
546 WAIT 0:GPRINT 3
547 GCURSOR 142:GPRINT 3
551 IF EB=3 THEN 565
552 GCURSOR 72-PB*32:IF EB=0GPRINT A$(T)+B$(T)
553 IF T=3LET T=2: GOTO 563
554 IF T=4LET T=3
563 IF EB=1GPRINT E$(T)
564 IF EB=2GPRINT "0000000040000040"
565 IF PB<>0LET OB=0
567 WAIT OB*60:PRINT :OB=0:GCURSOR 79:WAIT 0:GPRINT "3844564438"
570 I$=INKEY$ :IF I$="" THEN 570
580 IF I$=CHR$ 1 AND PB=0LET NT=NT-1: GOTO 610
590 IF I$="O" THEN 236
600  GOTO 570
610 IF EB>1LET TN=TN-5: GOTO 236
630 INPUT "QUEL BATEAU ? ";E$:CLS :IF E$="D" THEN 680
645 IF RND 10<6-EB*2 GOSUB 1600:BEEP 25,25,25:TN=TN+5: GOTO 710
670  GOSUB 1600: GOTO 710
680  GOSUB 1600: GOTO 900
710 CP=-RND 10*10:BEEP 1,150,125
711 GCURSOR 70:WAIT 4:GPRINT A$(1)
712 GCURSOR 91:GPRINT 24
713 GCURSOR 91:GPRINT 16:GCURSOR 92:GPRINT 4
714 GCURSOR 91:GPRINT 24,2:GCURSOR 91:GPRINT 16,0
715 GCURSOR 92:GPRINT 4,1:GCURSOR 92:GPRINT 0,0:GCURSOR 93:GPRINT 2,2:GCURSOR 93:GPRINT 0,0
716 GCURSOR 94:GPRINT 1,4:GCURSOR 94:GPRINT 0,0:GCURSOR 95:GPRINT 2,8:GCURSOR 95:GPRINT 0,0:GCURSOR 96:GPRINT 4,16:GCURSOR 96:GPRINT 0,0
717 GCURSOR 97:GPRINT 8,32:GCURSOR 97:GPRINT 0,0:GCURSOR 98:GPRINT 16,64:GCURSOR 98:GPRINT 0,0:GCURSOR 99:GPRINT 32:GCURSOR 98:GPRINT 0,64
718 GCURSOR 100:GPRINT 0
723 FOR M=1 TO -CP:BEEP 1,M,10:NEXT M
725 IF CP=PR THEN 1000
730 IF CP-10=PR OR CP-20=PR OR CP+10=PR OR CP+20=PRLET ET=ET-RND 8:FOR M=-30 TO 0:BEEP 2,-M,5:NEXT M
740 IF CP+40=PR OR CP+30=PRLET ET=ET-RND 2:FOR M=20 TO 1 STEP -1:BEEP 1,M,2:NEXT M
755 IF ET<0 THEN 1000
760 IF RND 2=1 THEN 236
780  GOTO 710
800 CLS :CURSOR 0:WAIT 0:GPRINT "087C7E7C08":CURSOR 1:PRINT DE
802 GCURSOR 28:GPRINT "7F7F615F617F7F":CURSOR 6:PRINT ET
803 GCURSOR 63:GPRINT "5E7F5E":CURSOR 11:PRINT NT
805 GCURSOR 90:GPRINT "7F7F415D7F7F":CURSOR 16:PRINT CA
808 GCURSOR 122:GPRINT "7F7F51457F415D7F7F":CURSOR 22:PRINT TN
810 I$=INKEY$ :IF I$<>""RETURN 
820  GOTO 810
900 IF RND 10>4+EB*2 THEN 710
920 TN=TN+8:ON G GOTO 925,930,940,950
925 D(1)=RND 20,C(1)=RND 10: GOTO 957
930 C(2)=RND 10+10,D(2)=RND 20: GOTO 957
940 C(3)=RND 20,D(3)=RND 10: GOTO 957
950 C(4)=RND 20,D(3)=RND 10+10
957 CLS 
960 GCURSOR 77:GPRINT "61607D60797A78796278"
970 GCURSOR 77:GPRINT "606075607479747065"
980 GCURSOR 77:GPRINT "6064716072746268607A"
985 GCURSOR 77:GPRINT "60626860696A6061647879"
990 GCURSOR 77:GPRINT "6170446048515060607A7868603010"
992 GCURSOR 77:GPRINT "60687220046440686078786860301000"
994 GCURSOR 70:WAIT 25:GPRINT "20604050707040484110240028404870705040602000"
996 GCURSOR 70:WAIT 35:GPRINT "404000206060000800100110040068602000404000"
998 BEEP 3,125,75:WAIT 30:PRINT :BEEP 1,155,360: GOTO 236
1000 CLS :WAIT :PRINT "Score",TN
1080 CLEAR :RESTORE : GOTO 25
1100 SM$="4040406070404040",AV$="00030202030302"
1103 GCURSOR 99
1106 WAIT 0:GPRINT SM$
1110 FOR M=50 TO 92:GCURSOR M
1120 GPRINT AV$:BEEP 1,155,1
1130 NEXT M
1170 GCURSOR 93
1180 WAIT 1:GPRINT "00030202030342":BEEP 1,130,1
1190 GCURSOR 94
1200 GPRINT "00030202034342":BEEP 1,130,1
1220 GCURSOR 95
1230 GPRINT "00030202434342":BEEP 1,120,1
1240 GCURSOR 96
1250 GPRINT "00030242434362":BEEP 1,110,1
1260 GCURSOR 97
1270 GPRINT "00034242436372":BEEP 1,100,1
1290 GCURSOR 98
1300 GPRINT "004342426773424040":BEEP 1,100,1
1310 GCURSOR 99
1320 GPRINT "4043426A734342":BEEP 1,100,1
1330 GCURSOR 100
1340 GPRINT "40437272434342"
1350 FOR M=1 TO 2:FOR N=40 TO 9 STEP -1:BEEP 1,N,7:NEXT N:NEXT M
1353 ET=ET-RND 2+1
1355 IF PR>-30LET ET=ET-RND 2:CURSOR 0:WAIT 0:PRINT "Etat :";ET
1360 GCURSOR 101
1370 GPRINT "40637242434302":BEEP 1,100,1
1380 GCURSOR 102
1390 GPRINT "60734242430302":BEEP 1,100,1
1400 GCURSOR 103
1410 GPRINT "70434242030302":BEEP 1,100,1
1420 GCURSOR 104
1430 GPRINT "40434202030302":BEEP 1,100,1
1440 GCURSOR 105
1450 GPRINT "40430202030302":BEEP 1,100,1
1460 GCURSOR 106
1470 GPRINT "40"+AV$:BEEP 1,100,1
1480 FOR M=107 TO 155:GCURSOR M
1490 WAIT 0:GPRINT "00"+AV$:BEEP 1,155,1:NEXT M: GOTO 236
1600 FOR M=75 TO 15 STEP -1:BEEP 1,M,3:NEXT M:RETURN 
