home *** CD-ROM | disk | FTP | other *** search
- REM -------------------------------------------------------
- REM SP-EDIT.BAS
- REM Sprite-Editor für Turbo Basic (v1.0e)
- REM (c) 1988 by M. Köthe & TOOLBOX
- REM -------------------------------------------------------
-
- $INCLUDE "EGA.INC"
- $INCLUDE "VERG.INC"
- $INCLUDE "GRB.INC"
-
- REM -------------------------------------------------------
-
- SUB tastatur
- SHARED taste, taste$
- WHILE NOT INSTAT: WEND
- taste$ = inkey$
- taste = ASC(taste$)
- IF taste = 0 THEN
- taste = ASC(MID$(taste$,2))
- IF taste = 81 THEN taste = 0
- END IF
- END SUB
-
- REM -------------------------------------------------------
-
- SUB tauschen
- SHARED feld(), waag, senk, taste
- LOCATE 25,1: PRINT "Fuellfarbe ? ";
- DO
- CALL tastatur
- LOOP UNTIL (taste > (%tabz - 1) and taste < %tende)
- v = taste - %tabz
- LOCATE 25,1: PRINT "Zu aendernde Farbe ";
- DO
- CALL tastatur
- LOOP UNTIL (taste > (%tabz - 1) and taste < %tende)
- LOCATE 25,1: PRINT space$(26);
- IF v + %tabz = taste THEN EXIT SUB
- CALL cursor(waag, senk)
- FOR i% = 0 TO %fd
- FOR x% = 0 TO %fd
- IF feld(i%, x%) = taste - %tabz THEN
- feld(i%,x%) = v
- LINE (i% * %xbr + %po1, x% * %ybr + %po1)-_
- (i% * %xbr + %po2, x% * %ybr + %po3), v, BF
- PSET (i% + %po4, x% + %po5), v
- END IF
- NEXT x%
- NEXT i%
- CALL cursor(waag, senk)
- END SUB
-
- REM -------------------------------------------------------
-
- SUB punktsetzen(i, x)
- SHARED feld(), taste, anfang
- IF anfang THEN anfang = %false
- feld(i, x) = taste - %tabz
- LINE (i * %xbr + %po1, x * %ybr + %po1)-_
- (i * %xbr + %po2, x * %ybr + %po3), feld(i, x), BF
- PSET (i + %po4, x + %po5), feld(i, x)
- CALL cursor(i,x)
- END SUB
-
- REM -------------------------------------------------------
-
- SUB feld
- SHARED anfang, feld(), waag, senk
- IF NOT anfang THEN
- FOR i% = 0 TO %fd
- FOR x% = 0 TO %fd
- LINE (i% * %xbr + %po1, x% * %ybr + %po1)-_
- (i% * %xbr + %po2, x% * %ybr + %po3), feld(i%, x%), BF
- PSET (i% + %po4, x% + %po5), feld(i%, x%)
- NEXT x%
- NEXT i%
- END IF
- CALL cursor(waag, senk)
- END SUB
-
- REM -------------------------------------------------------
-
- SUB cursor(i, x)
- SHARED cur%()
- PUT(i * %xbr + %po1, x * %ybr + %po1), cur%, XOR
- END SUB
-
- REM -------------------------------------------------------
-
- SUB loeschen
- SHARED waag, senk, feld()
- waag=0: senk=0
- view (%po4, %po5) - (%po4 + %fd, %po5 + %fd), 0
- view (0, 0) - (%bw, %bs)
- FOR i% = 0 TO %fd
- FOR x% = 0 TO %fd
- LINE (i% * %xbr + %po1, x% * %ybr + %po1)-_
- (i% * %xbr + %po2, x% * %ybr + %po3), 0, BF
- feld(i%, x%) = 0
- NEXT x%
- NEXT i%
- CALL cursor(waag, senk)
- END SUB
-
- REM -------------------------------------------------------
-
- SUB laden
- SHARED KeinEintrag, pal%(), f2(), dateiname$
- KeinEintrag = %false
- SCREEN 0: WIDTH 80: CLS
- ON ERROR GOTO fehler2
- PRINT "<LADEN>: Vorhandene Sprites:"
- f$= "*.SPR": FILES f$
- ON ERROR GOTO 0
- IF KeinEintrag THEN EXIT SUB
- DO
- KeinEintrag = %false
- PRINT: INPUT "Dateiname: "; dateiname$
- IF dateiname$="" THEN EXIT SUB
- z = instr(dateiname$,".")
- IF z THEN dateiname$ = left$(dateiname$, z-1)
- dateiname$ = dateiname$ + ".SPR"
- ON ERROR GOTO fehler3
- OPEN dateiname$ AS #1 LEN = 2
- FIELD #1, 2 AS sp$
- spzaehler% = 0
- ON ERROR GOTO 0
- LOOP UNTIL NOT KeinEintrag
-
- REM -------------------------------------------------------
- REM Bei Anpassung an Maschinen ohne EGA-Karte koennen die
- REM eingerahmten Zeilen wegfallen
-
- IF %fd = 44 THEN
- FOR i% = 0 TO 15
- INCR spzaehler%
- GET #1, spzaehler%
- pal%(i%) = CVI(sp$)
- NEXT i%
- END IF
-
- REM -------------------------------------------------------
-
- FOR i% = 0 TO %fd
- FOR x% = 0 TO %fd
- INCR spzaehler%
- GET #1, spzaehler%
- f2(i%, x%) = CVI(sp$)
- NEXT x%
- NEXT i%
- CLOSE #1
- END SUB
-
- REM -------------------------------------------------------
-
- SUB datei
- SHARED feld(), dateiname$, f2(), pal%()
- OPEN dateiname$ AS #1 LEN = 2
- FIELD #1, 2 AS sp$
- spzaehler% = 0
-
- REM -------------------------------------------------------
- REM Bei Anpassung an Maschinen ohne EGA-Karte koennen die
- REM eingerahmten Zeilen wegfallen
-
- IF %fd = 44 THEN
- FOR i% = 0 TO 15
- INCR spzaehler%
- LSET sp$ = MKI$(pal%(i%))
- PUT #1, spzaehler%
- NEXT i%
- END IF
-
- REM -------------------------------------------------------
-
- FOR i% = 0 TO %fd
- FOR x% = 0 TO %fd
- INCR spzaehler%
- LSET sp$ = MKI$(f2(i%, x%))
- PUT #1, spzaehler%
- NEXT x%
- NEXT i%
- CLOSE #1
- END SUB
-
- REM -------------------------------------------------------
-
- SUB speichern
- SHARED spr%(), dateiname$, f2(), feld()
- GET (%po4, %po5) - (%po4 + %fd, %po5 + %fd), spr%
- SCREEN 0: WIDTH 80: CLS
- ON ERROR GOTO fehler1
- PRINT "<SPEICHERN>: Vorhandene Sprites:"
- f$= "*.SPR": FILES f$
- ON ERROR GOTO 0
- FOR i% = 0 TO %fd
- FOR x% = 0 TO %fd
- f2(i%, x%) = feld(i%, x%)
- NEXT x%
- NEXT i%
- PRINT: INPUT "Dateiname: "; dateiname$
- IF dateiname$="" THEN
- CALL bildschirm
- EXIT SUB
- END IF
- z = instr(dateiname$, ".")
- IF z THEN dateiname$ = left$(dateiname$, z-1)
- dateiname$ = dateiname$ + ".SPR"
- CALL datei
- REM CALL datagen
- CALL bildschirm
- END SUB
-
-
-
- REM--------------------------------------------------------
- REM Beginn des gemeinsamen Hauptprogramms
-
- CALL bildschirm
- DO
- sound 100, .25
- CALL tastatur
- SELECT CASE taste
- CASE 80
- CALL cursor(waag, senk)
- INCR senk
- IF senk > %fd THEN senk = 0
- CALL cursor(waag, senk)
- CASE 72
- CALL cursor(waag, senk)
- DECR senk
- IF senk < 0 THEN senk = %fd
- CALL cursor(waag, senk)
- CASE 75
- CALL cursor(waag, senk)
- DECR waag
- IF waag < 0 THEN waag = %fd
- CALL cursor(waag, senk)
- CASE 77
- CALL cursor(waag, senk)
- INCR waag
- IF waag > %fd THEN waag = 0
- CALL cursor(waag, senk)
- CASE 67
- CALL loeschen
- CASE 68
- ende = %true
- CASE 63
- CALL tauschen
- CASE 62
- CALL palwechsel
- CASE 61
- CALL farbe
- CASE 60
- ERASE spr%: DIM spr%(%sprgr)
- CALL speichern
- CASE 59
- CALL laden
- IF dateiname$ <> "" THEN
- FOR i% = 0 TO %fd
- FOR x% = 0 TO %fd
- feld(i%, x%)= f2(i%, x%)
- NEXT x%
- NEXT i%
- anfang = %false
- END IF
- CALL bildschirm
- CASE 48, 49, 50, 51
- IF %fd = 29 THEN CALL punktsetzen(waag, senk)
- CASE 64
- CALL vergroessern
- CASE 66
- ERASE spr%: DIM spr%(%sprgr)
- CALL grossbild
-
- REM -------------------------------------------------------
- REM Bei Anpassung an Maschinen ohne EGA-Karte koennen die
- REM eingerahmten Zeilen wegfallen
-
- CASE 97, 98, 99,100,101,102,103,104,_
- 105,106,107,108,109,110,111,112
- IF %fd=44 THEN CALL punktsetzen(waag,senk)
- REM -------------------------------------------------------
-
- END SELECT
- LOOP UNTIL ende
- SCREEN 0
- END
-
- REM--------------------------------------------------------
- REM Ende des Hauptprogramms
- REM
- REM Es folgen die Fehlerroutinen...
-
- fehler1:
- PRINT chr$(7);"Kein Sprite-File vorhanden !"
- RESUME NEXT
-
- fehler2:
- PRINT chr$(7);"Kein Sprite-File vorhanden !"
- keinEintrag = %true
- RESUME NEXT
-
- fehler3:
- PRINT chr$(7);dateiname$" nicht vorhanden !"
- KeinEintrag = %true
- RESUME NEXT
-
- REM -------------------------------------------------------
- REM Ende von SP-EDIT.BAS
-
-
-
-