⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 maps.bas

📁 大名鼎鼎的QBasic下的图形库
💻 BAS
字号:
'Future.Library simple map generater and software scrolling
'

'use arrow keys to scroll

DECLARE SUB DrawScreen4 ()
DECLARE SUB DrawScreen2 ()
DECLARE SUB DrawScreen3 ()
DECLARE SUB DrawScreen1 ()
DECLARE SUB Drawstuff ()
DECLARE SUB Drawdonuts ()

REM $INCLUDE: 'future.bi'

RANDOMIZE TIMER

Set320x200'Set 320x200

DIM SHARED Ball%(0 TO 130)
DIM SHARED Ball1%(0 TO 130)
DIM SHARED Ball2%(0 TO 130)
DIM SHARED Ball3%(0 TO 130)

Drawstuff

DIM SHARED X!(150), Y!(150), DX!(150), DY!(150)

FOR I% = 0 TO 150
DX!(I%) = 2 - (RND * 4)
DY!(I%) = 2 - (RND * 4)
X!(I%) = 160
Y!(I%) = 100
NEXT

Future.MouseOn

T! = TIMER

handle% = AllExpMem(256000)'get 256000 of EMS memory

Future.CLS 0
DrawScreen1
offsetX% = 0: offsetY% = 0
Future.EMSGet offsetX% + 0, offsetY% + 0, offsetX% + 639, offsetY% + 399, handle%
Future.CLS 0
DrawScreen2
offsetX% = -320: offsetY% = 0
Future.EMSGet offsetX% + 0, offsetY% + 0, offsetX% + 639, offsetY% + 399, handle%
Future.CLS 0
DrawScreen3
offsetX% = 0: offsetY% = -200
Future.EMSGet offsetX% + 0, offsetY% + 0, offsetX% + 639, offsetY% + 399, handle%
Future.CLS 0
DrawScreen4
offsetX% = -320: offsetY% = -200
Future.EMSGet offsetX% + 0, offsetY% + 0, offsetX% + 639, offsetY% + 399, handle%

posY% = -100
posX% = -160
Future.EMSPut posX%, posY%, handle%'redraw map


T! = TIMER
DO

P% = P% XOR 1
SetPage P%

SELECT CASE GetKey%
CASE 72
posY% = posY% + 2: IF posY% >= 0 THEN posY% = 0
CASE 80
posY% = posY% - 2: IF posY% <= -200 THEN posY% = -200
CASE 75
posX% = posX% + 2: IF posX% >= 0 THEN posX% = 0
CASE 77
posX% = posX% - 2: IF posX% <= -320 THEN posX% = -320
END SELECT

Future.EMSPut posX%, posY%, handle%'redraw map

SetMaskColor 0
Drawdonuts
SetMaskColor -1

ViewPage P%

LOOP UNTIL INKEY$ = CHR$(27)

DeallExpMem handle%  'free EMS memory
ReSetScreen

SUB Drawdonuts

FOR I% = 0 TO 15
X!(I%) = X!(I%) + DX!(I%)
IF X!(I%) > 320 THEN X!(I%) = -16
IF X!(I%) < -16 THEN X!(I%) = 320
Y!(I%) = Y!(I%) + DY!(I%)
IF Y!(I%) > 200 THEN Y!(I%) = -16
IF Y!(I%) < -16 THEN Y!(I%) = 200
Future.PUT INT(X!(I%)), INT(Y!(I%)), Ball%()
NEXT
FOR I% = 16 TO 31
X!(I%) = X!(I%) + DX!(I%)
IF X!(I%) > 320 THEN X!(I%) = -16
IF X!(I%) < -16 THEN X!(I%) = 320
Y!(I%) = Y!(I%) + DY!(I%)
IF Y!(I%) > 200 THEN Y!(I%) = -16
IF Y!(I%) < -16 THEN Y!(I%) = 200
Future.PUT INT(X!(I%)), INT(Y!(I%)), Ball1%()
NEXT

FOR I% = 32 TO 47
X!(I%) = X!(I%) + DX!(I%)
IF X!(I%) > 320 THEN X!(I%) = -16
IF X!(I%) < -16 THEN X!(I%) = 320
Y!(I%) = Y!(I%) + DY!(I%)
IF Y!(I%) > 200 THEN Y!(I%) = -16
IF Y!(I%) < -16 THEN Y!(I%) = 200
Future.PUT INT(X!(I%)), INT(Y!(I%)), Ball2%()
NEXT

FOR I% = 48 TO 62
X!(I%) = X!(I%) + DX!(I%)
IF X!(I%) > 320 THEN X!(I%) = -16
IF X!(I%) < -16 THEN X!(I%) = 320
Y!(I%) = Y!(I%) + DY!(I%)
IF Y!(I%) > 200 THEN Y!(I%) = -16
IF Y!(I%) < -16 THEN Y!(I%) = 200
Future.PUT INT(X!(I%)), INT(Y!(I%)), Ball3%()
NEXT

END SUB

SUB DrawScreen1

FOR I% = 0 TO 7
ChangePal 1 + I%, (7 - I%) * 8, 0, 0
NEXT
DIM temp%(130)

FOR I% = 0 TO 7
Future.BOX 7 - I%, 7 - I%, 7 + I%, 7 + I%, I% + 1
NEXT

Future.GET 0, 0, 15, 15, temp%()

FOR Y% = 0 TO 200 STEP 16
    FOR X% = 0 TO 320 STEP 16
       Future.PUT X%, Y%, temp%()
    NEXT
NEXT
END SUB

SUB DrawScreen2

FOR I% = 0 TO 7
ChangePal 1 + I% + 32, 0, (7 - I%) * 8, 0
NEXT

DIM temp%(130)
FOR I% = 0 TO 7
Future.BOX 7 - I%, 7 - I%, 7 + I%, 7 + I%, I% + 1 + 32
NEXT

Future.GET 0, 0, 15, 15, temp%()

FOR Y% = 0 TO 200 STEP 16
    FOR X% = 0 TO 320 STEP 16
        Future.PUT X%, Y%, temp%()
    NEXT
NEXT

END SUB

SUB DrawScreen3

FOR I% = 0 TO 7
ChangePal 1 + I% + 16, 0, 0, (7 - I%) * 8
NEXT

DIM temp%(130)
FOR I% = 0 TO 7
Future.BOX 7 - I%, 7 - I%, 7 + I%, 7 + I%, I% + 1 + 16
NEXT

Future.GET 0, 0, 15, 15, temp%()

FOR Y% = -8 TO 200 STEP 16
    FOR X% = 0 TO 320 STEP 16
        Future.PUT X%, Y%, temp%()
    NEXT
NEXT

END SUB

SUB DrawScreen4

FOR I% = 0 TO 7
ChangePal 1 + I% + 24, (7 - I%) * 8, (7 - I%) * 8, 0
NEXT

DIM temp%(130)
FOR I% = 0 TO 7
Future.BOX 7 - I%, 7 - I%, 7 + I%, 7 + I%, I% + 1 + 24
NEXT

Future.GET 0, 0, 15, 15, temp%()

FOR Y% = -8 TO 200 STEP 16
    FOR X% = 0 TO 320 STEP 16
        Future.PUT X%, Y%, temp%()
    NEXT
NEXT


END SUB

SUB Drawstuff

Future.CLS 0
FOR I% = 1 TO 4
Future.CIRCLE 7, 7, 8 - I%, (I%)
Future.CIRCLE 7, 8, 8 - I%, (I%)
Future.CIRCLE 8, 7, 8 - I%, (I%)
Future.CIRCLE 8, 8, 8 - I%, (I%)
NEXT
Future.GET 0, 0, 15, 15, Ball%()

Future.CLS 0
FOR I% = 1 TO 4
Future.CIRCLE 7, 7, 8 - I%, (I% + 16)
Future.CIRCLE 7, 8, 8 - I%, (I% + 16)
Future.CIRCLE 8, 7, 8 - I%, (I% + 16)
Future.CIRCLE 8, 8, 8 - I%, (I% + 16)
NEXT
Future.GET 0, 0, 15, 15, Ball1%()

Future.CLS 0
FOR I% = 1 TO 4
Future.CIRCLE 7, 7, 8 - I%, (I% + 24)
Future.CIRCLE 7, 8, 8 - I%, (I% + 24)
Future.CIRCLE 8, 7, 8 - I%, (I% + 24)
Future.CIRCLE 8, 8, 8 - I%, (I% + 24)
NEXT
Future.GET 0, 0, 15, 15, Ball2%()

Future.CLS 0
FOR I% = 1 TO 4
Future.CIRCLE 7, 7, 8 - I%, (I% + 32)
Future.CIRCLE 7, 8, 8 - I%, (I% + 32)
Future.CIRCLE 8, 7, 8 - I%, (I% + 32)
Future.CIRCLE 8, 8, 8 - I%, (I% + 32)
NEXT
Future.GET 0, 0, 15, 15, Ball3%()


END SUB

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -