home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / basic / library / gwbasic / spiele / draw.bas < prev    next >
Encoding:
BASIC Source File  |  1991-05-21  |  14.5 KB  |  378 lines

  1. 0 'comment line 2000 to display instructions on the monochrome display.
  2. 10 KEY OFF
  3. 15 CLS : CURSX = 0: CURSY = 0: SAVEX = 0: SAVEY = 0: PENDOWN = 0: ANGLE = 0: F = 0
  4. 17 DIM PICT(1), DIR(1)
  5. 18 DEF SEG
  6. 20 GOSUB 2000
  7. 30 LOCATE 1, 20: COLOR 1, 0
  8. 40 PRINT "COMMANDS FOR GRAPHICS ACTIONS": COLOR 7, 0
  9. 60 COLOR 15, 0: PRINT "F1"; : COLOR 7, 0: PRINT " - SAVE CURRENT POINT"
  10. 70 COLOR 15, 0: PRINT "F2"; : COLOR 7, 0: PRINT " - DRAW LINE BETWEEN CURRENT POINT AND SAVED POINT"
  11. 80 COLOR 15, 0: PRINT "F3"; : COLOR 7, 0: PRINT " - DRAW BOX BETWEEN SAVED POINT AND CURRENT POINT"
  12. 90 COLOR 15, 0: PRINT "F4"; : COLOR 7, 0: PRINT " - DRAW CIRCLE USING CURRENT POINT AS CENTER AND SAVED POINT AS RADIUS"
  13. 100 COLOR 15, 0: PRINT "F5"; : COLOR 7, 0: PRINT " - PEN DOWN MODE"
  14. 110 COLOR 15, 0: PRINT "F6"; : COLOR 7, 0: PRINT " - PEN UP MODE"
  15. 120 COLOR 15, 0: PRINT "F7"; : COLOR 7, 0: PRINT " - GET FROM SCREEN WITH CURRENT AND SAVED POINTS DEFINING AREA"
  16. 125 COLOR 15, 0: PRINT "F8"; : COLOR 7, 0: PRINT " - PUT SAVED PICTURE ON SCREEN"
  17. 130 COLOR 15, 0: PRINT "F9"; : COLOR 7, 0: PRINT " - SWITCH DRAWING COLOR"
  18. 140 COLOR 15, 0: PRINT "F10"; : COLOR 7, 0: PRINT " - CLEAR SCREEN"
  19. 150 COLOR 15, 0: PRINT CHR$(24); : COLOR 7, 0: PRINT " - MOVE CROSS-HAIR UP"
  20. 160 COLOR 15, 0: PRINT CHR$(27); : COLOR 7, 0: PRINT " - MOVE CROSS-HAIR TO THE LEFT"
  21. 170 COLOR 15, 0: PRINT CHR$(26); : COLOR 7, 0: PRINT " - MOVE CROSS-HAIR TO THE RIGHT"
  22. 180 COLOR 15, 0: PRINT CHR$(25); : COLOR 7, 0: PRINT " - MOVE CROSS-HAIR DOWN"
  23. 185 COLOR 15, 0: PRINT "PgUp"; : COLOR 7, 0: PRINT " - TAB UP"
  24. 186 COLOR 15, 0: PRINT "PgDn"; : COLOR 7, 0: PRINT " - TAB DOWN"
  25. 187 COLOR 15, 0: PRINT "▐" + CHR$(27); : COLOR 7, 0: PRINT " - TAB LEFT"
  26. 188 COLOR 15, 0: PRINT CHR$(26) + "▌"; : COLOR 7, 0: PRINT " - TAB RIGHT"
  27. 189 COLOR 15, 0: PRINT "Home"; : COLOR 7, 0: PRINT " - MOVE CURSOR TO HOME POSITION"
  28. 191 COLOR 15, 0: PRINT "E"; : COLOR 7, 0: PRINT " - ERASE SAVED POINT"
  29. 192 COLOR 15, 0: PRINT "P"; : COLOR 7, 0: PRINT " - PAINT INSIDE OF OBJECT"
  30. 193 COLOR 15, 0: PRINT "L"; : COLOR 7, 0: PRINT " - CHANGE PALETTE"
  31. 194 COLOR 15, 0: PRINT "B"; : COLOR 7, 0: PRINT " - CHANGE BACKGROUND COLOR";
  32. 195 LOCATE 25, 1: COLOR 15, 0: PRINT "X"; : COLOR 7, 0: PRINT " - TERMINATE PROGRAM";
  33. 196 LOCATE 17, 40: COLOR 15, 0: PRINT "End"; : COLOR 7, 0: PRINT " - MOVE CURSOR TO END";
  34. 197 LOCATE 18, 40: COLOR 15, 0: PRINT "S"; : COLOR 7, 0: PRINT " - SAVE SCREEN TO FILE";
  35. 198 LOCATE 19, 40: COLOR 15, 0: PRINT "R"; : COLOR 7, 0: PRINT " - RESTORE FILE TO SCREEN";
  36. 199 LOCATE 20, 40: COLOR 15, 0: PRINT "1"; : COLOR 7, 0: PRINT " - DRAW CAR";
  37. 200 LOCATE 21, 40: COLOR 15, 0: PRINT "2"; : COLOR 7, 0: PRINT " - DRAW DONKEY";
  38. 201 LOCATE 22, 40: COLOR 15, 0: PRINT "I"; : COLOR 7, 0: PRINT " - INCREMENT FILE NUMBER";
  39. 202 LOCATE 23, 40: COLOR 15, 0: PRINT "/ AND SHIFT /"; : COLOR 7, 0: PRINT " - MOVE DIAGONAL TO RIGHT";
  40. 203 LOCATE 24, 40: COLOR 15, 0: PRINT "\ AND SHIFT \"; : COLOR 7, 0: PRINT " - MOVE DIAGONAL TO LEFT";
  41. 204 LOCATE 25, 40: COLOR 15, 0: PRINT "T"; : COLOR 7, 0: PRINT " - CHANGE ROTATION FOR NUMERIC PICTURES";
  42. 205 LOCATE 16, 40: COLOR 15, 0: PRINT "M"; : COLOR 7, 0: PRINT " - MOVE CURSOR TO SAVED POINT";
  43. 206 WHILE INKEY$ = "": WEND
  44. 208 FOR I = 1 TO 14: KEY(I) ON: NEXT I
  45. 210 ON KEY(1) GOSUB 3000
  46. 220 ON KEY(2) GOSUB 4000
  47. 230 ON KEY(3) GOSUB 5000
  48. 240 ON KEY(4) GOSUB 6000
  49. 250 ON KEY(5) GOSUB 7000
  50. 260 ON KEY(6) GOSUB 8000
  51. 270 ON KEY(7) GOSUB 9000
  52. 280 ON KEY(8) GOSUB 10000
  53. 290 ON KEY(9) GOSUB 11000
  54. 300 ON KEY(10) GOSUB 12000
  55. 310 ON KEY(11) GOSUB 13000
  56. 320 ON KEY(12) GOSUB 14000
  57. 330 ON KEY(13) GOSUB 15000
  58. 340 ON KEY(14) GOSUB 16000
  59. 350 GOSUB 1000
  60. 355 GOSUB 18000
  61. 360 IF INKEY$ <> "" THEN POKE 106, 0: GOTO 360
  62. 370 SW = 1
  63. 380 WHILE SW = 1
  64. 390 IN$ = INKEY$
  65. 395 IF IN$ = "" THEN GOTO 430
  66. 400 IF IN$ = "x" OR IN$ = "X" THEN GOSUB 17000: GOTO 430
  67. 401 IF IN$ = "p" OR IN$ = "P" THEN GOSUB 20000: GOTO 430
  68. 402 IF IN$ = CHR$(9) THEN GOSUB 21000: GOTO 430
  69. 403 IF LEN(IN$) = 2 AND RIGHT$(IN$, 1) = CHR$(15) THEN GOSUB 22000: GOTO 430
  70. 404 IF LEN(IN$) = 2 AND RIGHT$(IN$, 1) = CHR$(73) THEN GOSUB 23000: GOTO 430
  71. 405 IF LEN(IN$) = 2 AND RIGHT$(IN$, 1) = CHR$(81) THEN GOSUB 24000: GOTO 430
  72. 406 IF IN$ = "l" OR IN$ = "L" THEN GOSUB 25000: GOTO 430
  73. 407 IF IN$ = "b" OR IN$ = "B" THEN GOSUB 26000: GOTO 430
  74. 408 IF IN$ = "E" OR IN$ = "e" THEN GOSUB 27000: GOTO 430
  75. 409 IF LEN(IN$) = 2 AND RIGHT$(IN$, 1) = CHR$(71) THEN GOSUB 28000: GOTO 430
  76. 410 IF LEN(IN$) = 2 AND RIGHT$(IN$, 1) = CHR$(79) THEN GOSUB 29000: GOTO 430
  77. 411 IF IN$ = "s" OR IN$ = "S" THEN GOSUB 30000: GOTO 430
  78. 412 IF IN$ = "r" OR IN$ = "R" THEN GOSUB 31000: GOTO 430
  79. 413 IF IN$ = "1" THEN GOSUB 32000: GOTO 430
  80. 414 IF IN$ = "2" THEN GOSUB 33000: GOTO 430
  81. 415 IF IN$ = "T" OR IN$ = "t" THEN GOSUB 34000: GOTO 430
  82. 416 IF IN$ = "I" OR IN$ = "i" THEN GOSUB 35000: GOTO 430
  83. 417 IF IN$ = "/" THEN DIR(0) = 2: DIR(1) = 2: GOSUB 36000: GOTO 430
  84. 418 IF IN$ = "?" THEN DIR(0) = 2: DIR(1) = -2: GOSUB 36000: GOTO 430
  85. 419 IF IN$ = "\" THEN DIR(0) = -2: DIR(1) = 2: GOSUB 36000: GOTO 430
  86. 420 IF IN$ = "|" THEN DIR(0) = -2: DIR(1) = -2: GOSUB 36000: GOTO 430
  87. 421 IF IN$ = "m" OR IN$ = "M" THEN GOSUB 37000: GOTO 430
  88. 428 IF IN$ <> "" THEN BEEP
  89. 430 WEND
  90. 440 GOSUB 2000
  91. 450 FOR I = 1 TO 14: KEY(I) OFF: NEXT I
  92. 460 GOTO 65200
  93. 1000 REM switch to color/graphics adapter
  94. 1010 DEF SEG = 0
  95. 1020 POKE &H410, (PEEK(&H410) AND &HCF) OR &H20
  96. 1030 DEF SEG
  97. 1040 LOCATE , , 1, 6, 7
  98. 1050 SCREEN 1, 0
  99. 1060 RETURN
  100. 2000 GOTO 2050'REM SWITCH TO MONOCHROME ADAPTER
  101. 2010 DEF SEG = 0
  102. 2020 POKE &H410, (PEEK(&H410) OR &H30)
  103. 2030 DEF SEG
  104. 2040 LOCATE , , 1, 12, 13
  105. 2050 SCREEN 0
  106. 2060 WIDTH 80
  107. 2070 RETURN
  108. 3000 REM SUBROUTINE FOR F1 - SAVE POINT
  109. 3010 SAVEX = CURSX
  110. 3020 SAVEY = CURSY
  111. 3022 PUT (CURSX - 5, CURSY - 5), XHR
  112. 3025 PSET (SAVEX, SAVEY), DCOLOR
  113. 3027 PUT (CURSX - 5, CURSY - 5), XHR
  114. 3030 GOSUB 19000
  115. 3040 RETURN
  116. 4000 REM SUBROUTINE FOR F2 - DRAW LINE
  117. 4005 PUT (CURSX - 5, CURSY - 5), XHR
  118. 4010 LINE (SAVEX, SAVEY)-(CURSX, CURSY), DCOLOR
  119. 4015 PUT (CURSX - 5, CURSY - 5), XHR
  120. 4020 RETURN
  121. 5000 REM SUBROUTINE FOR F3 - DRAW BOX
  122. 5005 PUT (CURSX - 5, CURSY - 5), XHR
  123. 5010 LINE (SAVEX, SAVEY)-(CURSX, CURSY), DCOLOR, B
  124. 5015 PUT (CURSX - 5, CURSY - 5), XHR
  125. 5020 RETURN
  126. 6000 REM SUBROUTINE FOR F4 - CIRCLE
  127. 6002 CX# = CURSX: CY# = CURSY: SX# = SAVEX: SY# = SAVEY
  128. 6010 DX2# = ABS(CX# - SX#) ^ 2
  129. 6020 DY2# = ABS(CY# - SY#) ^ 2
  130. 6030 DIST# = SQR(DX2# + DY2#)
  131. 6035 PUT (CURSX - 5, CURSY - 5), XHR
  132. 6040 CIRCLE (CURSX, CURSY), DIST#, DCOLOR
  133. 6045 PUT (CURSX - 5, CURSY - 5), XHR
  134. 6050 RETURN
  135. 7000 REM SUBROUTINE FOR F5 - PENDOWN
  136. 7005 PENDOWN = 1
  137. 7006 PUT (CURSX - 5, CURSY - 5), XHR
  138. 7007 LINE (0, 0)-(MINX, MINY), 2, BF
  139. 7008 PUT (CURSX - 5, CURSY - 5), XHR
  140. 7010 RETURN
  141. 8000 REM SUBROUTINE FOR F6 - PEN UP
  142. 8005 PENDOWN = 0
  143. 8006 PUT (CURSX - 5, CURSY - 5), XHR
  144. 8007 LINE (0, 0)-(MINX, MINY), 0, BF
  145. 8008 PUT (CURSX - 5, CURSY - 5), XHR
  146. 8010 RETURN
  147. 9000 REM SUBROUTINE FOR F7 - GET FROM SCREEN
  148. 9010 PUT (CURSX - 5, CURSY - 5), XHR
  149. 9020 DX = ABS(SAVEX - CURSX)
  150. 9030 DY = ABS(SAVEY - CURSY)
  151. 9040 DM = 4 + INT((DX * 2 + 7) / 8) * DY
  152. 9050 DM = 45 + INT(DM / 4)
  153. 9060 ERASE PICT
  154. 9070 DIM PICT(DM)
  155. 9075 PRESET (SAVEX, SAVEY)
  156. 9080 GET (SAVEX, SAVEY)-(CURSX, CURSY), PICT
  157. 9090 PUT (CURSX - 5, CURSY - 5), XHR
  158. 9095 PSET (SAVEX, SAVEY), DCOLOR
  159. 9100 RETURN
  160. 10000 REM SUBROUTINE FOR F8 - PUT
  161. 10005 ON ERROR GOTO 10050
  162. 10010 PUT (CURSX - 5, CURSY - 5), XHR
  163. 10020 PUT (CURSX, CURSY), PICT
  164. 10030 PUT (CURSX - 5, CURSY - 5), XHR
  165. 10040 RETURN
  166. 10050 BEEP
  167. 10060 RESUME NEXT
  168. 11000 REM SUBROUTINE FOR F9 - SWITCH DRAWING COLORS
  169. 11010 DCOLOR = DCOLOR + 1
  170. 11012 IF DCOLOR = 4 THEN DCOLOR = 0
  171. 11014 LINE (MAXX, 0)-(319, MINY), DCOLOR, BF
  172. 11020 RETURN
  173. 12000 REM SUBROUTINE FOR F10 - CLEAR SCREEN
  174. 12010 CLS
  175. 12020 GOSUB 19000
  176. 12025 LINE (MAXX, 0)-(319, MINY), DCOLOR, BF
  177. 12027 IF PENDOWN = 1 THEN LINE (0, 0)-(MINX, MINY), 2, BF
  178. 12030 PUT (CURSX - 5, CURSY - 5), XHR
  179. 12040 RETURN
  180. 13000 REM SUBROUTINE FOR CURSOR UP
  181. 13005 KEY(7) STOP
  182. 13010 PUT (CURSX - 5, CURSY - 5), XHR
  183. 13020 CURSY = CURSY - 1
  184. 13030 IF CURSY < MINY THEN CURSY = MAXY
  185. 13035 IF PENDOWN = 1 THEN PSET (CURSX, CURSY), DCOLOR
  186. 13040 PUT (CURSX - 5, CURSY - 5), XHR
  187. 13045 GOSUB 19040
  188. 13047 KEY(7) ON
  189. 13500 RETURN
  190. 14000 REM SUBROUTINE FOR CURSOR LEFT
  191. 14010 PUT (CURSX - 5, CURSY - 5), XHR
  192. 14020 CURSX = CURSX - 1
  193. 14030 IF CURSX < MINX THEN CURSX = MAXX
  194. 14035 IF PENDOWN = 1 THEN PSET (CURSX, CURSY), DCOLOR
  195. 14040 PUT (CURSX - 5, CURSY - 5), XHR
  196. 14045 GOSUB 19040
  197. 14050 RETURN
  198. 15000 REM SUBROUTINE FOR CURSOR RIGHT
  199. 15010 PUT (CURSX - 5, CURSY - 5), XHR
  200. 15020 CURSX = CURSX + 1
  201. 15030 IF CURSX > MAXX THEN CURSX = MINX
  202. 15035 IF PENDOWN = 1 THEN PSET (CURSX, CURSY), DCOLOR
  203. 15040 PUT (CURSX - 5, CURSY - 5), XHR
  204. 15045 GOSUB 19040
  205. 15050 RETURN
  206. 16000 REM SUBROUTINE FOR CURSOR DOWN
  207. 16010 PUT (CURSX - 5, CURSY - 5), XHR
  208. 16020 CURSY = CURSY + 1
  209. 16030 IF CURSY > MAXY THEN CURSY = MINY
  210. 16035 IF PENDOWN = 1 THEN PSET (CURSX, CURSY), DCOLOR
  211. 16040 PUT (CURSX - 5, CURSY - 5), XHR
  212. 16045 GOSUB 19040
  213. 16050 RETURN
  214. 17000 REM SUBROUTINE TO END PROGRAM
  215. 17010 SW = 0
  216. 17015 ON ERROR GOTO 0
  217. 17020 RETURN
  218. 18000 REM SUBROUTINE TO INITIALIZE GRAPHICS FUNCTIONS
  219. 18010 BACKGCOLOR = 8: PALETT = 0
  220. 18020 COLOR BACKGCOLOR, PALETT
  221. 18040 DCOLOR = 2
  222. 18050 LINE (5, 0)-(5, 10), 1
  223. 18060 LINE (0, 5)-(10, 5), 1
  224. 18070 DIM XHR(12)
  225. 18080 GET (0, 0)-(10, 10), XHR
  226. 18090 MINX = 5: MAXX = 314: MINY = 5: MAXY = 185
  227. 18100 CURSX = INT((MAXX - MINX) / 2)
  228. 18110 CURSY = INT((MAXY - MINY) / 2)
  229. 18120 CLS
  230. 18130 PUT (CURSX - 5, CURSY - 5), XHR
  231. 18135 LINE (MAXX, 0)-(319, MINY), DCOLOR, BF
  232. 18140 GOSUB 19000
  233. 18150 RETURN
  234. 19000 REM SUBROUTINE TO PUT CURRENT AND SAVED CURSOR VALUES ON SCREEN
  235. 19030 LOCATE 25, 18: PRINT "SAVED "; : PRINT USING "###_,###"; SAVEX; SAVEY;
  236. 19035 LOCATE 25, 32: PRINT USING "& ##"; "FILE#"; F;
  237. 19040 LOCATE 25, 1: PRINT "CURRENT "; : LOCATE 25, 9: PRINT USING "###_,###"; CURSX; CURSY;
  238. 19050 RETURN
  239. 20000 REM SUBROUTINE TO DO PAINTING
  240. 20010 PUT (CURSX - 5, CURSY - 5), XHR
  241. 20020 PAINT (CURSX, CURSY), DCOLOR
  242. 20030 PUT (CURSX - 5, CURSY - 5), XHR
  243. 20040 RETURN
  244. 21000 REM SUBROUTINE FOR TAB RIGHT
  245. 21005 IF PENDOWN = 1 THEN SX = CURSX: SY = CURSY
  246. 21010 PUT (CURSX - 5, CURSY - 5), XHR
  247. 21020 CURSX = CURSX + 10
  248. 21030 IF CURSX > MAXX THEN CURSX = MINX
  249. 21035 IF PENDOWN = 1 THEN LINE (SX, SY)-(CURSX, CURSY), DCOLOR
  250. 21040 PUT (CURSX - 5, CURSY - 5), XHR
  251. 21045 GOSUB 19040
  252. 21050 RETURN
  253. 22000 REM SUBROUTINE FOR TAB LEFT
  254. 22005 IF PENDOWN = 1 THEN SX = CURSX: SY = CURSY
  255. 22010 PUT (CURSX - 5, CURSY - 5), XHR
  256. 22020 CURSX = CURSX - 10
  257. 22030 IF CURSX < MINX THEN CURSX = MAXX
  258. 22035 IF PENDOWN = 1 THEN LINE (SX, SY)-(CURSX, CURSY), DCOLOR
  259. 22040 PUT (CURSX - 5, CURSY - 5), XHR
  260. 22045 GOSUB 19040
  261. 22050 RETURN
  262. 23000 REM SUBROUTINE FOR TAB UP
  263. 23005 IF PENDOWN = 1 THEN SX = CURSX: SY = CURSY
  264. 23010 PUT (CURSX - 5, CURSY - 5), XHR
  265. 23020 CURSY = CURSY - 10
  266. 23030 IF CURSY < MINY THEN CURSY = MAXY
  267. 23035 IF PENDOWN = 1 THEN LINE (SX, SY)-(CURSX, CURSY), DCOLOR
  268. 23040 PUT (CURSX - 5, CURSY - 5), XHR
  269. 23045 GOSUB 19040
  270. 23050 RETURN
  271. 24000 REM SUBROUTINE FOR TAB DOWN
  272. 24005 IF PENDOWN = 1 THEN SX = CURSX: SY = CURSY
  273. 24010 PUT (CURSX - 5, CURSY - 5), XHR
  274. 24020 CURSY = CURSY + 10
  275. 24030 IF CURSY > MAXY THEN CURSY = MINY
  276. 24035 IF PENDOWN = 1 THEN LINE (SX, SY)-(CURSX, CURSY), DCOLOR
  277. 24040 PUT (CURSX - 5, CURSY - 5), XHR
  278. 24045 GOSUB 19040
  279. 24050 RETURN
  280. 25000 REM SUBROUTINE TO CHANGE PALETTE
  281. 25010 IF PALETT = 0 THEN PALETT = 1 ELSE PALETT = 0
  282. 25020 COLOR BACKGCOLOR, PALETT
  283. 25030 RETURN
  284. 26000 REM SUBROUTINE TO CHANGE BACKGROUND COLOR
  285. 26010 BACKGCOLOR = BACKGCOLOR + 1
  286. 26020 IF BACKGCOLOR = 16 THEN BACKGCOLOR = 0
  287. 26030 COLOR BACKGCOLOR, PALETT
  288. 26040 RETURN
  289. 27000 REM SUBROUTINE TO ERASE SAVED POINT
  290. 27010 PRESET (SAVEX, SAVEY)
  291. 27020 RETURN
  292. 28000 REM SUBROUTINE TO MOVE CURSOR TO "HOME"
  293. 28005 PUT (CURSX - 5, CURSY - 5), XHR
  294. 28010 CURSX = MINX
  295. 28020 CURSY = MINY
  296. 28030 PUT (CURSX - 5, CURSY - 5), XHR
  297. 28040 GOSUB 19040
  298. 28050 RETURN
  299. 29000 REM SUBROUTINE TO MOVE CURSOR TO "END"
  300. 29005 PUT (CURSX - 5, CURSY - 5), XHR
  301. 29010 CURSX = MAXX
  302. 29020 CURSY = MAXY
  303. 29030 PUT (CURSX - 5, CURSY - 5), XHR
  304. 29040 GOSUB 19040
  305. 29050 RETURN
  306. 30000 REM SUBROUTINE TO SAVE SCREEN IN FILE
  307. 30005 PUT (CURSX - 5, CURSY - 5), XHR
  308. 30010 DEF SEG = &HB800
  309. 30020 BSAVE "FPICT" + CHR$(48 + F) + ".DAT", 0, &H4000
  310. 30030 DEF SEG
  311. 30035 PUT (CURSX - 5, CURSY - 5), XHR
  312. 30040 RETURN
  313. 31000 REM SUBROUTINE TO RESTORE SCREEN FROM FILE
  314. 31010 DEF SEG = &HB800
  315. 31015 CLS
  316. 31020 BLOAD "FPICT" + CHR$(48 + F) + ".DAT", 0
  317. 31025 PUT (CURSX - 5, CURSY - 5), XHR
  318. 31027 LINE (MAXX, 0)-(319, MINY), DCOLOR, BF
  319. 31028 IF PENDOWN = 1 THEN LINE (0, 0)-(MINX, MINY), 2, BF ELSE LINE (0, 0)-(MINX, MINY), 0, BF
  320. 31030 GOSUB 19000
  321. 31040 RETURN
  322. 32000 REM SUBROUTINE TO DRAW PICTURE 1 - CAR
  323. 32005 PUT (CURSX - 5, CURSY - 5), XHR
  324. 32010 PRESET (CURSX, CURSY)
  325. 32020 DRAW "a=ANGLE;S10C=DCOLOR;"
  326. 32030 DRAW "r3m+1,3d2R1ND2u1r2d4l2u1l1"
  327. 32040 DRAW "d7R1nd2u2r3d6l3u2l1d3m-1,1l3"
  328. 32050 DRAW "m-1,-1u3l1d2l3u6r3d2nd2r1u7l1d1l2"
  329. 32060 DRAW "u4r2d1nd2R1U2"
  330. 32070 DRAW "M+1,-3"
  331. 32080 DRAW "BD10D2R3U2M-1,-1L1M-1,1"
  332. 32090 DRAW "BD3D1R1U1L1BR2R1D1L1U1"
  333. 32100 DRAW "BD2BL2D1R1U1L1BR2R1D1L1U1"
  334. 32110 DRAW "BD2BL2D1R1U1L1BR2R1D1L1U1"
  335. 32120 PUT (CURSX - 5, CURSY - 5), XHR
  336. 32130 RETURN
  337. 33000 REM SUBROUTINE TO DRAW PICTURE 2 - DONKEY
  338. 33015 PUT (CURSX - 5, CURSY - 5), XHR
  339. 33017 DRAW "BM=CURSX;,=CURSY;"
  340. 33030 DRAW "A=ANGLE;S15C=DCOLOR;"
  341. 33040 DRAW "M+2,-4R8M+1,-1U1M+1,+1M+2,-1"
  342. 33050 DRAW "M-1,1M+1,3M-1,1M-1,-2M-1,2"
  343. 33060 DRAW "D3L1U3M-1,1D2L1U2L3D2L1U2M-1,-1"
  344. 33070 DRAW "D3L1U5M-2,3U1"
  345. 33080 PUT (CURSX - 5, CURSY - 5), XHR
  346. 33090 RETURN
  347. 34000 REM SUBROUTINE TO CHANGE ROTATION ON NUMERIC PICTURES
  348. 34010 ANGLE = ANGLE + 1
  349. 34020 IF ANGLE = 4 THEN ANGLE = 0
  350. 34030 RETURN
  351. 35000 REM SUBROUTINE TO INCREMENT FILE NUMBER
  352. 35010 F = F + 1
  353. 35020 IF F = 5 THEN F = 0
  354. 35030 GOSUB 19035
  355. 35040 RETURN
  356. 36000 REM SUBROUTINE TO MOVE DIAGONALLY
  357. 36010 PUT (CURSX - 5, CURSY - 5), XHR
  358. 36020 IF PENDOWN = 1 THEN SX = CURSX: SY = CURSY
  359. 36030 CURSX = CURSX + DIR(0)
  360. 36040 IF DIR(0) < 0 THEN IF CURSX < MINX THEN CURSX = MAXX
  361. 36050 IF DIR(0) > 0 THEN IF CURSX > MAXX THEN CURSX = MINX
  362. 36060 CURSY = CURSY + DIR(1)
  363. 36070 IF DIR(1) < 0 THEN IF CURSY < MINY THEN CURSY = MAXY
  364. 36080 IF DIR(1) > 0 THEN IF CURSY > MAXY THEN CURSY = MINY
  365. 36090 IF PENDOWN = 1 THEN LINE (SX, SY)-(CURSX, CURSY), DCOLOR
  366. 36100 PUT (CURSX - 5, CURSY - 5), XHR
  367. 36110 GOSUB 19040
  368. 36120 RETURN
  369. 37000 REM SUBROUTINE TO MOVE CURSOR TO SAVED POINT
  370. 37010 PUT (CURSX - 5, CURSY - 5), XHR
  371. 37020 CURSX = SAVEX
  372. 37030 CURSY = SAVEY
  373. 37040 PUT (CURSX - 5, CURSY - 5), XHR
  374. 37050 GOSUB 19040
  375. 37060 RETURN
  376. 65200 RUN "basmenu"
  377.  
  378.