home *** CD-ROM | disk | FTP | other *** search
- DEFINT A-Z
- '*--------------------------------------------------------*
- '* MachCurs.Bas *
- '* Das Programm benötigt die Mausbibliothek Mauslib.Bas *
- '* (c) 1991 E. Schütte & toolbox *
- '* *
- '* Die Bibliothek 'MausLib' mit QB/Lmauslib einbinden! *
- '*--------------------------------------------------------*
-
- DECLARE SUB SetXSub ()
- DECLARE SUB SetYSub ()
- DECLARE SUB SetDot (setxpos AS INTEGER, setypos AS INTEGER)
- DECLARE SUB RemDot (setxpos AS INTEGER, setypos AS INTEGER)
- DECLARE SUB DateiMachen ()
- DECLARE SUB Schreiben ()
-
- '* Prozeduren und Funktionen der Bibliothek 'MAUSLIB':
- DECLARE SUB Init ()
- DECLARE SUB GCurs (horiz%, vertik%, offset%, segm%)
- DECLARE SUB CursAn ()
- DECLARE SUB CursAus ()
- DECLARE SUB Grenzen (links%, oben%, rechts%, unten%)
- DECLARE SUB Geschwindigkeit (horiz%, vertik%)
- DECLARE FUNCTION XPos% ()
- DECLARE FUNCTION YPos% ()
- DECLARE FUNCTION Knopf% ()
-
- CONST FALSE = 0, TRUE = -1
-
- DIM SHARED restart AS INTEGER
- DIM SHARED again AS INTEGER
- DIM SHARED setx AS INTEGER, sety AS INTEGER
- DIM SHARED includename AS STRING
- DIM SHARED tabelle(1 TO 16, 1 TO 16) AS INTEGER
- DIM SHARED z1(15, 1) AS INTEGER
- '$INCLUDE: 'CURSOR.CUR'
-
- RESTORE
- FOR i% = 0 TO 15
- READ dummy$:
- z1(i%, 1) = VAL(dummy$): z1(i%, 0) = NOT z1(i%, 1)
- NEXT i%
-
- ON ERROR GOTO NoEGA
- SCREEN 9
- ON ERROR GOTO 0
-
- Init
- Geschwindigkeit 30, 30
- GCurs 0, 0, VARPTR(z1(0, 0)), VARSEG(z1(0, 0))
- Grenzen 0, 0, 620, 349
- PALETTE 0, 7: PALETTE 15, 0: VIEW: CLS : CLEAR
- FOR k% = 20 TO 244 STEP 14 '* waagerechte Linien
- LINE (20, k%)-(244, k%)
- NEXT k%
- FOR k% = 20 TO 244 STEP 14 '* senkrechte Linien
- LINE (k%, 20)-(k%, 244)
- NEXT k%
- LOCATE 25, 5
- PRINT "Punkte setzen mit linker Maustaste, ";
- PRINT "Punkte löschen mit rechter Maustaste";
- LINE (0, 330)-(640, 330), 1, B
- LOCATE 19, 40: PRINT "SICHERN"
- LINE (305, 251)-(380, 265), 1, B
- LOCATE 21, 40: PRINT "NEUSTART"
- LINE (305, 279)-(380, 293), 1, B
- LOCATE 23, 42: PRINT "ENDE"
- LINE (305, 307)-(380, 321), 1, B
- LINE (325, 98)-(348, 119), 2, B '* kleiner Cursor
- CursAn
-
- DO
- restart = FALSE
- SetXSub
- IF setx > 21 AND setx < 233 THEN
- IF sety > 21 AND sety < 233 THEN
- kn% = Knopf%
- SELECT CASE kn%
- CASE 1: SetDot setx, sety
- CASE 2: RemDot setx, sety
- CASE ELSE:
- END SELECT
- END IF
- ELSEIF sety > 232 THEN
- IF setx = 350 AND sety = 260 AND Knopf% = 1 THEN
- IF (NOT restart) THEN DateiMachen
- END IF
- END IF
- IF restart THEN RUN
- LOOP
-
- NoEGA:
- PRINT "Dieses Programm benötigt eine EGA- oder VGA-Karte"
- END
-
- DEFSNG A-Z
- SUB DateiMachen
- SHARED dec&, bild$, disk$
- CLOSE
- CursAus
- LOCATE 5, 50
- PRINT "Name der Definitions-"
- LOCATE 6, 50
- PRINT "datei: ";
- INPUT "", includename
- LOCATE 5, 50
- PRINT " "
- LOCATE 6, 50
- PRINT " "
- CursAn
- IF LEN(includename) > 0 THEN
- includename = UCASE$(includename)
- IF INSTR(includename, ".") = 0 THEN
- includename = includename + ".CUR"
- END IF
- ELSE
- EXIT SUB
- END IF
- OPEN "R", 1, includename '* Nachfrage, wenn Datei
- IF LOF(1) > 0 THEN '* schon existiert.
- VIEW SCREEN (370, 20)-(620, 240), , 4
- CursAus
- LOCATE 4, 55: PRINT "ACHTUNG !"
- LOCATE 6, 52: PRINT "Die Datei "; includename
- LOCATE 7, 52: PRINT "existiert bereits!"
- LOCATE 8, 52: PRINT "------------------------"
- LOCATE 10, 52: PRINT "Wollen Sie sie wirklich"
- LOCATE 11, 52: PRINT "überschreiben?"
- LOCATE 14, 60: PRINT "ja"
- LOCATE 16, 61: PRINT "nein"
- LINE (468, 178)-(522, 200), 1, B
- LINE (468, 208)-(522, 228), 1, B
- CursAn
- DO
- IF XPos% > 467 AND XPos% < 523 THEN
- IF YPos% > 178 AND YPos% < 201 AND Knopf% = 1 THEN
- Schreiben
- END IF
- IF YPos% > 207 AND YPos% < 229 AND Knopf% = 1 THEN
- CursAus
- VIEW SCREEN (369, 19)-(621, 241)
- CLS : VIEW: CursAn: CLOSE : EXIT SUB
- END IF
- END IF
- LOOP
- ELSE
- Schreiben
- END IF
- END SUB
-
- SUB RemDot (setxpos AS INTEGER, setypos AS INTEGER)
- '* Punkt löschen:
- CursAus
- PAINT (setxpos, setypos), 7, 15 '* großes Bild
- PRESET ((328 + (setxpos - 8) \ 14), (100 + (setypos - 8) \ 14))
- '* kleines Bild
- CursAn
- tabelle((setypos - 8) / 14, (setxpos - 8) / 14) = 0
- END SUB
-
- SUB Schreiben
- SHARED dec&, bild$, disk$
- CursAus: VIEW SCREEN (300, 1)-(630, 299): CLS: CLOSE #1
- LOCATE 2
- OPEN "O", 1, includename
- FOR k% = 1 TO 16
- LOCATE , 35
- dec& = 0
- bild$ = ""
- FOR l% = 16 TO 1 STEP -1
- IF tabelle(k%, l%) = 1 THEN
- dec& = dec& + 2 ^ ((l% - 16) * -1)
- bild$ = CHR$(35) + bild$
- ELSEIF tabelle(k%, l%) = 0 THEN
- bild$ = CHR$(246) + bild$ '* 246
- END IF
- NEXT l%
- PRINT HEX$(dec&), bild$
- disk$ = "DATA &H" + HEX$(dec&)
- PRINT #1, disk$, " REM "; bild$
- NEXT k%
- PRINT : PRINT
- PRINT "Die Datei "; includename; " wurde erstellt."
- PRINT "Sie enthält die Daten für den neuen "
- PRINT "Maus-Cursor."
- END
- END SUB
-
- SUB SetDot (setxpos AS INTEGER, setypos AS INTEGER)
- '* Punkt setzen
- CursAus
- PAINT (setxpos, setypos), 8, 15 '* großes Bild
- PSET ((328 + (setxpos - 8) \ 14), (100 + (setypos - 8) \ 14))
- CursAn
- tabelle((setypos - 8) / 14, (setxpos - 8) / 14) = 1
- END SUB
-
- SUB SetXSub
- SELECT CASE XPos%
- CASE 21 TO 33: setx = 22
- CASE 35 TO 47: setx = 36
- CASE 49 TO 61: setx = 50
- CASE 63 TO 75: setx = 64
- CASE 77 TO 89: setx = 78
- CASE 91 TO 103: setx = 92
- CASE 105 TO 117: setx = 106
- CASE 119 TO 131: setx = 120
- CASE 133 TO 145: setx = 134
- CASE 147 TO 159: setx = 148
- CASE 161 TO 173: setx = 162
- CASE 175 TO 187: setx = 176
- CASE 189 TO 201: setx = 190
- CASE 203 TO 215: setx = 204
- CASE 217 TO 229: setx = 218
- CASE 231 TO 243: setx = 232
- CASE 305 TO 380: setx = 350: restart = FALSE
- CASE ELSE: EXIT SUB
- END SELECT
- SetYSub
- END SUB
-
- SUB SetYSub
- SELECT CASE YPos%
- CASE 21 TO 33: sety = 22
- CASE 35 TO 47: sety = 36
- CASE 49 TO 61: sety = 50
- CASE 63 TO 75: sety = 64
- CASE 77 TO 89: sety = 78
- CASE 91 TO 103: sety = 92
- CASE 105 TO 117: sety = 106
- CASE 119 TO 131: sety = 120
- CASE 133 TO 145: sety = 134
- CASE 147 TO 159: sety = 148
- CASE 161 TO 173: sety = 162
- CASE 175 TO 187: sety = 176
- CASE 189 TO 201: sety = 190
- CASE 203 TO 215: sety = 204
- CASE 217 TO 229: sety = 218
- CASE 231 TO 243: sety = 232
- CASE 279 TO 293: IF setx = 350 AND Knopf% = 1 THEN restart = TRUE
- CASE 307 TO 321:
- IF setx = 350 AND Knopf% = 1 THEN
- END
- END IF
- CASE 251 TO 265: sety = 260
- CASE ELSE:
- END SELECT
- END SUB
-