10 ' Space-Hockey
20 ' David Hay
30 ' Amstrad Action March 1989
40 MODE 1:CLS
50 PRINT"       S P A C E - H O C K E Y"
60 LOCATE 1,15
70 PRINT"            <FIRE> TO START"
80 IF INKEY(76)>-1 OR INKEY(9) >-1 THEN 100 ELSE 60
90 ' SET UP SCREEN
100 INK 0,0:PEN 1:PAPER 0
110 t%=1000:BORDER 11:CLS
120 ' CHARACTERS
130 SYMBOL AFTER 92
140 SYMBOL 93,24,60,102,195,129,0,0,0
150 SYMBOL 251,0,24,60,36,102,102,255,219
160 SYMBOL 252,219,255,102,102,36,60,24,0
170 SYMBOL 253,3,15,62,99,99,62,15,3
180 SYMBOL 254,192,240,124,198,198,124,240,192
190 SYMBOL 255,24,44,94,126,60,24
200 ' GAME SCREEN
210 x%=5:y%=16:a%=35:b%=5:g%=20:h%=11
220 LOCATE 1,23
230 PRINT"]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]"
240 LOCATE 1,24
250 PRINT"   S P A C E - H O C K E Y   "
260 LOCATE 1,25
270 PRINT"   1:                      2:"
280 LOCATE 6,25:PRINT xs%
290 LOCATE 36,25:PRINT as%
300 LOCATE 1,5:PRINT"="
310 LOCATE 40,5:PRINT"="
320 LOCATE 1,17:PRINT"="
330 LOCATE 40,17:PRINT"="
340 s%=253:p%=254
350 LOCATE x%,y%:PRINT CHR$(254)
360 LOCATE a%,b%:PRINT CHR$(253)
370 PEN 2:LOCATE g%,h%
380 PRINT CHR$(255):PEN 1
390 ' MAIN PROG
400 ox%=x%:oy%=y%:oa%=a%:ob%=b%
410 og%=g%:oh%=h%:t%=t%-1
420 LOCATE 18,25:PRINT t%
430 IF t%=0 THEN 1090
440 ' CONTROL
450 IF INKEY(9)>-1 THEN a%=39
460 IF INKEY(0)>-1 THEN b%=b%-1:s%=251
470 IF INKEY(2)>-1 THEN b%=b%+1:s%=252
480 IF INKEY(8)>-1 THEN a%=a%-1:s%=253
490 IF INKEY(1)>-1 THEN a%=a%+1:s%=254
500 IF INKEY(76)>-1 THEN x%=2
510 IF INKEY(72)>-1 THEN y%=y%-1:p%=251
520 IF INKEY(73)>-1 THEN y%=y%+1:p%=252
530 IF INKEY(74)>-1 THEN x%=x%-1:p%=253
540 IF INKEY(75)>-1 THEN x%=x%+1:p%=254
550 IF x%>39 THEN x%=39
560 IF x%<2 THEN x%=2
570 IF a%<2 THEN a%=2
580 IF a%>39 THEN a%=39
590 IF b%<1 THEN b%=1
600 IF b%>22 THEN b%=22
610 IF y%<1 THEN y%=1
620 IF y%>22 THEN y%=22
630 ' PRINT CHARACTERS
640 LOCATE ox%,oy%:PRINT" "
650 LOCATE oa%,ob%:PRINT" "
660 PEN 11:LOCATE x%,y%:PRINT CHR$(p%)
670 PEN 1:LOCATE a%,b%:PRINT CHR$(s%)
680 ' COLLISION DETECTION
690 IF x%=g%-1 AND y%=h% OR a%=g%-1 AND b%=h% THEN 780
700 IF x%=g%+1 AND y%=h% OR a%=g%+1 AND b%=h% THEN 790
710 IF x%=g% AND y%=h%-1 OR a%=g% AND b%=h%-1 THEN 800
720 IF x%=g% AND y%=h%+1 OR a%=g% AND b%=h%+1 THEN 810
730 IF x%=g%-1 AND y%=h%-1 OR a%=g%-1 AND b%=h%-1 THEN 820
740 IF x%=g%+1 AND y%=h%-1 OR a%=g%+1 AND b%=h%-1 THEN 830
750 IF x%=g%+1 AND y%=h%+1 OR a%=g%+1 AND b%=h%+1 THEN 840
760 IF x%=g%-1 AND y%=h%+1 OR a%=g%-1 AND b%=h%+1 THEN 850
770 GOTO 400
780 g%=g%+5:GOTO 860
790 g%=g%-5:GOTO 860
800 h%=h%+5:GOTO 860
810 h%=h%-5:GOTO 860
820 g%=g%+5:h%=h%+5:GOTO 860
830 g%=g%-5:h%=h%+5:GOTO 860
840 g%=g%-5:h%=h%-5:GOTO 860
850 g%=g%+5:h%=h%-5
860 SOUND 1,30,10,7
870 IF g%<2 AND h%<17 AND h%>5 THEN 970
880 IF g%>39 AND h%<17 AND h%>5 THEN 1010
890 IF g%>38 THEN g%=38
900 IF g%<3 THEN g%=3
910 IF h%>21 THEN h%=21
920 IF h%<2 THEN h%=2
930 PEN 2:LOCATE og%,oh%:PRINT" "
940 LOCATE g%,h%:PRINT CHR$(255)
950 PEN 1:GOTO 400
960 ' GOAL SCORED
970 g%=1:LOCATE og%,oh%:PRINT" "
980 LOCATE g%,h%:PRINT CHR$(255)
990 as%=as%+1:g%=1
1000 GOTO 1040
1010 g%=40:LOCATE og%,oh%:PRINT" "
1020 LOCATE g%,h%:PRINT CHR$(255)
1030 xs%=xs%+1:g%=40
1040 FOR fx%=5 TO 15 STEP 1
1050 SOUND 2,0,15,5,0,0,fx%
1060 NEXT
1070 p%=254:s%=253:CLS:GOTO 210
1080 ' END GAME
1090 FOR fy%=5 TO 15:SOUND 1,fy%,10,7
1100 NEXT fy%
1110 CLS
1120 PRINT"     G  A  M  E   O  V  E  R"
1130 LOCATE 1,5
1140 PEN 11:PRINT"PLAYER 1:";xs%
1150 LOCATE 1,10
1160 PEN 1:PRINT"PLAYER 2:";as%
1170 LOCATE 1,20
1180 PRINT"       <FIRE> TO PLAY AGAIN"
1190 IF INKEY(76)>-1 OR INKEY(9)>-1 THEN 40 ELSE 1190