MarcFriedenberg.com

A drawing program which can also rotate your pictures (QBASIC)

SCREEN 13
CLS
DIM a(320, 100) AS INTEGER
DIM b(320, 101 TO 180) AS INTEGER
x = 160
y = 90
p = 1
col = 15
LOCATE 24, 1
PRINT "Pen", "Color: "; : COLOR col: PRINT col;
LINE (0, 0)-(319, 180), , B

10
SELECT CASE INKEY$
        CASE " "
                END
        CASE "w"
                y = y - 1: d = 1
        CASE "z"
                y = y + 1: d = 2
        CASE "a"
                x = x - 1: d = 3
        CASE "s"
                x = x + 1: d = 4
        CASE "p"
                IF p = 1 THEN
                p = 0
                LOCATE 24, 1
                PRINT "Eraser", "Color: N/A";
                ELSE
                p = 1
                LOCATE 24, 1
                PRINT "Pen    ", "Color: "; : COLOR col: PRINT col;
                END IF

        CASE "f"
               GOSUB 1000
        CASE "1"
                col = 1: GOTO 101
        CASE "2"
                col = 2: GOTO 101
        CASE "3"
                col = 3: GOTO 101
        CASE "5"
                col = 5: GOTO 101
        CASE "6"
                col = 6: GOTO 101
        CASE "7"
                col = 7: GOTO 101
        CASE "8"
                col = 8: GOTO 101
        CASE "9"
                col = 9: GOTO 101
        CASE "0"
                col = 10: GOTO 101
END SELECT

101 IF p = 1 THEN
LOCATE 24, 1
PRINT "Pen    ", "Color: "; : COLOR col: PRINT col;
END IF

IF p = 1 THEN
PSET (x, y), col
PSET (320 - x, 179 - y), col
ELSE
PSET (x, y), 4
IF d = 1 AND POINT(x, y + 1) = 4 THEN PSET (x, y + 1), 0
IF d = 2 AND POINT(x, y - 1) = 4 THEN PSET (x, y - 1), 0
IF d = 3 AND POINT(x + 1, y) = 4 THEN PSET (x + 1, y), 0
IF d = 4 AND POINT(x - 1, y) = 4 THEN PSET (x - 1, y), 0
END IF
GOTO 10

1000
'Read 1 to 100
FOR y = 0 TO 100
FOR x = 0 TO 319
a(x, y) = POINT(x, y)
NEXT
NEXT

'Read 101 to 180
FOR y = 101 TO 180
FOR x = 0 TO 319
b(x, y) = POINT(x, y)
NEXT
NEXT

'Print 1 to 100
FOR y = 0 TO 100
FOR x = 0 TO 319
PSET (319 - x, 180 - y), a(x, y)
NEXT
NEXT

'Print 101 to 180
FOR y = 101 TO 180
FOR x = 0 TO 319
PSET (319 - x, 180 - y), b(x, y)
NEXT
NEXT