home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / games / arcade / stonedlx / stonedlx.gfa (.txt) < prev    next >
GFA-BASIC Atari  |  1993-08-14  |  28KB  |  1,268 lines

  1. CLEAR
  2. pl#=1
  3. npl#=1
  4. js#=1
  5. skill_level#=1
  6. IF XBIOS(4)<>0
  7.   ALERT 3,"  |  TO PLAY STONE-AGE|GO TO LOW RESOLUTION",1,"EXIT",b#
  8.   SYSTEM
  9. ENDIF
  10. DIM stone#(32,19),stickx#(10),sticky#(10),points#(2),player#(2)
  11. DIM strip$(100),file$(50),zeit#(2),punkte#(2)
  12. DIM screen$(95,31),wlvl#(2),man#(2),score#(2)
  13. DIM keydecode%(10)
  14. file$=""
  15. GOSUB screen_init
  16. FOR i#=0 TO 50
  17.   READ strip$(i#)
  18.   EXIT IF strip$(i#)="***"
  19. NEXT i#
  20. strip$(i#)=""
  21. strip$(i#+1)=""
  22. GOSUB makecolor
  23. SETCOLOR 15,7,7,7
  24. DATA Info, Instructions
  25. DATA ----------------
  26. DATA 1,2,3,4,5,6,""
  27. DATA Disk, Load World , Save World ,""
  28. DATA Play, PLAYERS  , One Player , Two Players , LEVEL TO START , Level 1 , Level 2 , Level 3 , Level 4 , Level 5 , Joy Stick , Keypad ,""
  29. DATA Genesis, New World , Create/Edit ,""
  30. DATA Leave, Bye-Bye ,""
  31. DATA ***
  32. CLS
  33. GET 75,45,235,130,help$
  34. GET 75,45,235,90,name_input$
  35. GET 0,0,309,179,clear$
  36. GET 0,0,9,9,blank$
  37. GOSUB mainscreen
  38. DO
  39.   ON MENU
  40.   '  Print At(1,1);Mousex,Mousey
  41.   '  Z$=Inkey$
  42.   '  Print At(1,3);Len(Z$),Left$(Z$)''Asc(Z$),Right$(Z$)''Asc(Right$(Z$))
  43. LOOP
  44. PROCEDURE screen_init
  45.   FOR x#=1 TO 95
  46.     screen$(x#,1)="0000000000000000000000000000000"
  47.   NEXT x#
  48.   screen$(1,1)="NO"
  49.   screen$(20,1)="NO"
  50.   screen$(39,1)="NO"
  51.   screen$(58,1)="NO"
  52.   screen$(77,1)="NO"
  53. RETURN
  54. PROCEDURE mainscreen
  55.   MENU strip$()
  56.   MENU 15,2
  57.   MENU 18,2
  58.   MENU 15+npl#,1
  59.   MENU 24+js#,1
  60.   SHOWM
  61.   DEFTEXT 12,2,0,32
  62.   TEXT 15,50,"S T O N E - A G E"
  63.   TEXT 55,80,"D E L U X E !"
  64.   DEFTEXT 3,0,0,13
  65.   TEXT 58,120,"Modified By John Hickey"
  66.   DEFTEXT 7,0,0,4
  67.   ttte$="From An ST Conversion By David Addison"
  68.   TEXT 48,170,ttte$
  69.   DEFTEXT 7,0,0,4
  70.   TEXT 70,190,"Of A Program By Klaus Kramer!"
  71.   '
  72.   ON MENU GOSUB menu
  73. RETURN
  74. PROCEDURE menu
  75.   a$=strip$(MENU(0))
  76.   IF MID$(a$,1,6)=" Level"
  77.     STICK 0
  78.     ALERT 3,"| Would You Like To| Practice Or Play?",2,"Practice|PLAY!",b#
  79.     play#=0
  80.     IF b#=2
  81.       play#=1
  82.       STICK 0
  83.       ALERT 3,"| Select Your SKILL Level",2,"Simple|Tougher|HARD!",b#
  84.       skill_level#=b#
  85.     ENDIF
  86.     FOR x#=1 TO 2
  87.       wlvl#(x#)=VAL(MID$(a$,8))
  88.     NEXT x#
  89.     HIDEM
  90.     GOSUB stoneage_play
  91.   ENDIF
  92.   IF a$=" New World "
  93.     STICK 0
  94.     ALERT 1,"| This Will OBLITERATE|      All Levels!",2,"Do It!|I Goofed!",b#
  95.     IF b#=1
  96.       GOSUB screen_init
  97.     ENDIF
  98.   ENDIF
  99.   IF a$=" Load World "
  100.     GOSUB load_world
  101.   ENDIF
  102.   IF a$=" Save World "
  103.     GOSUB save_world
  104.   ENDIF
  105.   IF a$=" Create/Edit "
  106.     GOSUB create_edit
  107.   ENDIF
  108.   IF a$=" Bye-Bye "
  109.     STICK 0
  110.     ALERT 1,"Time To Go?",2,"Yep|NO!",b#
  111.     IF b#=1
  112.       SETCOLOR 0,7,7,7
  113.       SETCOLOR 15,0,0,0
  114.       SETCOLOR 1,7,0,0
  115.       SETCOLOR 2,0,7,0
  116.       END
  117.     ENDIF
  118.   ENDIF
  119.   IF a$=" One Player "
  120.     npl#=1
  121.   ENDIF
  122.   IF a$=" Two Players "
  123.     npl#=2
  124.   ENDIF
  125.   IF a$=" Instructions"
  126.     GOSUB instructions
  127.   ENDIF
  128.   IF a$=" Joy Stick "
  129.     js#=0
  130.   ENDIF
  131.   IF a$=" Keypad "
  132.     js#=1
  133.   ENDIF
  134.   MENU OFF
  135.   MENU 16,0
  136.   MENU 17,0
  137.   MENU 24,0
  138.   MENU 25,0
  139.   MENU 15+npl#,1
  140.   MENU 24+js#,1
  141. RETURN
  142. REPEAT
  143.   a$=INKEY$
  144. UNTIL a$<>""
  145. '
  146. PROCEDURE load_world
  147.   FILESELECT "\*.SCR",file$,a$
  148.   IF a$<>""
  149.     file$=a$
  150.     DEFMOUSE 2
  151.     OPEN "I",#1,a$
  152.     FOR x#=1 TO 95
  153.       INPUT #1,a$
  154.       screen$(x#,1)=a$
  155.     NEXT x#
  156.     CLOSE
  157.   ENDIF
  158.   DEFMOUSE 0
  159. RETURN
  160. PROCEDURE save_world
  161.   FILESELECT "\*.scr",file$,a$
  162.   IF a$<>""
  163.     DEFMOUSE 2
  164.     file$=a$
  165.     OPEN "O",#2,a$
  166.     FOR x#=1 TO 95
  167.       PRINT #2,screen$(x#,1)
  168.     NEXT x#
  169.     CLOSE
  170.   ENDIF
  171.   DEFMOUSE 0
  172. RETURN
  173. PROCEDURE create_edit
  174.   GOSUB init
  175.   CLS
  176.   COLOR 2
  177.   LINE 0,180,310,180
  178.   LINE 310,0,310,180
  179.   PUT 15,183,willi$,3
  180.   PUT 48,183,rock$,3
  181.   PUT 85,183,cabbage$,3
  182.   PUT 125,183,wall$,3
  183.   PUT 159,183,world$,3
  184.   SETCOLOR 15,7,7,7
  185.   DEFTEXT 3,0,0,4
  186.   TEXT 5,198,"Willi Rock Cabbage Wall World"
  187.   DEFTEXT 7,0,0,4
  188.   TEXT 149,198,"World"
  189.   DEFTEXT 2,16,0,6
  190.   TEXT 185,190,"1 2 3 4 5"
  191.   DEFTEXT 6,0,0,4
  192.   TEXT 195,198,"Level Names"
  193.   DEFTEXT 3,0,4
  194.   TEXT 285,188,"MAIN"
  195.   TEXT 285,198,"MENU"
  196.   wlvl#(pl#)=1
  197.   GOSUB world_select
  198.   DO
  199.     WHILE MOUSEK=0
  200.       z$=INKEY$
  201.       IF MID$(z$,2,1)="b"
  202.         GOSUB help_edit
  203.       ENDIF
  204.       '      Print At(1,1);Mousex,Mousey
  205.     WEND
  206.     mx#=MOUSEX
  207.     my#=MOUSEY
  208.     mk#=MOUSEK
  209.     EXIT IF (mx#>283 AND mx#<310) AND my#>180
  210.     IF my#>180
  211.       IF mx#>183 AND mx#<273 AND my#<=190
  212.         IF mk#=1
  213.           wlvl#(pl#)=ABS(-1+(mx#>202)+(mx#>223)+(mx#>243)+(mx#>263))
  214.           GOSUB world_select
  215.         ELSE
  216.           GOSUB copy_erase
  217.         ENDIF
  218.       ENDIF
  219.       IF mx#>183 AND mx#<273 AND my#>190
  220.         GOSUB change_name
  221.       ENDIF
  222.       IF mx#>12 AND mx#<169
  223.         DEFTEXT 3,0,0,4
  224.         TEXT 5,198,"Willi Rock Cabbage Wall World"
  225.         DEFTEXT 7,0,0,4
  226.         IF mx#<26
  227.           drm$=willi$
  228.           drm#=2
  229.           TEXT 5,198,"Willi"
  230.         ENDIF
  231.         IF mx#>45 AND mx#<58
  232.           drm$=rock$
  233.           drm#=1
  234.           TEXT 41,198,"Rock"
  235.         ENDIF
  236.         IF mx#>83 AND mx#<95
  237.           drm$=cabbage$
  238.           drm#=3
  239.           TEXT 71,198,"Cabbage"
  240.         ENDIF
  241.         IF mx#>123 AND mx#<135
  242.           drm$=wall$
  243.           drm#=4
  244.           TEXT 119,198,"Wall"
  245.         ENDIF
  246.         IF mx#>157 AND mx#<169
  247.           drm$=world$
  248.           drm#=0
  249.           TEXT 149,198,"World"
  250.         ENDIF
  251.       ENDIF
  252.     ENDIF
  253.     IF my#<180 AND mx#<310
  254.       IF mk#=2
  255.         drt$=drm$
  256.         drt#=drm#
  257.         drm$=blank$
  258.         drm#=5
  259.       ENDIF
  260.       PUT INT(mx#/10)*10,INT(my#/10)*10,drm$
  261.       a$=screen$((wlvl#(pl#)-1)*19+2+INT(my#/10),1)
  262.       MID$(a$,INT(mx#/10)+1,1)=STR$(drm#)
  263.       screen$((wlvl#(pl#)-1)*19+2+INT(my#/10),1)=a$
  264.       IF mk#=2
  265.         drm$=drt$
  266.         drm#=drt#
  267.       ENDIF
  268.     ENDIF
  269.   LOOP
  270.   CLS
  271.   GOSUB mainscreen
  272. RETURN
  273. '
  274. PROCEDURE copy_erase
  275.   STICK 0
  276.   ALERT 2,"|    Copy/Erase Level     | |     Which One?",3,"Copy|Erase|Neither",b#
  277.   IF b#=1
  278.     GOSUB copy
  279.   ENDIF
  280.   IF b#=2
  281.     GOSUB erase
  282.   ENDIF
  283. RETURN
  284. '
  285. PROCEDURE copy
  286.   GET 75,45,235,90,temp$
  287.   PUT 75,45,name_input$
  288.   BOX 77,47,233,88
  289.   PRINT AT(12,8);"CLICK On Level"
  290.   PRINT AT(12,9);"To Copy FROM"
  291.   DO
  292.     REPEAT
  293.     UNTIL MOUSEK
  294.     mx#=MOUSEX
  295.     my#=MOUSEY
  296.     mk#=MOUSEK
  297.     EXIT IF mx#>183 AND mx#<273 AND my#<=190
  298.   LOOP
  299.   cfrom#=ABS(-1+(mx#>202)+(mx#>223)+(mx#>243)+(mx#>263))
  300.   PUT 75,45,name_input$
  301.   BOX 77,47,233,88
  302.   PRINT AT(12,8);"CLICK On Level"
  303.   PRINT AT(12,9);"  To Copy TO"
  304.   PAUSE 10
  305.   DO
  306.     REPEAT
  307.     UNTIL MOUSEK
  308.     mx#=MOUSEX
  309.     my#=MOUSEY
  310.     mk#=MOUSEK
  311.     EXIT IF mx#>183 AND mx#<273 AND my#<=190
  312.   LOOP
  313.   cto#=ABS(-1+(mx#>202)+(mx#>223)+(mx#>243)+(mx#>263))
  314.   PUT 75,45,temp$
  315.   mx#=0
  316.   my#=0
  317.   mk#=0
  318.   PAUSE 10
  319.   FOR i#=1 TO 19
  320.     screen$(i#+(cto#-1)*19,1)=screen$(i#+(cfrom#-1)*19,1)
  321.   NEXT i#
  322.   wlvl#(pl#)=cto#
  323.   GOSUB world_select
  324. RETURN
  325. '
  326. PROCEDURE erase
  327.   GET 75,45,235,90,temp$
  328.   PUT 75,45,name_input$
  329.   BOX 77,47,233,88
  330.   PRINT AT(12,8);"CLICK On Level"
  331.   PRINT AT(12,9);"  To ERASE"
  332.   DO
  333.     REPEAT
  334.     UNTIL MOUSEK
  335.     mx#=MOUSEX
  336.     my#=MOUSEY
  337.     mk#=MOUSEK
  338.     EXIT IF mx#>183 AND mx#<273 AND my#<=190
  339.   LOOP
  340.   elvl#=ABS(-1+(mx#>202)+(mx#>223)+(mx#>243)+(mx#>263))
  341.   PUT 75,45,name_input$
  342.   PAUSE 10
  343.   PUT 75,45,temp$
  344.   b$="|  Erase Level "+STR$(elvl#)+"?  "
  345.   STICK 0
  346.   ALERT 2,b$,2,"You Bet|Oops,No!",b#
  347.   IF b#=1
  348.     FOR i#=1 TO 19
  349.       screen$(i#+(elvl#-1)*19,1)="0000000000000000000000000000000"
  350.     NEXT i#
  351.     screen$(1+(elvl#-1)*19,1)="NO"
  352.     wlvl#(pl#)=elvl#
  353.     GOSUB world_select
  354.   ENDIF
  355. RETURN
  356. '
  357. PROCEDURE world_select
  358.   HIDEM
  359.   PUT 0,0,clear$
  360.   DEFFILL 0,2,8
  361.   a$="188207230249270"
  362.   FOR y#=1 TO 5
  363.     FILL VAL(MID$(a$,((y#-1)*3+1),3)),189
  364.   NEXT y#
  365.   DEFFILL 7,2,8
  366.   FILL VAL(MID$(a$,((wlvl#(pl#)-1)*3+1),3)),189
  367.   GOSUB show_screen
  368.   IF na$="NO"
  369.     GOSUB change_name
  370.   ENDIF
  371.   DEFTEXT 6,0,0,4
  372.   TEXT 183,198,"                "
  373.   TEXT 183,198,na$
  374.   screen$(1+(wlvl#(pl#)-1)*19,1)=na$
  375.   SHOWM
  376. RETURN
  377. '
  378. PROCEDURE change_name
  379.   GET 75,45,235,90,temp$
  380.   PUT 75,45,name_input$
  381.   BOX 77,47,233,87
  382.   PRINT AT(11,8);"Name For This Level"
  383.   PRINT AT(11,10);">";
  384.   FORM INPUT 16,na$
  385.   PUT 75,45,temp$
  386.   DEFTEXT 6,0,0,4
  387.   TEXT 183,198,"                "
  388.   TEXT 183,198,na$
  389.   screen$(1+(wlvl#(pl#)-1)*19,1)=na$
  390. RETURN
  391. '
  392. PROCEDURE stoneage_play
  393. stoneage:
  394.   GOSUB init
  395.   punkte#(1)=0
  396.   punkte#(2)=0
  397.   FOR x#=1 TO 2
  398.     man#(x#)=1
  399.     points#(x#)=0
  400.     score#(x#)=0
  401.   NEXT x#
  402.   tlimit#=300/skill_level#
  403.   GOTO w
  404.   GOSUB bild1
  405.   PUT 0,160,blank$,3
  406.   wx#=1
  407.   wy#=17
  408.   IF stone#(wx#,wy#)=3
  409.     ko#=ko#-1
  410.   ENDIF
  411.   PUT 0,160,willi$,3
  412.   stone#(wx#,wy#)=2
  413.   '
  414.   '
  415. neu:
  416.   zeit#=TIMER
  417.   COLOR 2
  418.   LINE 0,180,310,180
  419.   LINE 310,0,310,180
  420.   IF play#
  421.     TEXT 5,188,"PLAYER 1:"
  422.     IF npl#=2
  423.       TEXT 5,198,"PLAYER 2:"
  424.     ENDIF
  425.     tlimit#=300/skill_level#
  426.   ENDIF
  427.   points#(1)=0
  428.   points#(2)=0
  429.   GOSUB show_score
  430.   points#(pl#)=0
  431.   DEFTEXT 2,16,0,13
  432.   TEXT 145,198,ko#
  433.   PUT 133,188,cabbage$
  434.   PUT 165,188,cabbage$
  435.   DEFTEXT 1,0,0,6
  436.   FOR x#=1 TO 10
  437.     PUT 200+((x#-1)*10),189,blank$
  438.   NEXT x#
  439.   FOR x#=1 TO (10-man#(pl#))
  440.     PUT 200+((x#-1)*10),189,willi$
  441.   NEXT x#
  442.   GOSUB start_game
  443.   zeit#(pl#)=TIMER
  444.   '
  445.   '
  446. mainprog:
  447.   FOR qu#=1 TO 5
  448.     OUT 4,22
  449.   NEXT qu#
  450.   esc$=INKEY$
  451.   k#=MOUSEK
  452.   IF k#=2
  453.     PAUSE 3
  454.   ENDIF
  455.   IF play#
  456.     elapsed#=INT((TIMER-zeit#)/200)
  457.     c$="000"
  458.     b$=STR$(tlimit#-elapsed#)
  459.     MID$(c$,4-LEN(b$),LEN(b$))=b$
  460.     b$="TIME LEFT> "+c$
  461.     TEXT 200,187,b$
  462.     IF tlimit#-elapsed#<=0
  463.       GOTO itsover
  464.     ENDIF
  465.   ENDIF
  466.   '  x=PEEK(3592) AND 255
  467.   IF js#=0
  468.     x#=STICK(1) !joystick
  469.   ELSE
  470.     x#=11  !keypad
  471.   ENDIF
  472.   IF js#=0
  473.     IF (x#<1 OR x#>10)
  474.       IF esc$=CHR$(27)
  475.         GOTO itsover
  476.       ENDIF
  477.     ENDIF
  478.     jy#=sticky#(x#)
  479.     jx#=stickx#(x#)
  480.     GOTO good
  481.   ELSE
  482.     asc_code%=ASC(esc$)
  483.     IF asc_code%>48 AND asc_code%<58
  484.       x#=asc_code%-48
  485.       x#=keydecode%(x#)
  486.       jy#=sticky#(x#)
  487.       jx#=stickx#(x#)
  488.       GOTO good
  489.     ENDIF
  490.     IF esc$=CHR$(27)
  491.       GOTO itsover
  492.     ENDIF
  493.   ENDIF
  494.   IF MID$(esc$,2,1)="b"
  495.     GOSUB help2_edit
  496.   ENDIF
  497.   GOTO mainprog
  498. good:
  499.   IF ABS(jy#)=1 OR ABS(jx#)=1
  500.     IF wy#+jy#<19 AND wy#+jy#>0 AND wx#+jx#<32 AND wx#+jx#>0
  501.       IF stone#(wx#+jx#,wy#+jy#)=4
  502.         GOTO mainprog
  503.       ENDIF
  504.       IF ABS(jx#)=1 AND ABS(jy#)=1 AND stone#(wx#+jx#,wy#)<>0 AND stone#(wx#,wy#+jy#)<>0
  505.         IF stone#(wx#+jx#,wy#)<>-2 AND stone#(wx#,wy#+jy#)<>-2
  506.           GOTO mainprog
  507.         ENDIF
  508.       ENDIF
  509.       IF stone#(wx#+jx#,wy#+jy#)<>1
  510.         cabflag#=0
  511.         IF stone#(wx#+jx#,wy#+jy#)=3
  512.           ko#=ko#-1
  513.           IF play#
  514.             points#(pl#)=points#(pl#)+1
  515.             score#(pl#)=score#(pl#)+1
  516.             GOSUB show_score
  517.           ENDIF
  518.           SOUND 2,14,8,5
  519.           SOUND 3,14,11,5
  520.           PAUSE 5
  521.           cabflag#=1
  522.         ENDIF
  523.         wy#=wy#+jy#
  524.         wx#=wx#+jx#
  525.         x#=(wx#-1)*10
  526.         y#=(wy#-1)*10
  527.         stone#(wx#,wy#)=2
  528.         PUT x#,y#,blank$,3
  529.         IF cabflag#=0
  530.           SOUND 2,15,5,3
  531.           SOUND 3,15,7,3
  532.           PAUSE 5
  533.         ENDIF
  534.         WAVE 0,0
  535.         PUT x#-10*jx#,y#-10*jy#,blank$,3
  536.         PUT x#,y#,willi$,3
  537.         IF ko#=0
  538.           GOTO weiter
  539.         ENDIF
  540.         stone#(wx#-jx#,wy#-jy#)=-2
  541.         IF stone#(wx#-jx#,wy#-jy#-1)=1
  542.           sx#=wx#-jx#
  543.           sy#=wy#-jy#-1
  544.           GOSUB hitwithrock
  545.           IF itsoverflag#=1
  546.             GOTO itsover
  547.           ENDIF
  548.         ENDIF
  549.       ELSE
  550.         IF ABS(jy#)=0 AND stone#(wx#+2*jx#,wy#+2*jy#)=-2
  551.           GOTO pushrock
  552.         ENDIF
  553.       ENDIF
  554.     ENDIF
  555.   ENDIF
  556.   GOTO mainprog
  557. itsover:
  558.   FOR i#=1 TO 8 STEP 0.5
  559.     x#=(wx#-1)*10
  560.     y#=(wy#-1)*10
  561.     PUT x#,y#,rock$,3
  562.     PAUSE 2
  563.     PUT x#,y#,willi$,3
  564.     PUT x#-st#*10,y#-10,rock$,3
  565.     PAUSE 2
  566.     PUT x#-st#*10,y#-10,blank$,3
  567.     SOUND 2,12,i#,i#
  568.     SOUND 3,12,i#,i#
  569.     PAUSE 5
  570.     WAVE 0,0
  571.   NEXT i#
  572.   WAVE 0,0
  573.   man#(pl#)=man#(pl#)+1
  574.   IF man#(pl#)=10
  575.     STICK 0
  576.     ALERT 1,"Willi Is History!",1,"Sorry",b#
  577.     GOTO stonend
  578.   ENDIF
  579.   PRINT
  580.   b$="|   Poor Willi!!|You have "+STR$(10-man#(pl#))+" Lives left."
  581.   STICK 0
  582.   ALERT 3,b$,1,"More!|Enough!",b#
  583.   IF npl#=2
  584.     IF pl#=2 AND man#(1)<>10
  585.       pl#=1
  586.       GOTO f
  587.     ENDIF
  588.     IF pl#=1 AND man#(2)<>10
  589.       pl#=2
  590.     ENDIF
  591.   ENDIF
  592.   '
  593.   '
  594. f:
  595.   IF b#=1
  596.     GOTO w
  597.   ELSE
  598.     GOTO stone_stop
  599.   ENDIF
  600. weiter:
  601.   zeit2#=TIMER
  602.   GOSUB bonus
  603.   punkte#(pl#)=punkte#(pl#)+zeit2#-zeit#(pl#)
  604.   GOSUB next_level
  605.   IF b#=2
  606.     GOTO stone_stop
  607.   ENDIF
  608.   wlvl#(pl#)=wlvl#(pl#)+1
  609.   ko#=0
  610.   IF wlvl#(pl#)=6
  611.     GOTO freak
  612.   ENDIF
  613.   '
  614. w:
  615.   lvl#=0
  616.   ko#=0
  617.   IF screen$(1+(wlvl#(pl#)-1)*19,1)="NO"
  618.     b$="Level "+STR$(wlvl#(pl#))+" Doesn't Exist!"
  619.     ALERT 1,b$,1,"Ooops!",b#
  620.     GOTO stonend
  621.   ENDIF
  622.   GOSUB show_screen
  623.   DEFTEXT 2,0,0,6
  624.   z#=1
  625.   FOR x#=9 TO 29
  626.     TEXT 312,x#," "
  627.   NEXT x#
  628.   FOR x#=9 TO (LEN(na$)*9) STEP 9
  629.     TEXT 312,x#,MID$(na$,z#,1)
  630.     z#=z#+1
  631.   NEXT x#
  632.   GOTO neu
  633.   '
  634.   '
  635.   '
  636.   '
  637. freak:
  638.   CLS
  639.   PRINT "              SUCCESS !!!"
  640.   man#(pl#)=10
  641.   FOR i#=1 TO 15
  642.     DEFTEXT i#,0,0,6
  643.     q$=STR$(INT(punkte#/200))+" Seconds.  Victory!"
  644.     TEXT 70,10+(i#*10),q$
  645.   NEXT i#
  646.   PAUSE 150
  647.   FOR i#=1 TO 333
  648.     PUT RND*309,RND*190,willi$,3
  649.     PUT RND*309,RND*190,rock$,3
  650.     SOUND 1,15,RANDOM(12)+1,RANDOM(8)+1,1
  651.     SOUND 1,0,0,0,0
  652.     EXIT IF MOUSEK=2
  653.   NEXT i#
  654.   PAUSE 150
  655.   CLS
  656.   GOTO stonend
  657. pushrock:
  658.   stone#(wx#,wy#)=-2
  659.   stone#(wx#+jx#,wy#+jy#)=2
  660.   wx#=wx#+jx#
  661.   wy#=wy#+jy#
  662.   x#=(wx#-1)*10
  663.   y#=(wy#-1)*10
  664.   stone#(wx#+jx#,wy#+jy#)=1
  665.   DEFFILL 0
  666.   PBOX x#-jx#*10,y#-jy#*20,x#-jx#*10+9,y#-jy#*10+9
  667.   PUT x#,y#,blank$,3
  668.   SOUND 2,15,8,3
  669.   SOUND 3,15,11,3
  670.   PUT x#,y#,willi$,3
  671.   PUT x#+jx#*10,y#+jy#*10,rock$,3
  672.   PAUSE 4
  673.   WAVE 0,0
  674.   IF stone#(wx#+jx#,wy#+jy#+1)=-2
  675.     sx#=wx#+jx#
  676.     sy#=wy#+jy#
  677.     GOSUB hitwithrock
  678.     IF itsoverflag#=1
  679.       GOTO itsover
  680.     ENDIF
  681.   ENDIF
  682.   IF stone#(wx#-jx#,wy#-jy#-1)=1
  683.     sx#=wx#-jx#
  684.     sy#=wy#-jy#-1
  685.     GOSUB hitwithrock
  686.     IF itsoverflag#=1
  687.       GOTO itsover
  688.     ENDIF
  689.   ENDIF
  690.   GOTO mainprog
  691. stonend:
  692.   IF play#
  693.     IF man#(1)<>10 OR man#(2)<>10
  694.       IF npl#=2
  695.         IF pl#=2 AND man#(1)<>10
  696.           pl#=1
  697.           GOTO skip
  698.         ENDIF
  699.         IF pl#=1 AND man#(2)<>10
  700.           pl#=2
  701.         ENDIF
  702.       ENDIF
  703.     skip:
  704.       GOTO f
  705.     ENDIF
  706.   ENDIF
  707. stone_stop:
  708.   CLS
  709.   GOSUB makecolor
  710.   GOSUB mainscreen
  711. RETURN
  712. '
  713. PROCEDURE show_score
  714.   IF play#
  715.     FOR q#=1 TO npl#
  716.       z#=188
  717.       IF q#=2
  718.         z#=198
  719.       ENDIF
  720.       a$="000"
  721.       c$=STR$(points#(q#))
  722.       MID$(a$,1-(points#(q#)<10)-(points#(q#)<100),LEN(c$))=c$
  723.       points$=a$
  724.       a$="000"
  725.       c$=STR$(score#(q#))
  726.       MID$(a$,1-(score#(q#)<10)-(score#(q#)<100),LEN(c$))=c$
  727.       score$=a$
  728.       a$=points$+" "+score$
  729.       TEXT 77,z#,a$
  730.     NEXT q#
  731.   ENDIF
  732. RETURN
  733. '
  734. PROCEDURE show_screen
  735.   PUT 0,0,clear$
  736.   na$=screen$(1+(wlvl#(pl#)-1)*19,1)
  737.   DEFTEXT 2,0,0,6
  738.   FOR i#=1 TO 18
  739.     b$=screen$(i#+((wlvl#(pl#)-1)*19)+1,1)
  740.     FOR j#=1 TO 31
  741.       stone#(j#,i#)=VAL(MID$(b$,j#,1))
  742.       x#=(j#-1)*10
  743.       y#=(i#-1)*10
  744.       IF stone#(j#,i#)=0
  745.         PUT x#,y#,world$,3
  746.       ELSE
  747.         IF stone#(j#,i#)=1
  748.           PUT x#,y#,rock$,3
  749.         ELSE
  750.           IF stone#(j#,i#)=2
  751.             PUT x#,y#,willi$,3
  752.             wx#=j#
  753.             wy#=i#
  754.           ELSE
  755.             IF stone#(j#,i#)=3
  756.               PUT x#,y#,cabbage$,3
  757.               ko#=ko#+1
  758.             ELSE
  759.               IF stone#(j#,i#)=4
  760.                 PUT x#,y#,wall$,3
  761.               ELSE
  762.                 stone#(j#,i#)=-2
  763.                 PUT x#,y#,blank$,3
  764.               ENDIF
  765.             ENDIF
  766.           ENDIF
  767.         ENDIF
  768.       ENDIF
  769.     NEXT j#
  770.   NEXT i#
  771. RETURN
  772. PROCEDURE hitwithrock
  773.   itsoverflag#=0
  774.   a#=1
  775. za:
  776.   IF stone#(sx#,sy#-a#)=1
  777.     a#=a#+1
  778.     GOTO za
  779.   ENDIF
  780.   sz#=sy#
  781.   sw#=sx#
  782.   FOR i#=1 TO a#
  783.     sy#=sz#-i#+1
  784.     sx#=sw#
  785.   s1:
  786.     IF stone#(sx#,sy#+1)=-2
  787.       x#=(sx#-1)*10
  788.       y#=(sy#-1)*10
  789.       PUT x#,y#,blank$,3
  790.       stone#(sx#,sy#)=-2
  791.       sy#=sy#+1
  792.       stone#(sx#,sy#)=1
  793.       PUT x#,y#+10,rock$,3
  794.       PAUSE 3
  795.       GOTO s1
  796.     ELSE
  797.       IF stone#(sx#,sy#+1)=0 OR stone#(sx#,sy#+1)=3 OR stone#(sx#,sy#+1)=4
  798.         SOUND 2,15,5,1
  799.         SOUND 3,15,8,1
  800.         PAUSE 10
  801.         WAVE 0,0
  802.         GOTO send
  803.       ELSE
  804.         IF stone#(sx#,sy#+1)=2
  805.           st#=0
  806.           itsoverflag#=1
  807.           REM Goto Itsover
  808.           i#=a#+1
  809.           GOTO send
  810.         ELSE
  811.           IF ABS(stone#(sx#-1,sy#+1))=2 AND ABS(stone#(sx#+1,sy#+1))=2 AND stone#(sx#-1,sy#)=-2 AND stone#(sx#+1,sy#)=-2
  812.             st#=SGN(RND*10-5)
  813.             GOTO u
  814.           ELSE
  815.             IF ABS(stone#(sx#-1,sy#+1))=2 AND stone#(sx#-1,sy#)=-2
  816.               st#=-1
  817.               GOTO u
  818.             ENDIF
  819.             IF ABS(stone#(sx#+1,sy#+1))=2 AND stone#(sx#+1,sy#)=-2
  820.               st#=1
  821.               GOTO u
  822.             ENDIF
  823.             SOUND 2,15,5,1
  824.             SOUND 3,15,8,1
  825.             PAUSE 10
  826.             WAVE 0,0
  827.             GOTO send
  828.           ENDIF
  829.         ENDIF
  830.       ENDIF
  831.     ENDIF
  832.     '
  833.     '
  834.   u:
  835.     stone#(sx#,sy#)=-2
  836.     IF stone#(sx#+st#,sy#+1)=2
  837.       itsoverflag#=1
  838.       REM Goto Itsover
  839.       i#=a#+1
  840.       GOTO send
  841.     ENDIF
  842.     x#=(sx#-1)*10
  843.     y#=(sy#-1)*10
  844.     PUT x#,y#,blank$,3
  845.     sy#=sy#+1
  846.     sx#=sx#+st#
  847.     stone#(sx#,sy#)=1
  848.     PUT x#+10*SGN(st#),y#+10,rock$,3
  849.     SOUND 2,15,5,2
  850.     SOUND 3,15,8,2
  851.     PAUSE 2
  852.     WAVE 0,0
  853.     GOTO s1
  854.   send:
  855.   NEXT i#
  856. send2:
  857. RETURN
  858. '
  859. '
  860. '
  861. '
  862. '
  863. '
  864. PROCEDURE bild1
  865.   ko#=0
  866.   FOR y#=0 TO 170 STEP 10
  867.     FOR x#=0 TO 300 STEP 10
  868.       stone#(x#/10+1,y#/10+1)=0
  869.       IF RND<0.7
  870.         GOTO pul
  871.       ENDIF
  872.       IF RND<0.5
  873.         PUT x#,y#,rock$,3
  874.         stone#(x#/10+1,y#/10+1)=1
  875.         GOTO pul2
  876.       ELSE
  877.         IF RND<0.2
  878.           PUT x#,y#,cabbage$,3
  879.           stone#(x#/10+1,y#/10+1)=3
  880.           ko#=ko#+1
  881.         ELSE
  882.           IF RND<0.5
  883.             PUT x#,y#,wall$,3
  884.             stone#(x#/10+1,y#/10+1)=4
  885.           ELSE
  886.           pul:
  887.             PUT x#,y#,world$,3
  888.           pul2:
  889.           ENDIF
  890.         ENDIF
  891.       ENDIF
  892.     NEXT x#
  893.   NEXT y#
  894. RETURN
  895. '
  896. '
  897. '
  898. PROCEDURE makecolor
  899.   RESTORE farben
  900.   DEFFN t(x#)=(x#-2)*(SGN(x#-2)/2+3)
  901.   FOR i#=0 TO 15
  902.     READ r#,g#,b#
  903.     SETCOLOR i#,r#/2,g#/2,b#/2
  904.   NEXT i#
  905.   SETCOLOR 15,7,7,7
  906.   '
  907.   '
  908. farben:
  909.   DATA 0,0,0,15,15,15,12 ,0,0,15,6,0
  910.   DATA 0,9,0,3,15,1,0,0,15,2,12,13
  911.   DATA 15,0,12,10,0,15,9,5,0,15,12,10
  912.   DATA 15,14,0,12,12,12,8,8,8,4,4,4
  913. RETURN
  914. '
  915. PROCEDURE init
  916.   RESTORE stickdata
  917.   FOR i#=1 TO 10
  918.     READ stickx#(i#)
  919.   NEXT i#
  920.   FOR i#=1 TO 10
  921.     READ sticky#(i#)
  922.   NEXT i#
  923.   FOR i#=1 TO 9
  924.     READ keydecode%(i#)
  925.   NEXT i#
  926. stickdata:
  927.   DATA 0,0,0,-1,-1,-1,0,1,1,1
  928.   DATA -1,1,0,0,-1,1,0,0,-1,1
  929.   sch#=40
  930.   DATA 6,2,10,4,0,8,5,1,9
  931.   PRINT "c"+CHR$(0)
  932.   CLS
  933.   GET 0,0,9,9,blank$
  934.   DEFTEXT 2,0,0,6
  935.   DEFFN f=RND*15/2
  936.   DEFFN r=(RND*7+8)/2
  937.   ttte1#=0
  938.   GOSUB makecolor
  939.   '
  940.   RESTORE willi
  941.   willi$=""
  942.   FOR i#=0 TO 85
  943.     READ x#
  944.     willi$=willi$+CHR$(x#)
  945.   NEXT i#
  946. willi:
  947.   DATA 0,9,0,9,0,4,59,0,0,0,0,0,0,0,100,128,0,0,0,0
  948.   DATA 0,0,228,192,0,0,0,0,0,0,127,128,0,0,18,0,0,0,128,64
  949.   DATA 127,128,0,0,0,0,169,127,64,190,0,19,0,15,128,69,64,137,0,46
  950.   DATA 0,7,173,64,64,130,0,52,0,7,64,128,63,63,0,60,0,19,63,15
  951.   DATA 0,5,63,9,0,46
  952.   '
  953.   world$=""
  954.   FOR i#=0 TO 85
  955.     READ x#
  956.     world$=world$+CHR$(x#)
  957.   NEXT i#
  958.   DATA 0,9,0,9,0,4,0,0,182,192,0,0,134,64,0,0,221,192,0,0
  959.   DATA 157,192,0,0,254,64,0,0,250,64,0,0,167,192,0,0,166,0,0,0
  960.   DATA 91,64,0,0,11,0,0,63,167,254,0,19,165,207,0,5,255,73,0,46
  961.   DATA 255,71,0,0,214,130,0,52,214,135,0,0,63,127,0,60,30,83,0,15
  962.   DATA 237,197,0,9,141,110
  963.   '
  964.   cabbage$=""
  965.   FOR i#=0 TO 85
  966.     READ x#
  967.     cabbage$=cabbage$+CHR$(x#)
  968.   NEXT i#
  969.   DATA 0,9,0,9,0,4,75,0,0,0,91,0,16,0,200,64,0,0,255,192
  970.   DATA 55,128,14,128,10,128,127,192,113,64,186,64,40,0,255,192,5,0,42,128
  971.   DATA 32,0,127,128,65,0,150,255,0,62,255,211,105,15,89,133,0,9,127,238
  972.   DATA 38,7,94,192,0,2,127,244,0,7,207,192,0,63,255,252,0,19,105,143
  973.   DATA 0,5,121,137,0,46
  974.   '
  975.   rock$=""
  976.   FOR i#=0 TO 85
  977.     READ x#
  978.     rock$=rock$+CHR$(x#)
  979.   NEXT i#
  980.   DATA 0,9,0,9,0,4,30,0,0,0,30,0,30,0,54,128,73,0,127,128
  981.   DATA 127,128,127,192,128,0,255,192,255,192,208,0,46,192,254,192,254,192,160,0
  982.   DATA 95,192,255,192,255,192,129,255,127,254,255,211,255,207,7,69,255,73,255,110
  983.   DATA 255,71,22,0,254,66,254,116,254,71,11,128,123,191,123,188,123,147,30,15
  984.   DATA 30,5,30,9,30,46
  985.   '
  986.   wall$=""
  987.   FOR i#=0 TO 85
  988.     READ x#
  989.     wall$=wall$+CHR$(x#)
  990.   NEXT i#
  991.   DATA 0,9,0,9,0,4,0,0,0,0,0,0,251,192,235,128,0,0,0,0
  992.   DATA 251,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,192,59,192
  993.   DATA 0,0,0,0,127,192,0,63,0,62,0,19,0,15,0,5,0,9,0,46
  994.   DATA 239,199,206,64,0,2,0,52,239,199,206,192,0,63,0,60,239,211,0,15
  995.   DATA 0,5,0,9,0,46
  996.   '
  997. RETURN
  998. '
  999. PROCEDURE instructions
  1000.   CLS
  1001.   HIDEM
  1002.   GOSUB makecolor
  1003.   PRINT AT(3,2);"          STONE AGE DELUXE"
  1004.   PRINT "              Instructions"
  1005.   PRINT
  1006.   PRINT " Poor Willi lives in a hostile world."
  1007.   PRINT "Everywhere he goes, boulders fall! Help"
  1008.   PRINT "Willi to collect all the cabbages while"
  1009.   PRINT "avoiding deadly boulders!"
  1010.   PRINT
  1011.   PRINT "            MENU SELECTIONS   "
  1012.   PRINT ""
  1013.   PRINT "Under DISK:"
  1014.   PRINT
  1015.   PRINT "LOAD WORLD: Use to load one of Willi's"
  1016.   PRINT "    wild worlds!  There are 5 levels "
  1017.   PRINT "    in each world.  Look for files with"
  1018.   PRINT "    an .SCR extension."
  1019.   PRINT ""
  1020.   PRINT "SAVE WORLD: Use to save worlds that"
  1021.   PRINT "    you create for Willi!  Be sure to"
  1022.   PRINT "    use an .SCR extension."
  1023.   PRINT
  1024.   PRINT " (Push Key Or Mouse Button For More)"
  1025.   REPEAT
  1026.     z$=INKEY$
  1027.   UNTIL z$<>"" OR MOUSEK<>0
  1028.   CLS
  1029.   PRINT AT(3,2);"          STONE AGE DELUXE"
  1030.   PRINT "              Instructions"
  1031.   PRINT
  1032.   PRINT "Under PLAY:"
  1033.   PRINT ""
  1034.   PRINT "ONE PLAYER: Used to select One Player"
  1035.   PRINT "    games."
  1036.   PRINT
  1037.   PRINT "TWO PLAYERS: Used to select Two Player"
  1038.   PRINT "    games!"
  1039.   PRINT ""
  1040.   PRINT "LEVEL ONE-FIVE: Selects which Level to"
  1041.   PRINT "    start playing the game at.  You "
  1042.   PRINT "    can then choose between PRACTICE"
  1043.   PRINT "    or PLAY.  If you PLAY, you will "
  1044.   PRINT "    choose between EASY, TOUGHER, or"
  1045.   PRINT "    HARD.  These affect how much time"
  1046.   PRINT "    you have for Willi to collect all"
  1047.   PRINT "    the cabbages.  PRACTICE mode has"
  1048.   PRINT "    no time limit or score displayed."
  1049.   PRINT
  1050.   PRINT " (Push Key Or Mouse Button For More)"
  1051.   REPEAT
  1052.     z$=INKEY$
  1053.   UNTIL z$<>"" OR MOUSEK<>0
  1054.   CLS
  1055.   PRINT AT(3,2);"          STONE AGE DELUXE"
  1056.   PRINT "              Instructions"
  1057.   PRINT
  1058.   PRINT "Under PLAY:"
  1059.   PRINT ""
  1060.   PRINT "Under Keypad"
  1061.   PRINT
  1062.   PRINT "    Willi is moved about using the "
  1063.   PRINT "    number keypad on the right of your"
  1064.   PRINT "    keyboard. The numbers 8,9,6,3,2"
  1065.   PRINT "    1,4,7 corresponds to the points"
  1066.   PRINT "    on the compass."
  1067.   PRINT
  1068.   PRINT "Under Joystick"
  1069.   PRINT
  1070.   PRINT "    Willi may also be moved with your"
  1071.   PRINT "    joystick. However, I find it more"
  1072.   PRINT "    difficult to go diagonally."
  1073.   PRINT
  1074.   PRINT " (Push Key Or Mouse Button For More)"
  1075.   REPEAT
  1076.     z$=INKEY$
  1077.   UNTIL z$<>"" OR MOUSEK<>0
  1078.   CLS
  1079.   PRINT AT(3,2);"          STONE AGE DELUXE"
  1080.   PRINT "              Instructions"
  1081.   PRINT
  1082.   PRINT "Under GENESIS:"
  1083.   PRINT ""
  1084.   PRINT "NEW WORLD:  Use to clear out ALL"
  1085.   PRINT "    levels currently in memory."
  1086.   PRINT "    (in other words, you start from"
  1087.   PRINT "    scratch!). "
  1088.   PRINT ""
  1089.   PRINT "CREATE/EDIT: Takes you to the EDIT"
  1090.   PRINT "    screen.  Use to create your own"
  1091.   PRINT "    world for Willi to wander through!"
  1092.   PRINT ""
  1093.   PRINT "Under LEAVE:"
  1094.   PRINT ""
  1095.   PRINT "BYE-BYE: Away you go!  You will lose"
  1096.   PRINT "    everthing in memory, so make sure"
  1097.   PRINT "    you have saved your work!"
  1098.   PRINT ""
  1099.   PRINT
  1100.   PRINT " (Push Key Or Mouse Button For More)"
  1101.   REPEAT
  1102.     z$=INKEY$
  1103.   UNTIL z$<>"" OR MOUSEK<>0
  1104.   CLS
  1105.   PRINT AT(3,2);"          STONE AGE DELUXE"
  1106.   PRINT "              Instructions"
  1107.   PRINT
  1108.   PRINT "FOR ADDITIONAL HELP:"
  1109.   PRINT ""
  1110.   PRINT "Type the HELP key while in the PLAY"
  1111.   PRINT "or EDIT screens.  You will be given"
  1112.   PRINT "additional HELP for those screens!"
  1113.   PRINT ""
  1114.   PRINT "PERSONAL NOTE:"
  1115.   PRINT "I love to tinker around and make a"
  1116.   PRINT "good program better.  And I just LOVE"
  1117.   PRINT "GFA BASIC!  If you don't have it, get"
  1118.   PRINT "it... it's the simplest and most"
  1119.   PRINT "powerful BASIC I've ever worked"
  1120.   PRINT "with (no, I don't work for MICHTRON!"
  1121.   PRINT "I appreciate feedback:"
  1122.   PRINT "call the STARSHIP BBS, 509-375-4228,"
  1123.   PRINT "or send comments to JOHN HICKEY,"
  1124.   PRINT "2320 EASTON, RICHLAND, WA 99352."
  1125.   PRINT
  1126.   PRINT " (Push Key Or Mouse Button For More)"
  1127.   REPEAT
  1128.     z$=INKEY$
  1129.   UNTIL z$<>"" OR MOUSEK<>0
  1130.   CLS
  1131.   GOSUB makecolor
  1132.   GOSUB mainscreen
  1133.   SHOWM
  1134. RETURN
  1135. '
  1136. PROCEDURE help_edit
  1137.   GET 75,45,235,130,temp$
  1138.   PUT 75,45,help$
  1139.   BOX 77,45,233,128
  1140.   PRINT AT(11,7);"     Edit Help"
  1141.   PRINT AT(11,9);"   WHEN DRAWING"
  1142.   PRINT AT(11,11);"LEFT BUTTON Draws"
  1143.   PRINT AT(11,12);"  Selected Object"
  1144.   PRINT AT(11,14);"RIGHT BUTTON Erases"
  1145.   PRINT AT(11,16);" (Click For More)"
  1146.   REPEAT
  1147.   UNTIL MOUSEK
  1148.   PAUSE 3
  1149.   PUT 75,45,help$
  1150.   BOX 77,45,233,128
  1151.   PRINT AT(11,7);"  MENU SELECTION"
  1152.   PRINT AT(11,9);"LEFT BUTTON Selects"
  1153.   PRINT AT(11,10);"  Menu Item      "
  1154.   PRINT AT(11,12);"RIGHT BUTTON On"
  1155.   PRINT AT(11,13);"  Level Number For"
  1156.   PRINT AT(11,14);"  Copy/Erase Level"
  1157.   PRINT AT(11,16);" (Click For More)"
  1158.   REPEAT
  1159.   UNTIL MOUSEK
  1160.   PAUSE 3
  1161.   PUT 75,45,help$
  1162.   BOX 77,45,233,128
  1163.   PRINT AT(11,7);"  MENU SELECTION"
  1164.   PRINT AT(11,8);"    (continued) "
  1165.   PRINT AT(11,10);"CLICK on Level   "
  1166.   PRINT AT(11,11);"  Name To Change"
  1167.   PRINT AT(11,16);" (Click For More)"
  1168.   REPEAT
  1169.   UNTIL MOUSEK
  1170.   PAUSE 3
  1171.   PUT 75,45,temp$
  1172. RETURN
  1173. PROCEDURE help2_edit
  1174.   GET 75,45,235,130,temp$
  1175.   PUT 75,45,help$
  1176.   BOX 77,45,233,128
  1177.   PRINT AT(11,7);"     Play Help"
  1178.   PRINT AT(11,9);" Collect All The"
  1179.   PRINT AT(11,10);"Cabbages For Poor"
  1180.   PRINT AT(11,11);"  Hungry Willi!"
  1181.   PRINT AT(11,13);"Use ESC If You Get"
  1182.   PRINT AT(11,14);" Stuck Or To Quit."
  1183.   PRINT AT(11,16);" (Click For More)"
  1184.   REPEAT
  1185.   UNTIL MOUSEK
  1186.   PAUSE 3
  1187.   PUT 75,45,help$
  1188.   BOX 77,45,233,128
  1189.   PRINT AT(11,7);"  DO NOT Let Any"
  1190.   PRINT AT(11,8);"Rocks Fall On Your"
  1191.   PRINT AT(11,9);"Head, Or Get Stuck"
  1192.   PRINT AT(11,10);"Between Them. You"
  1193.   PRINT AT(11,11);"May Push Rocks If"
  1194.   PRINT AT(11,12);"There Is An Empty"
  1195.   PRINT AT(11,13);"Space Next To Them"
  1196.   PRINT AT(11,14);"    GOOD LUCK!"
  1197.   PRINT AT(11,16);" (Click For More)"
  1198.   REPEAT
  1199.   UNTIL MOUSEK
  1200.   PAUSE 3
  1201.   PUT 75,45,temp$
  1202. RETURN
  1203. PROCEDURE start_game
  1204.   IF play#
  1205.     GET 75,45,235,130,temp$
  1206.     PUT 75,45,help$
  1207.     BOX 77,45,233,128
  1208.     PRINT AT(11,7);na$
  1209.     PRINT AT(11,9);" Can YOU Collect"
  1210.     PRINT AT(11,10);" All The Cabbages?"
  1211.     PRINT AT(11,12);"   OK PLAYER ";pl#
  1212.     PRINT AT(11,14);"  Push JOYSTICK "
  1213.     PRINT AT(11,15);" BUTTON To START!"
  1214.     PRINT AT(11,16);""
  1215.     REPEAT
  1216.     UNTIL MOUSEK
  1217.     PAUSE 3
  1218.     PUT 75,45,temp$
  1219.   ENDIF
  1220. RETURN
  1221. '
  1222. PROCEDURE bonus
  1223.   IF play#
  1224.     GET 75,45,235,130,temp$
  1225.     PUT 75,45,help$
  1226.     BOX 77,45,233,128
  1227.     PRINT AT(11,7);na$
  1228.     PRINT AT(11,9);"     Good Job!!!"
  1229.     PRINT AT(11,10);" You Now Collect?"
  1230.     PRINT AT(11,12);" 10 BONUS CABBAGES"
  1231.     FOR x#=1 TO 10
  1232.       score#(pl#)=score#(pl#)+1
  1233.       SOUND 2,14,8,5
  1234.       SOUND 3,14,11,5
  1235.       PAUSE 8
  1236.       SOUND 2,0,0,0
  1237.       SOUND 3,0,0,0
  1238.       PAUSE 4
  1239.       GOSUB show_score
  1240.     NEXT x#
  1241.     PUT 75,45,temp$
  1242.   ENDIF
  1243. RETURN
  1244. PROCEDURE next_level
  1245.   IF play#
  1246.     GET 75,45,235,130,temp$
  1247.     PUT 75,45,help$
  1248.     BOX 77,45,233,128
  1249.     b$=STR$(INT((zeit2#-zeit#(pl#))/200))+" Seconds Used,"
  1250.     a$="Total "+STR$(INT(punkte#(pl#)/200))+" Seconds."
  1251.     PRINT AT(11,7);na$
  1252.     PRINT AT(11,9);b$
  1253.     PRINT AT(11,11);a$
  1254.     PRINT AT(11,14);"  Push JOYSTICK "
  1255.     PRINT AT(11,15);" BUTTON To START,"
  1256.     PRINT AT(11,16);" ESC KEY To END!"
  1257.     REPEAT
  1258.       esc$=INKEY$
  1259.     UNTIL MOUSEK OR esc$=CHR$(27)
  1260.     PAUSE 3
  1261.     IF esc$=CHR$(27)
  1262.       b#=2
  1263.     ENDIF
  1264.     PUT 75,45,temp$
  1265.   ENDIF
  1266. RETURN
  1267. '
  1268.