home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Best Objectech Shareware Selections
/
UNTITLED.iso
/
boss
/
grap
/
util
/
021
/
svgamod1.bas
< prev
next >
Wrap
BASIC Source File
|
1993-06-11
|
29KB
|
965 lines
REM $INCLUDE: 'SVGAQB10.BI'
REM $INCLUDE: 'SVGADEMO.BI'
REM $DYNAMIC
SUB DOBLOCK (RET$, MAXX, MAXY)
MYPI! = ATN(1) * 4
'*************************************************************************
'* SET UP THE TITLE
'*************************************************************************
TITLE$ = "DEMO 5: Block functions and Sprites"
PALSET PAL, 0, 255
'*************************************************************************
'* SHOW BLOCK GET (DRAW SOME CIRCLES AND "GET A CHUNK OF THEM")
'*************************************************************************
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "BLKGET (X1,Y1,X2,Y2,GfxBlockArray)"
DRWSTRING 1, 7, 0, A$, 10, 16
Colr = 16
FOR I = 0 TO MAXX \ 2
DRWCIRCLE 1, Colr, MAXX \ 4 + I, MAXY \ 2, MAXY \ 5
Colr = Colr + 2
IF Colr > 255 THEN
Colr = 16
END IF
NEXT I
XINC = MAXX \ 20
YINC = MAXY \ 20
X1 = MAXX \ 2 - XINC
Y1 = MAXY \ 2 - YINC
X2 = MAXX \ 2 + XINC
Y2 = MAXY \ 2 + YINC
DRWBOX 1, 0, X1, Y1, X2, Y2
BLKGET X1, Y1, X2, Y2, GFXBLK(0)
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
EXIT SUB
END IF
'*************************************************************************
'* SHOW BLOCK PUT (PUT THE "CHUNKS" RANDOMLY AROUND THE SCREEN)
'*************************************************************************
A$ = "BLKPUT (Mode,X,Y,GfxBlockArray) "
DRWSTRING 1, 7, 0, A$, 10, 16
XINC = MAXX \ 10
YINC = MAXY \ 10
SETVIEW 0, 32, MAXX, MAXY
FOR I = 0 TO MAXX \ 2
X = (MAXX + XINC) * RND - XINC
Y = (MAXY + YINC) * RND - YINC
BLKPUT 1, X, Y, GFXBLK(0)
NEXT I
GETKEY RET$
SETVIEW 0, 0, MAXX, MAXY
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
EXIT SUB
END IF
'*************************************************************************
'* SHOW SPRITE GET/PUT
'*************************************************************************
FILLSCREEN (0)
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "SPRITEPUT(TranSColr,X,Y,SpriteArray)"
DRWSTRING 1, 7, 0, A$, 10, 16
A$ = "SPRITEGAP(TranSColr,X,Y,SpriteArray,BackGroundArray)"
DRWSTRING 1, 7, 0, A$, 10, 32
SETVIEW 0, 50, MAXX, MAXY
Colr = 16
X1 = 10
X2 = MAXX - 9
Y1 = 35
Y2 = MAXY - 9
I = 0
PALSET PAL, 16, 255
WHILE Y1 + I < Y2 - I
DRWBOX 1, Colr, X1 + I, Y1 + I, X2 - I, Y2 - I
Colr = Colr + 1
IF Colr > 255 THEN
Colr = 16
END IF
I = I + 1
WEND
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
PALSET PAL, 16, 255
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
CNTX = (MAXX \ 2) - 8
CNTY = ((MAXY - 9) \ 2) - 8
J = 0
FOR DEG = 0 TO 360 STEP 2
RAD! = (DEG * MYPI! / 180)
X = CNTX + SIN(RAD!) * MAXY \ 4
Y = CNTY + COS(RAD!) * MAXY \ 4
SPRITEGAP 0, X, Y, SPRITEDATA(J), SPRITEBKGND(0)
SDELAY 3
SPRITEPUT 0, X, Y, SPRITEBKGND(0)
J = J + 130
IF J > 910 THEN
J = 0
END IF
NEXT DEG
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
FILLSCREEN (0)
PALSET PAL, 16, 255
SETVIEW 0, 0, MAXX, MAXY
EXIT SUB
END IF
END SUB
SUB DOCLIP (RET$, MAXX, MAXY)
'*************************************************************************
'* SET UP AND SHOW THE THE TITLE
'*************************************************************************
TITLE$ = "DEMO 2: Clipping capability"
PALSET PAL2, 0, 255
'*************************************************************************
'* SET UP THE WINDOWS
'*************************************************************************
FILLSCREEN (0)
SETVIEW 0, 0, MAXX, MAXY
DRWSTRING 1, 7, 0, TITLE$, 10, 0
A$ = "All primatives automaticlly clip"
DRWSTRING 1, 7, 0, A$, 10, 16
WDTH = (MAXX + 1) / 2.25
SPCINGX = ((MAXX + 1) - WDTH * 2) / 3
HGTH = (MAXY + 1 - 35) / 2.25
SPCINGY = ((MAXY + 1 - 35) - HGTH * 2) / 3
XINC = WDTH * 1.5
YINC = HGTH * 1.5
XSUB = WDTH * .25
YSUB = HGTH * .25
B1X1 = SPCINGX
B1X2 = B1X1 + WDTH
B1Y1 = SPCINGY + 35
B1Y2 = B1Y1 + HGTH
B2X2 = MAXX - SPCINGX
B2X1 = B2X2 - WDTH
B2Y1 = SPCINGY + 35
B2Y2 = B2Y1 + HGTH
B3X2 = MAXX - SPCINGX
B3X1 = B3X2 - WDTH
B3Y2 = MAXY - SPCINGY
B3Y1 = B3Y2 - HGTH
B4X1 = SPCINGX
B4X2 = B4X1 + WDTH
B4Y2 = MAXY - SPCINGY
B4Y1 = B4Y2 - HGTH
DRWBOX 1, 15, B1X1, B1Y1, B1X2, B1Y2
DRWBOX 1, 15, B2X1, B2Y1, B2X2, B2Y2
DRWBOX 1, 15, B3X1, B3Y1, B3X2, B3Y2
DRWBOX 1, 15, B4X1, B4Y1, B4X2, B4Y2
B1X1 = B1X1 + 1
B1Y1 = B1Y1 + 1
B1X2 = B1X2 - 1
B1Y2 = B1Y2 - 1
B2X1 = B2X1 + 1
B2Y1 = B2Y1 + 1
B2X2 = B2X2 - 1
B2Y2 = B2Y2 - 1
B3X1 = B3X1 + 1
B3Y1 = B3Y1 + 1
B3X2 = B3X2 - 1
B3Y2 = B3Y2 - 1
B4X1 = B4X1 + 1
B4Y1 = B4Y1 + 1
B4X2 = B4X2 - 1
B4Y2 = B4Y2 - 1
Colr = 1
'*************************************************************************
'* SHOW THE CLIPPING
'*************************************************************************
FOR I = 0 TO MAXX \ 6
FOR J = 1 TO 4
SELECT CASE J
CASE IS = 1
SETVIEW B1X1, B1Y1, B1X2, B1Y2
FOR K = 0 TO 4
X = B1X1 + RND * XINC - XSUB
Y = B1Y1 + RND * XINC - XSUB
DRWPOINT 1, Colr, X, Y
Colr = Colr + 1
IF Colr > 15 THEN
Colr = 1
END IF
NEXT K
CASE IS = 2
SETVIEW B2X1, B2Y1, B2X2, B2Y2
X1 = B2X1 + RND * XINC - XSUB
Y1 = B2Y1 + RND * XINC - XSUB
X2 = B2X1 + RND * XINC - XSUB
Y2 = B2Y1 + RND * XINC - XSUB
DRWLINE 1, Colr, X1, Y1, X2, Y2
Colr = Colr + 1
IF Colr > 15 THEN
Colr = 1
END IF
CASE IS = 3
SETVIEW B3X1, B3Y1, B3X2, B3Y2
X = B3X1 + RND * XINC - XSUB
Y = B3Y1 + RND * XINC - XSUB
RAD = RND * WDTH \ 2
DRWCIRCLE 1, Colr, X, Y, RAD
Colr = Colr + 1
IF Colr > 15 THEN
Colr = 1
END IF
CASE IS = 4
SETVIEW B4X1, B4Y1, B4X2, B4Y2
X = B4X1 + RND * XINC - XSUB
Y = B4Y1 + RND * XINC - XSUB
RADX = RND * WDTH \ 2
RADY = RND * WDTH \ 2
DRWELLIPSE 1, Colr, X, Y, RADX, RADY
Colr = Colr + 1
IF Colr > 15 THEN
Colr = 1
END IF
END SELECT
NEXT J
NEXT I
SETVIEW 0, 0, MAXX, MAXY
GETKEY RET$
IF (RET$ = "S") OR (RET$ = "Q") THEN
EXIT SUB
END IF
END SUB
SUB DOFILL (RET$, MAXX, MAXY)
'*************************************************************************
'* SET UP THE TITLE
'*************************************************************************
TITLE$ = "DEMO 3: Filling functions"
PALSET PAL, 0, 255
'*************************************************************************
'* SHOW SCREEN FILL
'**************************************