home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1989 / 01 / sprites / verg.inc < prev   
Encoding:
Text File  |  1988-10-27  |  3.4 KB  |  130 lines

  1. REM * ---------------------------------------------------- *
  2. REM *                     VERG.INC                         *
  3. REM *   Diese Routine wird für beide Versionen benötigt    *
  4. REM * ---------------------------------------------------- *
  5.  
  6. SUB kippen(li, re):
  7.   SHARED feld(), f2(), ko, sp, verg
  8.   FOR i% = 0 TO %fd
  9.     FOR x% = 0 TO %fd
  10.       IF (li <> 0) OR (re <> 0) THEN
  11.         f2(i%, x%) = feld(ABS(x% - li), ABS(i% - re))
  12.       ELSE
  13.         f2(i%, x%) = feld(i%, x%)
  14.       END IF    
  15.       FOR e% = 1 TO verg
  16.         FOR f% = 1 TO verg
  17.           IF f2(i%, x%) <> 0 THEN
  18.             PSET(%fd*5 - 120 + ABS(i% - sp)*verg + e%, 2*_
  19.                  %fd - 39 + ABS(x% - ko)*verg+f%),f2(i%,x%)
  20.           END IF
  21.         NEXT f%
  22.       NEXT e%
  23.     NEXT x%
  24.   NEXT i%
  25. END SUB
  26.  
  27. SUB abfrage:
  28.   SHARED taste$, sp, li, re, ko
  29.   LOCATE 20,1: PRINT "Spiegeln (J/N)";
  30.   DO
  31.     CALL tastatur
  32.     taste$ = UCASE$(taste$)
  33.   LOOP UNTIL taste$ = "J" OR taste$ = "N"
  34.   IF taste$ = "J" THEN sp = %fd
  35.   LOCATE 20,1: PRINT "Drehen (J/N)   ";
  36.   DO
  37.     CALL tastatur
  38.     taste$ = UCASE$(taste$)
  39.   LOOP UNTIL taste$ = "J" OR taste$ = "N"
  40.   IF taste$ = "J" THEN
  41.     LOCATE 20,1 : PRINT "Richtung (Uhrzeigersinn) 1/2/3";
  42.     DO
  43.       CALL tastatur
  44.       taste$ = UCASE$(taste$)
  45.     LOOP UNTIL taste$ > "0" AND taste$ < "4"
  46.     SELECT CASE taste$
  47.       CASE "1"
  48.         re = %fd
  49.       CASE "2"
  50.         ko = %fd
  51.         IF sp = 0 THEN sp = %fd ELSE sp = 0
  52.       CASE "3"
  53.         li = %fd
  54.     END SELECT
  55.   END IF
  56.   LOCATE 20,1: PRINT "Vergrößerung  (1/2/3)         ";
  57.   DO
  58.     CALL tastatur
  59.     taste$ = UCASE$(taste$)
  60.   LOOP UNTIL taste$ > "0" AND taste$ < "4"
  61.   LOCATE 20,1 : PRINT "                     ";
  62. END SUB
  63.  
  64. SUB felderspeichern:
  65.   SHARED feld(), f2(), verg, dateiname$
  66.   IF verg = 1 THEN
  67.     FOR i% = 0 TO %fd
  68.       FOR x% = 0 TO %fd
  69.         feld(i%,x%) = POINT(%fd*5 - 119 + i%,2*%fd-38+x%)
  70.       NEXT x%
  71.     NEXT i%
  72.     EXIT SUB
  73.   END IF
  74.   LOCATE 16,1: PRINT "Dateiname:"
  75.   LOCATE 18,1: INPUT "", datei$
  76.   IF datei$ = "" THEN EXIT SUB
  77.   z = instr(datei$, ".")
  78.   IF z THEN datei$ = left$(datei$, z - 1)
  79.   z = %anf
  80.   FOR dat% = 1 TO 9
  81.     IF (dat% MOD 3 = 1) THEN INCR z,(%fd + 1)
  82.        IF ((verg = 2) AND ((dat% = 1) OR (dat% = 2) OR_
  83.        (dat% = 4) OR (dat% = 5))) OR (verg = 3)_
  84.     THEN
  85.        dateiname$ = datei$ + right$(str$(dat%),1) + ".SPR"
  86.        FOR i% = 0 TO %fd
  87.          FOR x% = 0 TO %fd
  88.           f2(i%,x%) = POINT(%fd*5-119+i%+_
  89.                            ((dat%-1) MOD 3)*(%fd+1),z+x%)
  90.          NEXT x%
  91.        NEXT i%
  92.        CALL datei    
  93.     END IF
  94.   NEXT dat%
  95. END SUB
  96.  
  97. SUB umrandung(a,b):
  98.   LINE(%fd*5-120,2*%fd-39)-(%fd*5-120+b+_
  99.        a*%fd,2*%fd-39+b+a*%fd),15,B
  100.   FOR i%=0 TO %fd*a-2 step 5
  101.     LINE(i%+%fd*5-115,2*%fd-42)-_
  102.         (i%+%fd*5-115,2*%fd-40)
  103.     LINE(%fd*5-121,i%+2*%fd-34)-_
  104.         (%fd*5-123,i%+2*%fd-34)
  105.   NEXT i%
  106. END SUB
  107.  
  108. SUB vergroessern:
  109.   SHARED feld(),f2(),taste$
  110.   SHARED sp,li,re,ko,verg
  111.   sp=0:li=0:ko=0:re=0
  112.   CLS:PRINT"Spritevergrößerung:"
  113.   CALL umrandung(3,4)
  114.   FOR i%=0 TO %fd
  115.     FOR x%=0 TO %fd
  116.       PSET(10*%fd-160+i%,2*%fd-40+x%),_
  117.            feld(i%,x%)
  118.     NEXT x%
  119.   NEXT i%
  120.   CALL abfrage
  121.   verg=VAL(taste$)
  122.   CALL kippen(li,re)
  123.   CALL felderspeichern
  124.   CALL bildschirm
  125. END SUB
  126.  
  127. REM * ---------------------------------------------------- *
  128. REM *                Ende von VERG.INC                     *
  129.  
  130.