home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 01 / sprites / grb.inc < prev    next >
Encoding:
Text File  |  1988-10-27  |  6.1 KB  |  223 lines

  1. REM * ---------------------------------------------------- *
  2. REM *                    GRB.INC                           *
  3. REM *          Include-File für beide Versionen            *
  4. REM * ---------------------------------------------------- *
  5.  
  6. SUB grbausgeben:
  7.   SHARED daten%(),dateiname()
  8.   SCREEN %schirm
  9.   CLS : CALL farben
  10.   CALL umrandung(3,4)
  11.   z = %anf
  12.   FOR dat% = 1 TO 9
  13.     IF (dat% MOD 3 = 1) THEN INCR z, (%fd + 1)
  14.     IF dateiname(dat%) THEN
  15.       FOR i% = 0 TO %fd
  16.         FOR x% = 0 TO %fd
  17.           PSET(%fd*5 - 119 + i% + ((dat% - 1) MOD 3)_
  18.               *(%fd + 1), z + x%), daten%(dat%, i%, x%)
  19.         NEXT x%
  20.       NEXT i%
  21.     END IF
  22.   NEXT dat%
  23.   PRINT CHR$(7);
  24. END SUB
  25.  
  26. SUB aufbau:
  27.   SHARED dateiname()
  28.   SCREEN 0:WIDTH 80
  29.   CLS:COLOR(6)
  30.   PRINT "Die Sprites werden in der Reihenfolge"
  31.   PRINT "geladen, wie  das rechts  ausgegebene"
  32.   PRINT "Feld numeriert ist."
  33.   PRINT "Wird ein Feld nicht benötigt,<N> ein-"
  34.   PRINT "geben. Keine Eingabe  bei Dateiwahl ="
  35.   PRINT "Programmabbruch."
  36.   LOCATE 11,44: PRINT "╔═══════╤═══════╤═══════╗"
  37.   LOCATE 12,44: PRINT "║       │       │       ║"
  38.   LOCATE 13,44: PRINT "║   1   │   2   │   3   ║"
  39.   LOCATE 14,44: PRINT "║       │       │       ║"
  40.   LOCATE 15,44: PRINT "╟───────┼───────┼───────╢"
  41.   LOCATE 16,44: PRINT "║       │       │       ║"
  42.   LOCATE 17,44: PRINT "║   4   │   5   │   6   ║"
  43.   LOCATE 18,44: PRINT "║       │       │       ║"
  44.   LOCATE 19,44: PRINT "╟───────┼───────┼───────╢"
  45.   LOCATE 20,44: PRINT "║       │       │       ║"
  46.   LOCATE 21,44: PRINT "║   7   │   8   │   9   ║"
  47.   LOCATE 22,44: PRINT "║       │       │       ║"
  48.   LOCATE 23,44: PRINT "╚═══════╧═══════╧═══════╝"
  49.   COLOR(12): z = 9
  50.   FOR v% = 1 TO 9
  51.     IF ((v% - 1) MOD 3 = 0) THEN INCR z, 4
  52.     IF dateiname(v%) THEN
  53.       LOCATE z, 47 + ((v% - 1) MOD 3)*8
  54.       PRINT v%;
  55.     END IF
  56.   NEXT v%
  57.   COLOR(15)
  58. END SUB
  59.  
  60. SUB datazeile:
  61.   SHARED spr%(),pal%()
  62.   PRINT"Skala:   1 = 5, 2 = 10, 3 = 15, usw."
  63.   LOCATE 16,1: PRINT "Dateiname:"
  64.   LOCATE 18,1: INPUT "", datei$
  65.   IF datei$ = "" THEN EXIT SUB
  66.   z = instr(datei$, ".")
  67.   IF z THEN datei$ = left$(datei$, z - 1)
  68.   datei$ = left$(datei$, 8) + ".DTA"
  69.   LOCATE 20,1
  70.   INPUT "Breite des Sprites: ";b
  71.   INPUT "Höhe des Sprites:   ";h
  72.   IF h = 0 OR b = 0 THEN EXIT SUB
  73.   IF h < 5 THEN h = 5 : IF b < 5 THEN b = 5
  74.   IF h > 3*(%fd + 1) THEN h = 3*(%fd + 1)
  75.   IF b > 3*(%fd + 1) THEN b = 3*(%fd + 1)
  76.   GET (%fd*5 - 119, %anf + %fd + 1)-_
  77.       (%fd*5 - 120 + b, %anf + %fd + h),spr%
  78.   PUT (%fd*6, %anf + %fd + 1), spr%
  79.   LINE(%fd*6 - 1, %anf + %fd) - (%fd*6 +b,_
  80.        %anf + %fd + h + 1), 15, B
  81. '----------------------------------------
  82. ' Zu 99% reicht hier eine Dimensionierung
  83. ' von ca 50%, jedoch nicht immer
  84. ' Es bleibt jedem selbst überlassen, die
  85. ' Größe von <bz%> zu ändern.
  86. '----------------------------------------
  87.   bz% = 4 + int((b * %pix + 7) / 8) * h
  88. '----------------------------------------
  89.  OPEN datei$ FOR OUTPUT AS #1
  90.   IF %fd = 44 THEN
  91.     PRINT #1, "Palettendaten:"
  92.     PRINT #1, "DIM p%(15)"
  93.     PRINT #1, "FOR i%=0 TO 15"
  94.     PRINT #1, "  READ p%(i%)"
  95.     PRINT #1, "NEXT i%"
  96.     PRINT #1, "PALETTE USING p%(0)"
  97.     PRINT #1, "RETURN"
  98.     PRINT #1, "" : PRINT #1, "DATA ";
  99.     FOR i% = 0 TO 15
  100.       PRINT #1, pal%(i%);
  101.       IF i% <> 15 THEN PRINT #1, ",";
  102.     NEXT i%
  103.     PRINT #1, ""
  104.   END IF
  105.   PRINT #1, "REM ";datei$
  106.   PRINT #1, "REM DIMensionierung: ";bz%
  107.   PRINT #1, "DATA  ";
  108.   zahl% = 0
  109.   FOR i% = 0 TO bz%
  110.     z$ = STR$(spr%(i%))
  111.     IF LEFT$(z$,1) = CHR$(32) THEN_
  112.       z$ = RIGHT$(z$,LEN(z$)-1)
  113.     PRINT #1,z$;
  114.     IF i% <> bz% THEN PRINT #1, ",";
  115.     INCR zahl%,(LEN(z$) + 1)
  116.     IF (i% <> 0) AND (i% <> bz%) AND (zahl% >= 60) THEN
  117.       PRINT #1, "_"
  118.       PRINT #1, "      ";
  119.       zahl% = 0
  120.     END IF
  121.   NEXT i%
  122.   CLOSE #1
  123.   z = instr(datei$, ".")
  124.   datei$ = left$(datei$, z - 1) + ".FIL"
  125.   OPEN datei$ AS #1 LEN = 2
  126.   FIELD #1, 2 AS sp$
  127.   spzaehler% = 0
  128.  
  129. REM -----------------------------------
  130. REM   Die EGA-Karte braucht die
  131. REM   eingerahmten Zeilen nicht
  132.  
  133.   IF %fd = 44 THEN
  134.     FOR i% = 0 TO 15
  135.       INCR spzaehler%
  136.       LSET sp$ = MKI$(pal%(i%))
  137.       PUT #1, spzaehler%
  138.     NEXT i%
  139.   END IF
  140.  
  141. REM -----------------------------------
  142.  
  143.     INCR spzaehler%
  144.     LSET sp$ = MKI$(bz%)
  145.     PUT #1, spzaehler%
  146.     FOR i% = 0 TO bz%
  147.       INCR spzaehler%
  148.       LSET sp$ = MKI$(spr%(i%))
  149.       PUT #1, spzaehler%
  150.     NEXT i%
  151.   CLOSE #1
  152. END SUB
  153.  
  154.  
  155. SUB grossbild:
  156.   SHARED dateiname(), taste$, dateiname$
  157.   SHARED daten%(), f2(), pal%(), p%(), spr%()
  158.  
  159. REM -----------------------------------
  160. REM   Die EGA-Karte braucht die
  161. REM   eingerahmten Zeilen nicht
  162.  
  163.   IF %fd = 44 THEN
  164.     FOR i% = 0 TO 15
  165.       p%(i%) = pal%(i%)
  166.     NEXT i%
  167.   END IF
  168. '--------------------------------------
  169.  
  170.   FOR i% = 1 TO 9
  171.     dateiname(i%) = %false
  172.   NEXT i%
  173.   CALL aufbau
  174.   FOR dat% = 1 TO 9
  175.       LOCATE 22,1 : PRINT dat% ". Feld laden (J/N)";
  176.     DO
  177.       CALL tastatur
  178.       taste$ = UCASE$(taste$)
  179.     LOOP UNTIL taste$ = "J" OR taste$ = "N"
  180.     IF taste$ = "J" THEN
  181.       dateiname(dat%) = %true
  182.       CLS: CALL laden
  183.       IF dateiname$ = "" THEN dat% = 9
  184.       IF dateiname$ <> "" THEN
  185.         FOR i% = 0 TO %fd
  186.           FOR x% = 0 TO %fd
  187.             daten%(dat%,i%,x%) = f2(i%,x%)
  188.           NEXT x%
  189.         NEXT i%
  190.         CALL aufbau
  191.       END IF
  192.     END IF
  193.   NEXT dat%
  194.   abbruch = %true
  195.   FOR i% = 1 TO 9
  196.     IF dateiname(i%) THEN abbruch = %false
  197.   NEXT i%
  198.   IF abbruch or dateiname$ = "" THEN
  199.     CALL bildschirm
  200.     EXIT SUB
  201.   END IF
  202.   CALL grbausgeben
  203.  
  204. REM -----------------------------------
  205. REM   Die EGA-Karte braucht die
  206. REM   eingerahmten Zeilen nicht
  207.  
  208.   IF %fd = 44 THEN
  209.     FOR i% = 0 TO 15
  210.       pal%(i%) = p%(i%)
  211.     NEXT i%
  212.   END IF
  213. REM -----------------------------------
  214.  
  215.   GET(%fd*5 - 119, %anf + %fd + 1) - (%fd*5 - 117_
  216.      + 3*%fd, %anf + %fd + 3*%fd + 2), spr%
  217.   CALL DATAzeile
  218.   CALL farben
  219.   CALL bildschirm
  220. END SUB
  221.  
  222. REM * ---------------------------------------------------- *
  223. REM *                Ende von GRB.INC                      *