Posted Wed Oct 26, 2011 1:55 AM
Posted Wed Oct 26, 2011 4:52 AM
Posted Wed Oct 26, 2011 9:49 AM
retroclouds, on Wed Oct 26, 2011 4:52 AM, said:
Posted Wed Oct 26, 2011 12:44 PM
Posted Thu Oct 27, 2011 12:42 PM
Posted Fri Oct 28, 2011 4:32 AM
Edited by retroclouds, Fri Oct 28, 2011 4:36 AM.
Posted Sat Oct 29, 2011 1:13 AM
retroclouds, on Fri Oct 28, 2011 4:32 AM, said:
Posted Sat Oct 29, 2011 1:26 AM
sub routine
print "hello world"
read key
if val=13 then
goto newline
else
goto newpage
end if
end sub
Posted Sat Oct 29, 2011 1:46 AM
; PONG game using XB and MLC with Precompiler
; 2011 guillaume.tello@orange.fr
100 CALL INIT::CALL CLEAR::DIM A$(35),S$(3)
; load compiler and compiles game and sounds
110 GOSUB 1000
; ball, paddle, net and field definitions
140 CALL CHAR(96,"60F0F0F0F0F0F060")::CALL CHAR(100,"60F0F06000000000")
150 CALL CHAR(97,"8855225588552255")::CALL CHAR(98,"FFFFFFFFFFFFFFFF")::CALL CHAR(99,"0000000000000000")
; prepares screen
160 CALL CLEAR::CALL SCREEN(1)::CALL COLOR(9,16,10)
170 FOR I=1 TO 8::CALL COLOR(I,4,1)::NEXT I
180 RESTORE 900::READ M$,N$,P$::READ SP(1),SP(2),SP(3),SP(4)
190 DISPLAY AT(1,13):"PONG"
200 DISPLAY AT(2,1):M$
210 FOR I=3 TO 19::DISPLAY AT(I,1):N$::NEXT I
220 DISPLAY AT(11,1):P$::DISPLAY AT(20,1):M$
230 DISPLAY AT(21,2):"LEFT (X-E) RIGHT (I-M)"
240 SC(1)=0::SC(2)=0::START=1::SPEED=2::CALL MAGNIFY(2)
; display little menu and wait for SPACE to start
250 DISPLAY AT(24,1):"SPACE=START S=SPEED Q=QUIT"
260 DISPLAY AT(22,7):SC(1)::DISPLAY AT(22,21):SC(2)::GOSUB 400::IF K$<>" " THEN 250
; sprites 2 and 3 are the paddles, sprite 1 the ball
270 CALL SPRITE(#2,96,5,16,24)::CALL SPRITE(#3,96,14,136,224)
280 CALL SPRITE(#1,100,13,120*START-102,184*START-152)
; call assembly routine to play
290 CALL LINK("PLAY",S$(),START,SP(SPEED),WIN)
; upon return, WIN is the winner!
300 SC(WIN)=SC(WIN)+1:: START=3-START::GOTO 260
; quit game, the assembly routine is deleted from ram
310 CALL LINK("POP",A)::PRINT A
320 END
; menu key
400 CALL KEY(0,K,S)::K$=CHR$(ABS(K))::IF K$=" " THEN RETURN
410 IF K$="S" OR K$="s" THEN 420
415 IF K$="Q" OR K$="q" THEN 310 ELSE 400
420 DISPLAY AT(24,1):"SELECT SPEED FROM 1 TO 4:";SPEED
430 ACCEPT AT(24,27)SIZE(-1)BEEP:SPEED
440 RETURN
; field definition
900 DATA bbbbbbbbbbbbbaabbbbbbbbbbbbb
910 DATA bccccccbcccccaacccccbccccccb
920 DATA bccccccbbbbbbaabbbbbbccccccb
; speed table 1 to 4
930 DATA 10,20,35,50
; includes here the loader from line 1000 and DATA from line 2000
; --> to load the compiler (normal mode) use $MLC N ...
; --> to use the Fast Loader use $MLC F ...
; --> If compiler in memory and you don't want it to be loaded, remove CALL INIT and use $MLC D ...
$MLC F 1000 10 2000
1900 RETURN
; sound definitions
$SND 1 ; ball touches paddle 1
FA440VA0VN15D2 VA2D3 VA4D4 VA6D5 VA8D6,VA12D7 VA14D8 VA15D0
$$
$SND 2 ; ball touches paddle 2
FA220VA0VN15D2 VA2D3 VA4D4 VA6D5 VA8D6,VA12D7 VA14D8 VA15D0
$$
$SND 3 ; ball touches border
FN5VN8VA15D1 VN6D1 VN4D1 VN6D1 VN8D2,VN12D2 VN15D0
$$
; game routine
$PLAY
GETPARAM 2 S ; S=start player (1/2)
GETPARAM 3 H ; horizontal speed
RND ; random number in Z
DIV Z H ; reminder (so Z<H)
LET G Z ; vertical speed!
LET M 1 ; default player 1
COMPARE S 1
IF=THEN a ; if start player is 1, ok
NEG G ; else modifies motion and M=2
NEG H
INC M
LABEL a
SMAX 1 ; one sprite with auto motion
SMOTION 1 G H ; ball starts !
SOUND M ; with a paddle sound
SPOSITION 2 A B ; get positions of both paddles
SPOSITION 3 C D
LABEL 0
INTERRUPT ; enables interrupt
KEY 1 ; read keyboard left, key in K and COMPARE K 0 performed
IF<THEN 3 ; if negative then no key pressed, skip!
IF<>THEN 2 ; if not equal, it is not X
INC A ; here "X"=down, A=A+1
GOTO 1
LABEL 2
COMPARE K 18 ; if "Q" then quit
IF=THEN x
COMPARE K 5 ; is it "E"?
IF<>THEN 3 ; no, skip
DEC A ; here "E"=up, A=A-1
LABEL 1
LIMIT 16 136 A ; ensure A is in the range
SLOCATE 2 A B ; and set new paddle position
LABEL 3
GOSUB b ; manages ball movement
KEY 2 ; read keyboard right, key in K and COMPARE K 0 performed
IF<THEN 6 ; no key, skip
IF<>THEN 5 ; if not 0, it is not "M"
INC C ; if "M"=down, C=C+1
GOTO 4
LABEL 5
COMPARE K 5 ; is it "I"?
IF<>THEN 6 ; no, skip
DEC C ; if "I"=up, C=C+1
LABEL 4
LIMIT 16 136 C ; ensure C is in the range
SLOCATE 3 C D ; new position
LABEL 6
GOSUB b ; manages ball movement
GOTO 0 ; and back to paddle one !!!
SLABEL b
SPOSITION 1 E F ; get ball position
LIMIT 16 144 E ; is the vertical position in the field?
IF=THEN 8 ; yes, so skip
NEG G ; else, reverse motion
SMOTION 1 G H ; reflexion
SLOCATE 1 E F ; new location
SOUND 3 ; and border sound
LABEL 8
LIMIT 24 224 F ; is the horizontal potition in the field?
IF<>THEN x ; if not, game has ended!
LIMIT 32 216 F ; else, are we far from the paddles?
IF=THEN q ; yes, nothing to do
IF>THEN r ; if over 216 then work with paddle 2
LET G A ; else take vertical position of...
LET M 1 ; ...paddle 1
GOTO z
LABEL r
LET G C ; take vertical position of...
LEt M 2 ; ...paddle 2
LABEL z
SUB G E ; vertical distance G-E
LIMIT -16 8 G ; is it in -16,8 ?
IF<>THEN q ; no, so, no contact
ADD G 4 ; else ball touches the paddle M
ADD G G ; G=2*(vertical distance+4) new vertical speed
NEG G ; reflexion
NEG H ; idem
SMOTION 1 G H ; new ball motion
SLOCATE 1 E F ; new location
SOUND M ; and sound for paddle contact
LABEL q
RETURN ; back to players keys
LABEL x
SMAX 0 ; end of game, stop every sprite
LET R 1 ; default winner
COMPARE F 124
IF>THEN y ; if position over 124, winner is 1
INC R ; else winner is 2
LABEL y
PUTPARAM 4 R ; return winner
$$
$END
Posted Sat Oct 29, 2011 3:25 AM
100 CALL INIT::CALL CLEAR::DIM A$(35),S$(3)
110 GOSUB 1000
140 CALL CHAR(96,"60F0F0F0F0F0F060")::CALL CHAR(100,"60F0F06000000000")
150 CALL CHAR(97,"8855225588552255")::CALL CHAR(98,"FFFFFFFFFFFFFFFF")::CALL CHAR(99,"0000000000000000")
160 CALL CLEAR::CALL SCREEN(1)::CALL COLOR(9,16,10)
170 FOR I=1 TO 8::CALL COLOR(I,4,1)::NEXT I
180 RESTORE 900::READ M$,N$,P$::READ SP(1),SP(2),SP(3),SP(4)
190 DISPLAY AT(1,13):"PONG"
200 DISPLAY AT(2,1):M$
210 FOR I=3 TO 19::DISPLAY AT(I,1):N$::NEXT I
220 DISPLAY AT(11,1) :P$::DISPLAY AT(20,1):M$
230 DISPLAY AT(21,2):"LEFT (X-E) RIGHT (I-M)"
240 SC(1)=0::SC(2)=0::START=1::SPEED=2::CALL MAGNIFY(2)
250 DISPLAY AT(24,1):"SPACE=START S=SPEED Q=QUIT"
260 DISPLAY AT(22,7):SC(1)::DISPLAY AT(22,21):SC(2)::GOSUB 400::IF K$<>" " THEN 250
270 CALL SPRITE(#2,96,5,16,24)::CALL SPRITE(#3,96,14,136,224)
280 CALL SPRITE(#1,100,13,120*START-102,184*START-152)
290 CALL LINK("PLAY",S$(),START,SP(SPEED),WIN)
300 SC(WIN)=SC(WIN)+1:: START=3-START::GOTO 260
310 CALL LINK("POP",A)::PRINT A
320 END
400 CALL KEY(0,K,S)::K$=CHR$(ABS(K))::IF K$=" " THEN RETURN
410 IF K$="S" OR K$="s" THEN 420
415 IF K$="Q" OR K$="q" THEN 310 ELSE 400
420 DISPLAY AT(24,1):"SELECT SPEED FROM 1 TO 4:";SPEED
430 ACCEPT AT(24,27)SIZE(-1)BEEP:SPEED
440 RETURN
900 DATA bbbbbbbbbbbbbaabbbbbbbbbbbbb
910 DATA bccccccbcccccaacccccbccccccb
920 DATA bccccccbbbbbbaabbbbbbccccccb
930 DATA 10,20,35,50
1000 CALL INIT::PRINT "LOADING LOADER..."::CALL LOAD("DSK1.LODBIN")::RESTORE 2000
1010 PRINT "OPENING BINARY FILE..." :: OPEN #1:"DSK1.MLCBIN",INPUT,INTERNAL,FIXED 128
1020 PRINT "READING BLOCS"; :: I=0
1030 I=I+1 :: INPUT #1:A$(I) :: PRINT ".";::IF EOF(1)=0 THEN 1030
1040 CLOSE #1 :: PRINT :: PRINT "COPYING";I;"BLOCS TO MEM..." :: CALL LINK("LODBIN",A$())::PRINT "MY LITTLE COMPILER READY!"
1050 READ T$::I=0::IF T$="*" THEN 1090
1060 I=I+1::READ A$(I)::IF A$(I)<>"*" THEN 1060
1070 A$(I)=""::IF T$="P" THEN CALL LINK("COMPIL",A$()) ELSE CALL LINK("SOUND",A$(),S$())
1080 IF SEG$(A$(1),1,2)="OK" THEN 1050 ELSE PRINT T$;" ERROR ";A$(1)::END
1090 PRINT "COMPILATION OK!"
1900 RETURN
2000 DATA S,1
2010 DATA "FA440VA0VN15D2 VA2D3 VA4D4 VA6D5 VA8D6 VA12D7"
2020 DATA "VA14D8 VA15D0"
2030 DATA *
2040 DATA S,2
2050 DATA "FA220VA0VN15D2 VA2D3 VA4D4 VA6D5 VA8D6 VA12D7"
2060 DATA "VA14D8 VA15D0"
2070 DATA *
2080 DATA S,3
2090 DATA "FN5VN8VA15D1 VN6D1 VN4D1 VN6D1 VN8D2 VN12D2 VN15D0"
2100 DATA *
2110 DATA P,PLAY
2120 DATA "G2S G3H R /ZH =GZ =M1 CS1 ?=a NG NH IM La #<1"
2130 DATA "#M1GH &M0M #P2AB #P3CD L0 #I K0.1 ?<3 !=2 IA B1 L2"
2140 DATA "CK18 ?=x CK5 !=3 DA L1 (16.136A #L2AB L3 Sb K0.2"
2150 DATA "?<6 !=5 IC B4 L5 CK5 !=6 DC L4 (16.136C #L3CD L6"
2160 DATA "Sb B0 :b #P1EF (16.144E ?=8 NG #M1GH #L1EF &M0.3"
2170 DATA "L8 (24.224F !=x (32.216F ?=q ?>r =GA =M1 Bz Lr =GC"
2180 DATA "=M2 Lz -GE (-16.8G !=q +G4 +GG NG NH #M1GH #L1EF"
2190 DATA "&M0M Lq ; Lx #<0 =R1 CF124 ?>y IR Ly P4R"
2200 DATA *
2210 DATA *
Edited by moulinaie, Sat Oct 29, 2011 6:11 AM.
Posted Sat Oct 29, 2011 6:40 AM
Posted Sun Oct 30, 2011 7:02 AM
Posted Sun Oct 30, 2011 7:24 AM
rocky007, on Sun Oct 30, 2011 7:02 AM, said:
Posted Sun Oct 30, 2011 4:02 PM
100 REM ************* 110 REM * ROBOCHASE * 120 REM ************* 130 REM BY GREG VAUGHAN 140 REM 99'ER VERSION 2.13.1 150 REM DISPLAY TITLE SCREEN 160 RANDOMIZE 170 CALL SCREEN(16) 180 CALL CLEAR 190 DIM Z$(4) 200 DATA FFFFFFFFFFFFFFFF,0103070F1F3F7FFF,FF7F3F1F0F070301,80C0E0F0F8FCFEFF,FFFEFCF8F0E0C080 210 DATA FCFCFCFCFCFCFCFC,3F3F3F3F3F3F3F3F 220 DATA E0F0F8F0E0F0F8,F8F8D8D8D8F8F8,F0D8D8F0D8D8F0,78F0E0E0E0F078,8888D8F8D88888 230 DATA 2070D8D8F8D888,70D8C07018D870,F8F0E0F8E0F0F8 240 DATA FCFCCCCCCCCCFCFC,3838181818181818,FCFC0CFCFCC0FCFC,FCFC0CFCFC0CFCFC,CCCCCCFCFC0C0C0C 250 DATA FCFCC0FCFC0CFCFC,FCFCC0FCFCCCFCFC,FCFC0C0C0C0C0C0C,FCFCCCFCFCCCFCFC,FCFCCCFCFC0C0C0C 260 DATA 8040,2010,0804,0201 270 FOR X=33 TO 39 280 READ A$ 290 CALL CHAR(X,A$) 300 NEXT X 310 FOR X=104 TO 111 320 READ A$ 330 CALL CHAR(X,A$) 340 NEXT X 350 FOR X=48 TO 57 360 READ A$ 370 CALL CHAR(X,A$) 380 NEXT X 390 READ A$,B$,C$,D$ 400 Z$(1)=A$&B$&C$&D$ 410 Z$(2)=D$&A$&B$&C$ 420 Z$(3)=C$&D$&A$&B$ 430 Z$(4)=B$&C$&D$&A$ 440 CALL CHAR(97,Z$(1)) 450 CALL CHAR(98,Z$(4)) 460 CALL COLOR(9,9,16) 470 PRINT "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" 480 A$=CHR$(34) 490 PRINT "a!$ !! !$ !! !% &' ";A$;"$ ";A$;"$ !%b" 500 PRINT "a!% &' !% &' ! !! &' !$ !$b" 510 PRINT "a!$ &' !$ &' ! !! !! #! !%b" 520 PRINT "a&' !! !% !! !$ &' %# #% !$b" 530 PRINT "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb" 540 PRINT: : : :"<PRESS ANY KEY TO CONTINUE>":" <OR I FOR INSTRUCTIONS>": : : : : 550 X=3 560 Y=1 570 CALL COLOR(1,X,1) 580 CALL CHAR(97,Z$(Y)) 590 CALL CHAR(98,Z$(5-Y)) 600 CALL KEY(3,K,S) 610 IF S<>0 THEN 700 620 X=X+1 630 Y=Y+1 640 IF Y<5 THEN 660 650 Y=1 660 IF X<13 THEN 570 670 X=3 680 GOTO 570 690 REM INITIALIZE VARIABLES 700 R=10 710 D=1 720 S=0 730 LE=1 740 BA=24 750 DI=6 760 CALL CLEAR 770 CALL CHAR(126,"000008181C3C3E7E") 780 CALL CHAR(119,"81423C247E243CFF") 790 CALL CHAR(128,"00107C3838282800") 800 CALL CHAR(136,"38107C7C7C6C6C6C") 810 CALL CHAR(144,"007E7E7E7E7E7E00") 820 CALL CHAR(152,"10387CFE7C381") 830 CALL SCREEN(15) 840 CALL COLOR(1,2,1) 850 CALL COLOR(13,3,16) 860 CALL COLOR(14,5,15) 870 CALL COLOR(15,7,16) 880 CALL COLOR(16,16,15) 890 CALL COLOR(11,3,1) 900 DIM A(10) 910 DIM B(10) 920 IF K=73 THEN 3350 930 PRINT " hijiklmno" 940 PRINT " !!!!!!!!!!!!!!!!!!!!!!" 950 FOR X=1 TO 20 960 PRINT " ! !" 970 NEXT X 980 PRINT " !!!!!!!!!!!!!!!!!!!!!!" 990 FOR X=1 TO BA 1000 CALL HCHAR(INT(RND*20+3),INT(RND*20+6),144) 1010 NEXT X 1020 FOR X=1 TO DI 1030 CALL HCHAR(INT(RND*20+3),INT(RND*20+6),152) 1040 NEXT X 1050 FOR X=1 TO 10 1060 A(X)=INT(RND*20+6) 1070 B(X)=INT(RND*20+3) 1080 CALL GCHAR(B(X),A(X),CH) 1090 IF CH<>32 THEN 1060 1100 CALL HCHAR(B(X),A(X),136) 1110 NEXT X 1120 BU=0 1130 IF LE<4 THEN 1220 1140 BU=1 1150 NX=1 1160 NY=1 1170 BX=INT(RND*19+6) 1180 BY=INT(RND*19+3) 1190 CALL GCHAR(BY,BX,CH) 1200 IF CH<>32 THEN 1170 1210 CALL HCHAR(BY,BX,119) 1220 Q=INT(RND*20+6) 1230 W=INT(RND*20+3) 1240 CALL GCHAR(W,Q,CH) 1250 IF CH<>32 THEN 1220 1260 RT=0 1270 CALL HCHAR(1,29,48+D) 1280 GOSUB 2530 1290 CALL HCHAR(W,Q,32) 1300 REM MOVE PERSON 1310 CALL KEY(3,I,T) 1320 CALL KEY(1,X,Y) 1330 IF(X<>18)+(I=81)THEN 1360 1340 I=32 1350 GOTO 1420 1360 CALL JOYST(1,X,Y) 1370 IF(X=0)*(Y=0)THEN 1420 1380 IF X=4 THEN 1440 1390 IF X=-4 THEN 1470 1400 IF Y=4 THEN 1500 1410 IF Y=-4 THEN 1530 1420 IF(I=32)*(D>0)THEN 2370 1430 IF I<>47 THEN 1460 1440 Q=Q+1 1450 GOTO 1540 1460 IF I<>80 THEN 1490 1470 Q=Q-1 1480 GOTO 1540 1490 IF I<>81 THEN 1520 1500 W=W-1 1510 GOTO 1540 1520 IF I<>65 THEN 1540 1530 W=W+1 1540 CALL GCHAR(W,Q,CH) 1550 IF CH=136 THEN 2010 1560 IF CH=144 THEN 2050 1570 IF CH=152 THEN 2480 1580 IF CH=33 THEN 2050 1590 IF CH=126 THEN 1970 1600 IF CH=119 THEN 3180 1610 CALL HCHAR(W,Q,128) 1620 CALL SOUND(50,300,0,600,0,1200,0) 1630 REM MOVE ROBOTS 1640 IF BU=1 THEN 3040 1650 FOR X=1 TO 10 1660 IF A(X)=0 THEN 1940 1670 CALL HCHAR(B(X),A(X),32) 1680 CH=.24+(LE*.03) 1690 IF CH<=.43 THEN 1710 1700 CH=.43 1710 IF RND>.5+(CH/2)THEN 1780 1720 IF A(X)=Q THEN 1780 1730 IF A(X)<Q THEN 1760 1740 A(X)=A(X)-1 1750 GOTO 1770 1760 A(X)=A(X)+1 1770 IF(RND>CH/(.5+(CH/2)))+(B(X)=W)THEN 1830 1780 IF B(X)=W THEN 1730 1790 IF B(X)<W THEN 1820 1800 B(X)=B(X)-1 1810 GOTO 1830 1820 B(X)=B(X)+1 1830 CALL GCHAR(B(X),A(X),CH) 1840 IF CH=128 THEN 2010 1850 IF(CH=136)*(LE<5)THEN 2920 1860 IF CH=32 THEN 1930 1870 A(X)=0 1880 S=S+25 1890 CALL SOUND(50,-5,0) 1900 R=R-1 1910 IF R=0 THEN 2100 1920 GOTO 1940 1930 CALL HCHAR(B(X),A(X),136) 1940 NEXT X 1950 GOTO 1290 1960 REM DEATH MESSAGES 1970 GOSUB 2780 1980 CALL CLEAR 1990 PRINT "YOU RAN INTO A JUNK PILE":"ON LEVEL";LE: : 2000 GOTO 2660 2010 GOSUB 2780 2020 CALL CLEAR 2030 PRINT "YOU HAVE BEEN CAPTURED BY":"A ROBOT ON LEVEL";LE: : 2040 GOTO 2660 2050 GOSUB 2780 2060 CALL CLEAR 2070 PRINT "YOU HAVE BEEN ELECTRIFIED ":"ON LEVEL";LE: : 2080 GOTO 2660 2090 REM GOING UP A LEVEL 2100 CALL COLOR(15,7,15) 2110 S=S+125 2120 FOR X=1 TO 5 2130 CALL SCREEN(7) 2140 CALL SOUND(-1000,110,0,220,0,400,0,-7,0) 2150 CALL SCREEN(15) 2160 CALL SOUND(-1000,300,0,600,0,800,0,-7,0) 2170 NEXT X 2180 CALL SOUND(-1,40000,30) 2190 R=10 2200 LE=LE+1 2210 IF BA<=12 THEN 2230 2220 BA=BA-4 2230 IF DI<=3 THEN 2250 2240 DI=DI-1 2250 D=INT(D/2) 2260 CALL HCHAR(1,29,48+D) 2270 GOSUB 2530 2280 CALL CLEAR 2290 CALL COLOR(15,7,16) 2300 PRINT "ENTERING LEVEL";LE: : 2310 PRINT "CURRENT SCORE: ";S: : : 2320 FOR JJ=1 TO 1000 2330 NEXT JJ 2340 CALL CLEAR 2350 GOTO 930 2360 REM TELEPORTING 2370 GOSUB 2530 2380 D=D-1 2390 S=S-50 2400 CALL HCHAR(1,29,48+D) 2410 CALL HCHAR(W,Q,32) 2420 Q=INT(RND*20+6) 2430 W=INT(RND*20+3) 2440 CALL GCHAR(W,Q,CH) 2450 IF CH<>32 THEN 2420 2460 GOSUB 2530 2470 GOTO 1290 2480 D=D+1 2490 CALL HCHAR(1,29,48+D) 2500 S=S+75 2510 CALL SOUND(50,-3,0,700,0) 2520 GOTO 1610 2530 CALL HCHAR(W,Q,128) 2540 FOR X=1 TO 5 2550 FOR Y=1 TO INT(RND*20+2) 2560 NEXT Y 2570 CALL COLOR(13,16,16) 2580 CALL SOUND(10,500,0) 2590 FOR Y=1 TO INT(RND*20+2) 2600 NEXT Y 2610 CALL COLOR(13,6,16) 2620 CALL SOUND(10,200,0) 2630 NEXT X 2640 RETURN 2650 REM END OF GAME 2660 PRINT "YOUR SCORE IS ";S: : 2670 PRINT "PLAY AGAIN (Y/N)?" 2680 T=0 2690 CALL KEY(3,K,S) 2700 IF K=89 THEN 700 2710 IF K=78 THEN 2770 2720 T=T+1 2730 IF T<250 THEN 2690 2740 CALL CLEAR 2750 CALL SCREEN(16) 2760 GOTO 440 2770 END 2780 CALL HCHAR(W,Q,128) 2790 FOR X=1 TO 5 2800 FOR Y=1 TO 10 2810 NEXT Y 2820 CALL COLOR(13,16,7) 2830 CALL SOUND(-1000,110,0,120,0,130,0,-6,0) 2840 FOR Y=1 TO 20 2850 NEXT Y 2860 CALL COLOR(13,6,16) 2870 CALL SOUND(-1000,220,0,240,0,260,0,-7,0) 2880 NEXT X 2890 CALL SOUND(-8,40000,0) 2900 RETURN 2910 REM ROBOT ROUTINES 2920 FOR Y=1 TO 10 2930 IF(A(X)=A(Y))*(B(X)=B(Y))*(X<>Y)THEN 2950 2940 NEXT Y 2950 S=S+50 2960 R=R-2 2970 A(Y)=0 2980 CALL HCHAR(B(X),A(X),32) 2990 IF LE>2 THEN 3010 3000 CALL HCHAR(B(X),A(X),126) 3010 A(X)=0 3020 CALL SOUND(300,300,0,-3,0) 3030 GOTO 1910 3040 CALL HCHAR(BY,BX,32) 3050 BX=BX+NX 3060 IF(BX<>25)*(BX<>6)THEN 3080 3070 NX=-NX 3080 BY=BY+NY 3090 IF(BY<>22)*(BY<>3)THEN 3110 3100 NY=-NY 3110 CALL GCHAR(BY,BX,CH) 3120 IF CH=32 THEN 3160 3130 IF CH=136 THEN 3270 3140 IF CH=128 THEN 3180 3150 CALL SOUND(200,440,0,880,0,523,0) 3160 CALL HCHAR(BY,BX,119) 3170 GOTO 1650 3180 S=S+100 3190 D=D+1 3200 CALL HCHAR(1,29,48+D) 3210 CALL HCHAR(W,Q,128) 3220 CALL SOUND(80,1397,0) 3230 CALL SOUND(80,1319,0) 3240 CALL SOUND(80,1397,0) 3250 BU=0 3260 GOTO 1650 3270 FOR X=1 TO 10 3280 IF(A(X)=BX)*(B(X)=BY)THEN 3300 3290 NEXT X 3300 A(X)=0 3310 R=R-1 3320 IF R=0 THEN 2100 3330 GOTO 3150 3340 REM INSTRUCTIONS 3350 CALL CLEAR 3360 CALL SOUND(200,440,0,880,0,523,0) 3370 PRINT " hijiklmno" 3380 PRINT: : : 3390 PRINT " YOU HAVE BEEN IMPRISONED" 3400 PRINT:"IN A ROOM BY A MAD SCIENTIST": :" YOU MUST AVOID THE BLUE": :" ROBOTS AND CAUSE THEM TO" 3410 PRINT:"CRASH INTO THE RED BARRIERS.": : : 3420 GOSUB 3670 3430 PRINT " hijiklmno": : : 3440 PRINT " ";CHR$(128);"-- YOU": :" ";CHR$(136);"-- A ROBOT": :" ";CHR$(144);"-- A BARRIER": : 3450 PRINT " ";CHR$(152);"-- A TELEPORT RECHARGER": :" w-- SPUNKY THE MARTIAN": : 3460 GOSUB 3670 3470 PRINT " hijiklmno": : : 3480 PRINT " YOU CAN CONTROL YOUR": :"MOVEMENT BY THE KEYBOARD OR": :" THE JOYSTICK.": : 3490 PRINT " Q - UP P - LEFT":" A - DOWN / - RIGHT": : 3500 PRINT " USE APPROPRIATE DIRECTIONS": :" ON THE JOYSTICK.": : 3510 GOSUB 3670 3520 PRINT " hijiklmno": : : 3530 PRINT "YOU CAN TELEPORT TO ANOTHER": :" PLACE ON THE BOARD BY": :" PRESSING THE SPACE BAR OR": : 3540 PRINT " THE FIRE BUTTON": :" HOWEVER, YOU ONLY HAVE A": :"CERTAIN NUMBER OF TELEPORTS,": : 3550 PRINT "INDICATED BY A NUMBER AT THE": :" TOP RIGHT HAND SIDE OF THE": :" SCREEN" 3560 GOSUB 3670 3570 PRINT " hijiklmno": : : 3580 PRINT " YOU CAN GAIN ADDITIONAL": :" TELEPORTS BY RUNNING OVER": :" DIAMONDS": : 3590 PRINT " GETTING SPUNKY WILL ALSO": :" GIVE YOU ANOTHER TELEPORT": : 3600 GOSUB 3670 3610 PRINT " hijiklmno": : : 3620 PRINT " EVERY TIME ALL TEN ROBOTS": :" ON A LEVEL DIE, YOU GO TO": :" THE NEXT LEVEL.": : 3630 PRINT "SPUNKY DOES NOT APPEAR UNTIL": :" THE FOURTH LEVEL.": : :" GOOD LUCK------": : : 3640 GOSUB 3670 3650 CALL CLEAR 3660 GOTO 930 3670 PRINT: :" <HIT ANY KEY TO CONTINUE>" 3680 CALL KEY(3,K,ST) 3690 IF ST=0 THEN 3680 3700 CALL CLEAR 3710 CALL SOUND(200,440,0,880,0,523,0) 3720 RETURN
Posted Sun Oct 30, 2011 6:37 PM
Posted Sun Oct 30, 2011 11:05 PM
0 members, 1 guests, 0 anonymous users