DECLARE SUB Logo2 ()
DECLARE SUB Arena ()
'Catch the Kreis
'by Dregen Rocks
'copyright 2001
'Version 0.8

DECLARE SUB Logo ()
DECLARE SUB Ginit ()

CLS
SCREEN 13
DIM SHARED symbol(0 TO 100, 0 TO 1) AS INTEGER
DIM SHARED x, y, x2, y2 AS INTEGER

DIM SHARED pacman(0 TO 500, 1 TO 2) AS INTEGER
DIM SHARED pixelpark(1500) AS INTEGER

DIM SHARED letter(0 TO 200, 1 TO 15)
DIM SHARED posx(1 TO 15)
DIM SHARED posy(1 TO 15)
DIM SHARED posd(1 TO 15)

Ginit
Logo
Logo2
Arena

x = 2
y = 2
x2 = 211
y2 = 189

DO

PUT (x, y), symbol(0, 0)
PUT (x2, y2), symbol(0, 1)

ptime! = TIMER: WHILE ptime! = TIMER: WEND

eing$ = INKEY$
SELECT CASE eing$
    CASE IS = CHR$(0) + CHR$(80)
        IF y + 11 < 200 THEN
            LINE (x, y)-(x + 8, y + 8), 0, BF
            y = y + 11 'runter
        END IF
    CASE IS = CHR$(0) + CHR$(77)
        IF x + 11 < 320 THEN
            LINE (x, y)-(x + 8, y + 8), 0, BF
            x = x + 11 'rechts
        END IF
    CASE IS = CHR$(0) + CHR$(72)
        IF y - 11 > 0 THEN
            LINE (x, y)-(x + 8, y + 8), 0, BF
            y = y - 11 'hoch
        END IF
    CASE IS = CHR$(0) + CHR$(75)
        IF x - 11 > 0 THEN
            LINE (x, y)-(x + 8, y + 8), 0, BF
            x = x - 11 'links
        END IF
END SELECT

IF bremse = 3 THEN
    gmove = INT(RND * 4)

    SELECT CASE gmove
        CASE IS = 0
            IF y2 + 11 < 200 THEN
                LINE (x2, y2)-(x2 + 8, y2 + 8), 0, BF
                y2 = y2 + 11 'runter
            END IF
        CASE IS = 1
            IF x2 + 11 < 320 THEN
                LINE (x2, y2)-(x2 + 8, y2 + 8), 0, BF
                x2 = x2 + 11 'rechts
            END IF
        CASE IS = 2
            IF y2 - 11 > 0 THEN
                LINE (x2, y2)-(x2 + 8, y2 + 8), 0, BF
                y2 = y2 - 11 'hoch
            END IF
        CASE IS = 3
            IF x2 - 11 > 0 THEN
                LINE (x2, y2)-(x2 + 8, y2 + 8), 0, BF
                x2 = x2 - 11 'links
            END IF
    END SELECT
    bremse = 0
END IF

bremse = bremse + 1
LOOP UNTIL x = x2 AND y = y2

CLS

DO
FOR c = 32 TO 60
    LOCATE 1, 1
    COLOR c
    PRINT "Du hast gewonnen !!!"
    FOR p = 1 TO 20000
    NEXT p
NEXT c
LOOP UNTIL INKEY$ = CHR$(27)



Testsymbol:
DATA 14,0,0,0,0,0,0,14
DATA 0,14,0,0,0,0,14,0
DATA 0,0,14,0,0,14,0,0
DATA 0,0,0,14,14,0,0,0
DATA 0,0,0,14,14,0,0,0
DATA 0,0,14,0,0,14,0,0
DATA 0,14,0,0,0,0,14,0
DATA 14,0,0,0,0,0,0,14

Gegner:
DATA 0,0,4,4,4,4,0,0
DATA 0,4,0,0,0,0,4,0
DATA 4,0,0,0,0,0,0,4
DATA 4,0,0,0,0,0,0,4
DATA 4,0,0,0,0,0,0,4
DATA 4,0,0,0,0,0,0,4
DATA 0,4,0,0,0,0,4,0
DATA 0,0,4,4,4,4,0,0

pacman1:
DATA 0,0,0,0,14,14,0,0,0,0
DATA 0,0,14,14,14,14,14,14,0,0
DATA 0,14,14,14,14,14,14,14,14,0
DATA 0,14,14,14,14,14,15,14,14,0
DATA 14,14,14,14,14,15,1,15,14,14
DATA 14,14,14,14,14,14,15,14,14,14
DATA 14,14,14,14,14,14,14,14,14,14
DATA 14,14,14,14,14,14,14,14,14,14
DATA 0,14,14,14,14,14,14,14,14,0
DATA 0,14,14,14,14,14,14,14,14,0
DATA 0,0,14,14,14,14,14,14,0,0
DATA 0,0,0,14,14,14,14,0,0,0
DATA 0,0,0,0,14,14,0,0,0,0
DATA 0,0,0,0,0,0,0,0,0,0

Pacman2:
DATA 0,0,0,0,14,14,0,0,0,0
DATA 0,0,14,14,15,14,14,14,0,0
DATA 0,14,14,15,1,15,14,0,0,0
DATA 0,14,14,14,15,14,0,0,0,0
DATA 14,14,14,14,14,0,0,0,0,0
DATA 14,14,14,14,0,0,0,0,0,0
DATA 14,14,14,0,0,0,0,0,0,0
DATA 14,14,14,0,0,0,0,0,0,0
DATA 0,14,14,14,0,0,0,0,0,0
DATA 0,14,14,14,14,14,0,0,0,0
DATA 0,0,14,14,14,14,14,14,14,0
DATA 0,0,0,14,14,14,14,14,0,0
DATA 0,0,0,0,14,14,14,0,0,0
DATA 0,0,0,0,14,14,0,0,0,0

letters:
DATA "C",14,"a",14,"t",14,"c",14,"h",14
DATA " ",0
DATA "t",1,"h",1,"e",1
DATA " ",0
DATA "K",4, "r",4,"e",4,"i",4,"s",4

SUB Arena
CLS

FOR x = 0 TO 320 STEP 11
    LINE (x, 0)-(x, 198), 9
    ptime! = TIMER: WHILE ptime! = TIMER: WEND
NEXT x
FOR y = 0 TO 200 STEP 11
    LINE (0, y)-(319, y), 10
    ptime! = TIMER: WHILE ptime! = TIMER: WEND
NEXT y

END SUB

SUB Ginit
'Symbole einlesen
FOR i% = 0 TO 1
    FOR x = 0 TO 7
        FOR y = 0 TO 7
            READ bit
            PSET (x, y), bit
        NEXT y
    NEXT x
    GET (0, 0)-(7, 7), symbol(0, i%)
    RESTORE Gegner:
NEXT i%

RESTORE pacman1
FOR i1 = 1 TO 2
FOR i2 = 0 TO 13
FOR i3 = 0 TO 9
    READ pixel
    PSET (i3, i2), pixel
NEXT i3
NEXT i2
GET (0, 0)-(11, 11), pacman(0, i1)
NEXT i1

RESTORE letters
FOR i = 1 TO 15
    READ l$
    READ c%
    COLOR c%
    LOCATE 1, 1: PRINT l$
    GET (0, 0)-(7, 7), letter(0, i)
NEXT i

END SUB

SUB Logo

CLS
LOCATE 10, 10
COLOR 15
PRINT "-----------------------"
LOCATE 11, 11
COLOR 4
PRINT "Dregen Rocks presents"
LOCATE 12, 10
COLOR 15
PRINT "-----------------------"

IF INKEY$ = CHR$(27) THEN EXIT SUB
i2 = 50
FOR i1 = 50 TO 260
        GET (i1, i2)-(i1 + 12, i2 + 48), pixelpark
        IF i3 > 6 THEN
            PUT (i1, i2 + 1), pixelpark, PSET
            i3 = i3 + 1
            IF i3 = 13 THEN i3 = 0
        ELSE
            PUT (i1, i2 - 1), pixelpark, PSET
            i3 = i3 + 1
        END IF
        ptime! = TIMER: WHILE ptime! = TIMER: WEND
        IF INKEY$ = CHR$(27) THEN EXIT SUB
NEXT i1
i1 = 40
FOR i2 = 60 TO 110
        GET (i1, i2)-(i1 + 220, i2 + 12), pixelpark
        IF i3 > 6 THEN
            PUT (i1 + 1, i2), pixelpark, PSET
            i3 = i3 + 1
            IF i3 = 13 THEN i3 = 0
        ELSE
            PUT (i1 - 1, i2), pixelpark, PSET
            i3 = i3 + 1
        END IF
        ptime! = TIMER: WHILE ptime! = TIMER: WEND
        IF INKEY$ = CHR$(27) THEN EXIT SUB
NEXT i2

i3 = 0
FOR i1 = 1 TO 3
    FOR i2 = 40 TO 250
        i3 = i3 + 1
        IF i3 = 3 THEN i3 = 1
        PUT (i2, i1 * 8 + 60), pacman(0, i3), PSET
        FOR pause = 1 TO 2
            ptime! = TIMER: WHILE ptime! = TIMER: WEND
        NEXT pause
        PUT (i2, i1 * 8 + 60), pacman(0, i3)
        IF INKEY$ = CHR$(27) THEN EXIT SUB
    NEXT i2
NEXT i1
END


END SUB

SUB Logo2
CLS

VIEW (60, 50)-(260, 150), , 3
y = 46
FOR i1 = 1 TO 15
    PUT (i1 * 8 + 36, y), letter(0, i1)
NEXT i1

COLOR 10
LOCATE 21, 16: PRINT "March 2001"
LOCATE 22, 17: PRINT "Ver. 0.9"
SLEEP
COLOR 11
LOCATE 23, 10: PRINT "Press (Esc) to continue"

posx(1) = 44: posy(1) = 46
posx(2) = 52: posy(2) = 46
posx(3) = 60: posy(3) = 46
posx(4) = 68: posy(4) = 46
posx(5) = 76: posy(5) = 46
posx(7) = 92: posy(7) = 46
posx(8) = 100: posy(8) = 46
posx(9) = 108: posy(9) = 46
posx(11) = 124: posy(11) = 46
posx(12) = 132: posy(12) = 46
posx(13) = 140: posy(13) = 46
posx(14) = 148: posy(14) = 46
posx(15) = 156: posy(15) = 46

RANDOMIZE TIMER
DO
FOR i1 = 1 TO 20
    IF i1 = 1 THEN
        FOR i3 = 1 TO 15
            posd(i3) = INT(RND * 8) + 1
        NEXT i3
    END IF
FOR i2 = 1 TO 15
    IF i2 = 6 OR i2 = 10 THEN i2 = i2 + 1
    LINE (posx(i2), posy(i2))-(posx(i2) + 8, posy(i2) + 8), 0, BF
    SELECT CASE posd(i2)
        CASE IS = 1
            IF posy(i2) - 1 > 0 THEN
                posy(i2) = posy(i2) - 1
            ELSE
                posd(i2) = INT(RND * 8) + 1
            END IF
        CASE IS = 2
            IF posy(i2) - 1 > 0 AND posx(i2) + 1 < 193 THEN
                posy(i2) = posy(i2) - 1
                posx(i2) = posx(i2) + 1
            ELSE
                posd(i2) = INT(RND * 8) + 1
            END IF
        CASE IS = 3
            IF posx(i2) + 1 < 193 THEN
                posx(i2) = posx(i2) + 1
            ELSE
                posd(i2) = INT(RND * 8) + 1
            END IF
        CASE IS = 4
            IF posy(i2) + 1 < 93 AND posx(i2) + 1 < 193 THEN
                posy(i2) = posy(i2) + 1
                posx(i2) = posx(i2) + 1
            ELSE
                posd(i2) = INT(RND * 8) + 1
            END IF
        CASE IS = 5
            IF posy(i2) + 1 < 93 THEN
                posy(i2) = posy(i2) + 1
            ELSE
                posd(i2) = INT(RND * 8) + 1
            END IF
        CASE IS = 6
            IF posy(i2) + 1 < 93 AND posx(i2) - 1 > 0 THEN
                posy(i2) = posy(i2) + 1
                posx(i2) = posx(i2) - 1
            ELSE
                posd(i2) = INT(RND * 8) + 1
            END IF
        CASE IS = 7
            IF posx(i2) - 1 > 0 THEN
                posx(i2) = posx(i2) - 1
            ELSE
                posd(i2) = INT(RND * 8) + 1
            END IF
        CASE IS = 8
            IF posy(i2) - 1 > 0 AND posx(i2) - 1 > 0 THEN
                posy(i2) = posy(i2) - 1
                posx(i2) = posx(i2) - 1
            ELSE
                posd(i2) = INT(RND * 8) + 1
            END IF
    END SELECT
    PUT (posx(i2), posy(i2)), letter(0, i2), PSET
NEXT i2
ptime! = TIMER: WHILE ptime! = TIMER: WEND
NEXT i1
LOOP UNTIL INKEY$ = CHR$(27)

VIEW

END SUB

