깃발 올린 스프라이트 만들기
flag-sprite-up.bas
설명
깃발 내린 스프라이트 만들기와 같은 일을 C:\FLAG\UPBN.GIF에 합니다.
깃발을 올린 그림이 더 길어서 잘라 내는 영역이 77×175이고 배열도 더 큽니다.
결과는 bu.spr, wu.spr입니다.
소스
DECLARE SUB GIFLOAD (GIFFILENAME$)REM $INCLUDE: 'C:\LAN\QB\PCXLIB\SVGAQB10.BI'DEFINT A-ZDIM SHARED bu(6741) AS INTEGERDIM SHARED wu(6741) AS INTEGERDIM SHARED GIFPAL AS STRING * 768 IF WHICHVGA = 0 THEN STOP IF WHICHMEM < 512 THEN STOP VMODE = VIDEOMODEGET RES640 GIFLOAD "C:\FLAG\upbn.GIF "blkget 416, 43, 492, 217, bu(0)blkget 545, 43, 621, 217, wu(0)DEF SEG = VARSEG(bu(0))BSAVE "bu.spr", VARPTR(bu(0)), 13484DEF SEGDEF SEG = VARSEG(wu(0))BSAVE "wu.spr", VARPTR(wu(0)), 13484DEF SEG WHILE INKEY$ = "" WEND VIDEOMODESET VMODE PRINT "It's demo version of flag game programmed by Jung-Sang-Hyuk"DEFSNG A-ZSUB GIFLOAD (GIFFILENAME$) DEFINT A-Z OK = GIFGETINFO(GIFFILENAME$, XSIZE, YSIZE, NUMCOL, GIFPAL) IF OK = 1 THEN FIXIT = 0 FOR A = 1 TO NUMCOL * 3 STEP 3 R = ASC(MID$(GIFPAL, A, 1)) G = ASC(MID$(GIFPAL, A + 1, 1)) B = ASC(MID$(GIFPAL, A + 2, 1)) IF R > 63 THEN FIXIT = 1 EXIT FOR END IF IF G > 63 THEN FIXIT = 1 EXIT FOR END IF IF B > 63 THEN FIXIT = 1 EXIT FOR END IF NEXT A IF FIXIT = 1 THEN FOR A = 1 TO NUMCOL * 3 C = ASC(MID$(GIFPAL, A, 1)) MID$(GIFPAL, A, 1) = CHR$(C \ 4) NEXT A END IF PALSET GIFPAL, 0, 255 OK = GIFPUT(1, 0, 0, GIFFILENAME$) IF OK <> 1 THEN SOUND 100, 5 END IF END IFEND SUB