home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 010 / tron.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-04-24  |  1.8 KB  |  75 lines

  1. 10   REM                 Snake - a traditional computer game
  2. 20   REM                 (c)  1982 Peter Quinn
  3. 30   DEFINT A-Z
  4. 40   TI=VAL(RIGHT$(TIME$,2))
  5. 50   RANDOMIZE TI
  6. 60   OPTION BASE 1
  7. 70   DIM P(2),D(2)
  8. 80   KEY OFF:CLS:SCREEN 0,0,0:WIDTH 80
  9. 90   DEF SEG=&H40
  10. 92   IF (PEEK(&H10) AND &H30)=&H30 THEN DEF SEG=&HB000 ELSE DEF SEG=&HB800
  11. 95   PRINT">>>>>>>>>>>>>>>>>>>>>>>SNAKE>>>>>>>>>>>>>>>>>>>>>>>>"
  12. 100   INPUT"ENTER VALUE FOR DELAY (`Q' FOR QUIT, `RETURN' FOR SAME VALUE) ";Z1$
  13. 105   CLS:C=C+1
  14. 110   IF ZA$="Q" OR Z1$="q" THEN GOTO 650
  15. 120   IF Z1$="" THEN GOTO 140
  16. 130   Z=VAL(Z1$)
  17. 140   A=219:B=177
  18. 150   P(1)=2010
  19. 160   D(1)=2
  20. 170   P(2)=1990
  21. 180   D(2)=-2
  22. 190   R!=0.8
  23. 200   FOR I=0 TO 160 STEP 2
  24. 210     POKE I,178
  25. 220     POKE I+(4000-160),178
  26. 230   NEXT I
  27. 240   FOR I=0 TO 4000 STEP 160
  28. 250     POKE I,178
  29. 260     POKE I+158,178
  30. 270   NEXT
  31. 280   FOR I=11 TO 14
  32. 290     KEY(I) ON
  33. 300   NEXT
  34. 310   ON KEY(11) GOSUB 450
  35. 320   ON KEY(12) GOSUB 460
  36. 330   ON KEY(13) GOSUB 470
  37. 340   ON KEY(14) GOSUB 480
  38. 350   P(1)=P(1)+D(1)
  39. 360   P(2)=P(2)+D(2)
  40. 370   R!=R!+(1-R!)/20:N=N+1
  41. 380   IF PEEK(P(1))<>32 THEN GOTO 490
  42. 390   IF PEEK(P(2))<>32 THEN GOTO 500
  43. 400   POKE P(1),A
  44. 410   POKE P(2),B
  45. 420   GOSUB 510
  46. 430   FOR Q=1 TO Z:NEXT Q
  47. 440   GOTO 350
  48. 450   D(1)=-160:RETURN
  49. 460   D(1)=-2:RETURN
  50. 470   D(1)=2:RETURN
  51. 480   D(1)=160:RETURN
  52. 490   GOSUB 700:PRINT CHR$(11);"YOU LOSE   ";:N=N/10:GOTO 600
  53. 500   GOSUB 710:PRINT CHR$(11);"YOU WIN    ";:GOTO 600
  54. 510   IF PEEK(P(2)+D(2))=32 AND RND<R! THEN RETURN
  55. 520   IF ABS(D(2))=2 THEN D(2)=160:GOTO 560
  56. 530   IF ABS(D(2))=160 THEN D(2)=2
  57. 540   IF P(2)<2000 AND D(2)=160 THEN D(2)=-D(2)
  58. 550   GOTO 580
  59. 560   DI=P(2)/160
  60. 570   IF DI>12 THEN D(2)=-D(2):GOTO 580
  61. 580   IF PEEK(D(2)+P(2))<>32 THEN D(2)=-D(2)
  62. 590   RETURN
  63. 600   FOR I=1 TO 1000:NEXT
  64. 610   IF N>HIGH THEN HIGH=N
  65. 620   PT=PT+N:PRINT"SCORE: ";N;" AVERAGE SCORE: ";INT(PT/C);" HIGH SCORE: ";HIGH
  66. 630   N=0
  67. 640   GOTO 100
  68. 650   PRINT"AVERAGE SCORE: ";INT(PT/C);" HIGH SCORE: ";HIGH
  69. 660   PRINT"THANKS FOR PLAYING"
  70. 670   END
  71. 700   FOR I=100 TO 50 STEP -5:SOUND I,1:NEXT                                  
  72. 705   FOR I=1 TO 8:SOUND 37,1:SOUND 39,1:NEXT:RETURN
  73. 710   FOR I=200 TO 300 STEP 20:SOUND I,1:NEXT:SOUND 32767,2
  74. 725   FOR I=1 TO 2:SOUND 400,3:SOUND 600,4:SOUND 32767,1:NEXT:RETURN
  75.