! SNAKE IN THE GRASS ! (STARRING BILLY BALL) ! RXB COMMANDS USED, ! CALL COLLIDE, CALL RMOTION, CALL JOYMOTION ! SCREEN INITIALIZE 10 CALL CLEAR::CALL SCREEN(5)::CALL MAGNIFY(3) ! GRAPHICS DEFS ! 36 BILLY BALL ! 40 SNAKE <<< ! 44 SNAKE >>> ! 104 ARROW <<< ! 96-100 GRASS 100 CALL CHAR(36,"000000000001070F0F1F1F1F0F0F07010000000000C0F0F8C8CCFCDCC0F8F0C0") 110 CALL CHAR(40,"00000000000E1B0F0303060C0C0E0F0700000000000000000020403C0606FEFC") 120 CALL CHAR(44,"00000000000000000004023C60607F3F000000000070D8F0C0C060303070F0E0") 200 CALL CHAR(96,"0000000020226AFF00000000008090D50000000040426EFF00000000082444EF") 205 CALL CHAR(100,"FFFFFFFFFFFFFFFF") 210 CALL CHAR(104,"00000000000000000008183F180800000000000000000000000030E030000000") 500 CALL COLOR(9,13,1) ! LEV 900 LEV=1 ! GAME START 1000 GOSUB 32100 ! GET GAME SCREEN 1010 CALL SPRITE(#1,36,16,104,20)::J=0::JT=0::JS=0 ! MAIN LOOP ! GOSUB 4100 ! JOYMOTION ! GOSUB 4200 ! KEY ! GOSUB 4300 ! JUMPING? ! GOSUB 4400 ! SPRITE COINC @ LEV ! GOSUB 4500 ! SPRITE MOVEMENT @ LEV 1100 GOSUB 4100::GOSUB 4200::GOSUB 4300::GOSUB 4400::GOSUB 4500::GOTO 1100 ! JOY 4100 CALL JOYMOTION(1,X,Y,#1,0,9)::CALL KEY(1,K,S)::CALL POSITION(#1,A,B)::IF B<16 THEN CALL LOCATE(#1,A,20) ELSE IF B>240 THEN 4105 ELSE 4199 4105 LEV=LEV+1::GOTO 1000 4199 RETURN ! KEY? 4200 IF K=18 THEN 4205 ELSE 4299 4205 IF J=1 THEN 4299 4210 J=1::JT=0 4299 RETURN ! JUMPING? 4300 IF J<>1 THEN 4399 4305 JT=JT+1 :: IF JT>10 THEN 4310 ELSE 4315 4310 J=0::JS=0::JT=0::CALL POSITION(#1,A,B)::CALL LOCATE(#1,104,B)::GOTO 4399 4315 ON JT GOTO 4320,4320,4320,4320,4320,4325,4325,4325,4325,4325 4320 JS=-8::GOTO 4330 4325 JS=8 4330 CALL MOTION(#1,JS,Y) 4399 RETURN ! SPRITE COINC @ LEV 4400 ON LEV GOTO 4410,4410 ! LEV 1 & 2 4410 CALL COLLIDE(#1,#2,8,N1,N2)::IF N1+N2 THEN 32300 ELSE 4499 4499 RETURN ! SPRITE MOVEMENT @ LEV 4500 ON LEV GOTO 4510,4520 ! LEV 1 4510 IF RND<.5 THEN 4511 ELSE 4599 4511 CALL RMOTION(#2)::SP=SP+4::IF SP>44 THEN SP=40 4512 CALL PATTERN(#2,SP)::GOTO 4599 ! LEV 2 4520 GOTO 4599 ! IT'S AN ARROW.... 4599 RETURN ! GAME SCREEN 32100 CALL CLEAR::CALL DELSPRITE(ALL) 32105 CALL HPUT(15,1,"`c`abca`bacab`ca`acba``abc`a`bc`dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd") 32110 GOSUB 32200 32199 return ! ENEMY @ LEV 32200 ON LEV GOTO 32210,32220 ! LEV 1 32210 CALL SPRITE(#2,40,2,104,128,0,-10)::SP=40::GOTO 32299 ! LEV 2 32220 CALL SPRITE(#2,104,2,100,255,0,-20)::GOTO 32299 32299 RETURN ! PLAYER DEATH 32300 CALL MOTION(#1,16,0)::FOR SN=440 TO 220 STEP-16::CALL SOUND(-150,SN,1,SN+1,1)::NEXT SN::CALL DELSPRITE(#1) 32305 FOR DE=1 TO 1000::NEXT DE 32310 CALL CLEAR::CALL DELSPRITE(ALL)::GOTO 1000