|
DECLARE SUB bl10 ()
DECLARE SUB Steps (name$)
DECLARE SUB SetPALETTE (Slot%, R%, G%, B%)
DECLARE SUB memcopy (fromseg%, fromoffset%, toseg%, tooffset%, bytes%)
DIM SHARED Buffer(319, 199) AS STRING * 1
DIM SHARED Pointer AS STRING * 1
DIM SHARED ImageDataSegment(200) AS STRING * 320
DEFINT A-Z
CLS
PRINT "Напишешь типа что ща будет показ (в моем случае) занавеса. Рекомендую сразу картинки заранее сделать и показывать с ноута, что бы патом ес что их быстро поправить. У меня переменная mass отвечает за показ 1 из 2х вариантов. Ты можешь сделать больше. Картинки представляют собой кадр из ролика. Количество не ограничено(у меня сделано 18)"
DO
LOOP UNTIL INKEY$ <> ""
mass = 1
DIM Pictures$(1 TO 18)
Pictures$(18) = "18.bmp"
IF mass = 1 THEN
Pictures$(1) = "01.bmp"
Pictures$(2) = "02.bmp"
Pictures$(3) = "03.bmp"
Pictures$(4) = "04.bmp"
Pictures$(5) = "05.bmp"
Pictures$(6) = "06.bmp"
Pictures$(7) = "07.bmp"
Pictures$(8) = "08.bmp"
Pictures$(9) = "09.bmp"
Pictures$(10) = "010.bmp"
Pictures$(11) = "011.bmp"
Pictures$(12) = "012.bmp"
Pictures$(13) = "013.bmp"
Pictures$(14) = "014.bmp"
Pictures$(15) = "015.bmp"
Pictures$(16) = "016.bmp"
Pictures$(17) = "017.bmp"
ELSE
Pictures$(1) = "1.bmp"
Pictures$(2) = "2.bmp"
Pictures$(3) = "3.bmp"
Pictures$(4) = "4.bmp"
Pictures$(5) = "5.bmp"
Pictures$(6) = "6.bmp"
Pictures$(7) = "7.bmp"
Pictures$(8) = "8.bmp"
Pictures$(9) = "9.bmp"
Pictures$(10) = "10.bmp"
Pictures$(11) = "11.bmp"
Pictures$(12) = "12.bmp"
Pictures$(13) = "13.bmp"
Pictures$(14) = "14.bmp"
Pictures$(15) = "15.bmp"
Pictures$(16) = "16.bmp"
Pictures$(17) = "17.bmp"
END IF
SCREEN 13
FOR i = 1 TO 18
CALL Steps(Pictures$(i))
CALL bl10
NEXT i
SUB bl10
FOR i# = 1 TO 1000000 / 2: NEXT i#
END SUB
SUB memcopy (fromseg%, fromoffset%, toseg%, tooffset%, bytes%)
asm$ = ""
asm$ = asm$ + CHR$(85)
asm$ = asm$ + CHR$(137) + CHR$(229)
asm$ = asm$ + CHR$(30)
asm$ = asm$ + CHR$(139) + CHR$(70) + CHR$(10)
asm$ = asm$ + CHR$(142) + CHR$(192)
asm$ = asm$ + CHR$(139) + CHR$(70) + CHR$(14)
asm$ = asm$ + CHR$(142) + CHR$(216)
asm$ = asm$ + CHR$(139) + CHR$(118) + CHR$(8)
asm$ = asm$ + CHR$(139) + CHR$(126) + CHR$(12)
asm$ = asm$ + CHR$(139) + CHR$(78) + CHR$(6)
asm$ = asm$ + CHR$(243)
asm$ = asm$ + CHR$(164)
asm$ = asm$ + CHR$(31)
asm$ = asm$ + CHR$(93)
asm$ = asm$ + CHR$(203)
WAIT &H3DA, 8
DEF SEG = VARSEG(asm$)
CALL Absolute(BYVAL fromseg%, BYVAL fromoffset%, BYVAL toseg%, BYVAL tooffset%, BYVAL bytes%, SADD(asm$))
DEF SEG
END SUB
SUB SetPALETTE (Slot, R, G, B)
OUT &H3C8, Slot
OUT &H3C9, R
OUT &H3C9, B
OUT &H3C9, G
END SUB
SUB Steps (name$)
OPEN name$ FOR BINARY AS #1
GET #1, 54, Pointer
FOR Slot% = 0 TO 255
GET #1,, Pointer
B% = INT(ASC(Pointer) / 4)
GET #1,, Pointer
G% = INT(ASC(Pointer) / 4)
GET #1,, Pointer
R% = INT(ASC(Pointer) / 4)
SetPALETTE Slot%, R%, B%, G%
GET #1,, Pointer
NEXT Slot%
FOR y = 199 TO 0 STEP -1
GET #1,, ImageDataSegment(y)
NEXT
CLOSE
memcopy VARSEG(ImageDataSegment(0)), VARPTR(ImageDataSegment(0)), &HA000, 0, &HFA00
'SYSTEM
END SUB
Дата добавления: 2015-09-30; просмотров: 22 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
QBasic. Есептің шарттын қандай фигура арқылы көрсетеміз: | | | Declare sub setpalette (slot%, r%, g%, b%) |