퍼즐 그림 맞추기

puzzle-game.bas

원래 파일
FLAG/PUZZLE.BAS
날짜
1996-02-10
크기
5,201바이트, 235줄
저장 형식
CP949 텍스트를 UTF-8로 바꿈
웹 버전
퍼즐 그림 맞추기
내려받기
puzzle-game.bas (UTF-8)

설명

청기백기와 같은 SVGAQB 틀 위에 만든 3×3 슬라이딩 퍼즐입니다.
M3.GIF 화면에서 89×123 조각 8개를 BLKGET으로 떼어 내고, 빈 칸은 BOARD.SPR로 찍습니다.

소스

DECLARE SUB putgr (x%, y%, z%)DECLARE SUB start ()DEFINT A-ZDECLARE SUB opening ()DECLARE SUB gifload (GIFFILENAME$)REM $INCLUDE: 'svgaqb10.bi'DIM SHARED GIFPAL AS STRING * 768DIM up$, dn$, lt$, rt$up$ = CHR$(0) + CHR$(72)dn$ = CHR$(0) + CHR$(80)lt$ = CHR$(0) + CHR$(75)rt$ = CHR$(0) + CHR$(77)DIM SHARED gr0(5477)  AS INTEGERDIM SHARED gr1(5477)  AS INTEGERDIM SHARED gr2(5477)  AS INTEGERDIM SHARED gr3(5477)  AS INTEGERDIM SHARED gr4(5477)  AS INTEGERDIM SHARED gr5(5477)  AS INTEGERDIM SHARED gr6(5477)  AS INTEGERDIM SHARED gr7(5477)  AS INTEGERDIM SHARED gr8(5477) AS INTEGERDIM graph(1 TO 3, 1 TO 3) AS INTEGERVMODE = VIDEOMODEGET  RES640  DIM SHARED delay AS LONG  SCREEN 0, 0, 0  start  VMODE = VIDEOMODEGET  RES640DIM x, y, nx, ny AS INTEGERx = 3: y = 3: nx = 3: ny = 3DIM checkcode, gum AS INTEGERDEF SEG = VARSEG(gr0(0))BLOAD "board.spr", VARPTR(gr0(0))DEF SEGa:limi = 15gifload "logo.gif"  WHILE INKEY$ = ""  WENDgifload "m3.GIF "blkget 199, 19, 287, 141, gr1(0)blkget 289, 19, 377, 141, gr2(0)blkget 379, 19, 467, 141, gr3(0)blkget 199, 143, 287, 265, gr4(0)blkget 289, 143, 377, 265, gr5(0)blkget 379, 143, 467, 265, gr6(0)blkget 199, 267, 287, 389, gr7(0)blkget 289, 267, 377, 389, gr8(0)WHILE INKEY$ = ""WENDFOR i = 1 TO 3FOR j = 1 TO 3drwbox 1, 1, 108 + 90 * j, 124 * i - 106, 198 + 90 * j, 18 + 124 * iNEXT j, igraph(1, 1) = 8graph(2, 1) = 3graph(3, 1) = 5graph(1, 2) = 2graph(2, 2) = 1graph(3, 2) = 6graph(1, 3) = 4graph(2, 3) = 7graph(3, 3) = 0FOR i = 1 TO 3FOR j = 1 TO 3putgr j, i, graph(j, i)NEXT j, itimecheck$ = TIME$WHILE checkcode = 0a$ = INKEY$IF a$ = "q" OR a$ = "Q" THENa$ = ""checkcode = 1END IFIF a$ = up$ OR a$ = dn$ OR a$ = lt$ OR a$ = rt$ THEN  IF a$ = up$ AND y <> 3 THEN ny = y + 1  IF a$ = dn$ AND y <> 1 THEN ny = y - 1  IF a$ = rt$ AND x <> 1 THEN nx = x - 1  IF a$ = lt$ AND x <> 3 THEN nx = x + 1  putgr nx, ny, 0  putgr x, y, graph(nx, ny)  graph(x, y) = graph(nx, ny)  graph(nx, ny) = 0  x = nx  y = nyEND IFa$ = ""FOR i = 1 TO 3FOR j = 1 TO 3gum = gum + 1IF graph(j, i) = gum THEN sum = sum + 1NEXT j, iIF sum = 8 THEN checkcode = 3gum = 0: sum = 0GOTO c:IF timecheck$ <> TIME$ THEN limi = limi - 1 IF limi = 0 THEN checkcode = 1 ttt$ = STR$(limi) IF LEN(ttt$) = 1 THEN ttt$ = "0" + ttt$ drwstring 1, 1, 255, ttt$, 28, 370 timecheck$ = TIME$ END IFc:WENDIF checkcode = 3 THENgifload "m3.gif"WHILE INKEY$ = ""WENDEND IFIF checkcode = 1 THENa$ = ""drwstring 1, 1, 255, "You are Failed... Time Over...", 320, 200drwstring 1, 1, 255, "Press AnyKey.......", 320, 220WHILE INKEY$ = ""WENDEND IFcheckcode = 0GOTO a: VIDEOMODESET VMODEDEFSNG A-ZSUB gifload (GIFFILENAME$)            DEFINT A-Z            FOR i = 1 TO 768            MID$(GIFPAL, i, 1) = CHR$(63)            NEXT i            PALSET GIFPAL, 0, 255            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                OK = GIFPUT(1, 0, 0, GIFFILENAME$)                PALSET GIFPAL, 0, 255                IF OK <> 1 THEN                    SOUND 100, 5                END IF            END IFEND SUBSUB putgr (x, y, z)cx = 109 + 90 * xcy = 124 * y - 105IF z = 1 THEN blkput 1, cx, cy, gr1(0)IF z = 2 THEN blkput 1, cx, cy, gr2(0)IF z = 3 THEN blkput 1, cx, cy, gr3(0)IF z = 4 THEN blkput 1, cx, cy, gr4(0)IF z = 5 THEN blkput 1, cx, cy, gr5(0)IF z = 6 THEN blkput 1, cx, cy, gr6(0)IF z = 7 THEN blkput 1, cx, cy, gr7(0)IF z = 8 THEN blkput 1, cx, cy, gr8(0)IF z = 0 THEN blkput 1, cx, cy, gr0(0)END SUBSUB start  IF WHICHVGA = 0 THEN  PRINT "Unknown graphic Card..."  PRINT "Sorry!!!"  STOP  END IF  IF WHICHMEM < 512 THEN  PRINT "Not enough Video Memory."  STOP  END IF  IF WHICHCPU = 286 OR WHICHCPU = 86 THEN  PRINT "This Computer requires 30386 CPU at leat"  STOP  END IF  PRINT "Your CPU is"; WHICHCPU  PRINT "SPEED CHECKING.....Please Wait..."  PRINT "OK.... Press Any key..........."  WHILE INKEY$ = ""  WENDEND SUB