-
Notifications
You must be signed in to change notification settings - Fork 0
/
fallingsnake.v1.bas.txt
74 lines (63 loc) · 2.42 KB
/
fallingsnake.v1.bas.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
0 REM SET TO 40X30 CHARS SCREEN
1 SCREEN 0
2 HM$=CHR$(19) : REM HOME CHARACTER
3 DIM EX(9)
4 FOR T=0TO8: READ C: EX(T)=C: NEXT : REM READ PETSCII EXPLOSION
9 REM TITLE SCREEN -----------------
10 REM SET COLORS TO BLACK AND WHITE, CLEAR SCREEN
11 COLOR 1,0: CLS
12 PRINT:PRINT:PRINT:PRINT : REM PRINT TITLE
13 PRINT " FALLING SNAKE": PRINT: COLOR 15
14 PRINT " YOU ARE FALLING DOWN A HOLE"
15 PRINT " AVOID ALL OBSTACLES"
16 COLOR 7: PRINT " PRESS SPACE TO START"
17 BA$=CHR$(113):BB$=CHR$(119) : REM BALL SYMBOLS
18 COLOR 2,0 : PRINT " "+BA$
19 PRINT " "+BA$:PRINT " "+BA$
20 PRINT " "+BA$+BA$+BA$+BA$+BA$+BA$+BA$+BA$+BA$;:COLOR 8:PRINT BB$
25 GET A$: IF A$="" GOTO 25 : REM WAIT FOR KEY
35 TS=0 : REM SET TOP SCORE
49 REM START GAME -----------------
50 COLOR 1,0: CLS
51 FOR T=1TO29:PRINT:NEXT
52 BO=29*256:SI=42: : REM BOTTOMSCREENOFFSET, STONEIMAGE
53 PO=15*256:PI=81:PC=2:PX=20 : REM PLAYEROFFSET, PLAYERIMAGE, PLAYERCOLOR
54 DE=1000 : REM DELAY VALUE
55 S=0 : REM SET SCORE
199 REM GAME LOOP -----------------
200 GET A$
201 IF A$=CHR$(29) AND PX<40 THEN PX=PX+1 : REM GO RIGHT
202 IF A$=CHR$(157) AND PX>0 THEN PX=PX-1: REM GO LEFT
210 X=INT(RND(1)*40)*2: C=INT(RND(1)*15)+1 : REM GET RANDOM STONE POSITION
211 PE=VPEEK( 0, PO+(PX*2))
212 IF PE=SI THEN GOTO 400
220 VPOKE 0, BO+X, SI: VPOKE 0, BO+X+1, C
221 VPOKE 0, PO+(PX*2), PI: VPOKE 0, PO+(PX*2)+1, PC
296 FOR W=1 TO DE: NEXT : REM DELAY, SLOW DOWN CODE
297 PRINT : S=S+1 : DE=DE-1 : IF DE<0 THEN DE=0
298 GOTO 200
399 REM GAME OVER -----------------
400 IF S>TS THEN TS=S
401 REM DRAW EXPLOSION
402 FOR XX=0TO2:FOR YY=0TO2
403 XS=XX+PX-1: YS=YY+15-1 : REM SCREEN X,Y
404 IF PX<1 THEN XS=XX+1 : REM CHECK PLAYER X TO BE ON SCREEN
405 IF PX>38 THEN XS=XX+38
406 DO=XX+(YY*3):SO=(XS*2)+(YS*256) : REM CALC DATA OFFSET, SCREEN OFFSET
407 VPOKE 0,SO,EX(DO) : REM WRITE TO SCREEN
408 NEXT:NEXT
410 REM EXPLOSION COLOR EFFECT
411 FOR T=1 TO 50
412 C0=INT(RND(1)*255)
413 C1=INT(RND(1)*255)
414 VPOKE 1,$FA00,C0: VPOKE 1,$FA01,C1
415 NEXT: VPOKE 1,$FA00,0: VPOKE 1,$FA01,0
421 PRINT HM$:PRINT:PRINT:PRINT " GAME OVER": PRINT
422 PRINT " SCORE: "+STR$(S);
425 PRINT " TOP SCORE="+STR$(TS)
430 COLOR 7: PRINT: PRINT " PRESS SPACE TRY AGAIN" : PRINT:PRINT
440 GET A$
441 IF A$ = "" OR A$=CHR$(29) OR A$=CHR$(157) THEN GOTO 440
452 GOTO 50
2000 REM PETSCI EXPLOSION
2001 DATA $4D, $20 , $4E, $20, $D6, $20, $4E, $20, $4D