主题:[讨论]大家看一下怎么往这个程序里添特效啊!!!!!!!!!!!!!
[em18]
我是一名学生 刚学qb 当然没学好 哪位能 帮 一下 啊 谢谢 了
这 是 原题 老师 让往里面 添 自己的 想法 可我不会 啊 帮帮 忙
DECLARE SUB Tree (X%, Y%, size%)
DECLARE SUB UpdateSnow ()
DECLARE SUB UpdateScroll ()
DECLARE SUB Wipe (Num%)
DECLARE SUB InitMusic ()
DECLARE FUNCTION Rand% (UpperBound%, LowerBound%)
DECLARE FUNCTION IsNum% (A$)
DEFINT A-Z
SCREEN 13
CONST MaxFlakes = 1000
DIM SHARED X(MaxFlakes) AS INTEGER
DIM SHARED Y(MaxFlakes) AS INTEGER
DIM SHARED C(MaxFlakes) AS INTEGER
DIM SHARED T(MaxFlakes) AS INTEGER
DIM SHARED Inc(MaxFlakes) AS INTEGER
DIM SHARED Music$(6) ' stores song
FOR I = 1 TO MaxFlakes
X(I) = RND * 319
Y(I) = RND * -600
C(I) = Rand(27, 31)
Inc(I) = Rand(0, 1)
T(I) = Inc(I)
NEXT I
LOCATE 10, 10
COLOR 90
PRINT " Happy Holidays!"
LOCATE 12, 10
COLOR 103
PRINT " New Year 2001"
LOCATE 14, 6
COLOR 99
PRINT " Best Wishes for Everyone!"
SLEEP 1
CLS
LINE (1, 10)-(319, 10), 100, , &HAAAA
COLOR 15
Tree 40, 140, 3
Tree 279, 140, 3
InitMusic
ON PLAY(1) GOSUB NextNote ' initalize music interrupt
PLAY ON
PLAY "MBP2" ' prime music
DO
UpdateSnow
UpdateScroll
WAIT &H3DA, 8 ' sync with vertical retrace (eliminates flicker)
WAIT &H3DA, 8, 8
LOOP WHILE INKEY$ = ""
PLAY OFF
Wipe Rand(1, 3)
END
NextNote:
I = I MOD 7
IF I = 6 THEN
PLAY "MB" + Music$(I) + "P3"
ELSE
PLAY "MB" + Music$(I)
END IF
I = I + 1
RETURN
SUB InitMusic
Music$(0) = "mbmnt200o3l4cfl8fgfel4dddgl8gagf"
Music$(1) = "l4eccal8ab-agl4fdl8ccl4dgel2f"
Music$(2) = "l4cfffl2el4efedl2cl4cagf"
Music$(3) = "o4l4co3l4cl8ccl4dgel2f"
Music$(4) = "l4cfl8fgfel4dddgl8gagfl4"
Music$(5) = "eccal8ab-ag"
Music$(6) = "l4fdl8ccl4dgel2f"
END SUB
FUNCTION IsNum (A$)
IF ASC(A$) >= 48 AND ASC(A$) <= 57 THEN IsNum = -1
END FUNCTION
FUNCTION Rand (LowerBound, UpperBound)
Rand = INT((UpperBound - LowerBound + 1) * RND + LowerBound)
END FUNCTION
SUB Tree (X, Y, size)
LINE (X - 1 * size, Y + 15 * size)-(X + 1 * size, Y + 21 * size), 6, BF
LINE (X, Y)-(X + 10 * size, Y + 15 * size), 2
LINE (X, Y)-(X - 10 * size, Y + 15 * size), 2
LINE (X - 10 * size, Y + 15 * size)-(X + 10 * size, Y + 15 * size), 2
PAINT (X, Y + 10 * size), 2
FOR Radius = 1 TO 2 * size
CIRCLE (X, Y), Radius, 14
NEXT Radius
RANDOMIZE TIMER
FOR I = 1 TO 11
DO
XX = Rand(X - 10 * size, X + 10 * size) ' pick a random point inside the
YY = Rand(Y + 3 * size, Y + 15 * size) ' tree
Flag = -1
FOR A = XX - 3 TO XX + 3 ' check if ornament can go
FOR B = YY - 4 TO YY + 4
IF POINT(A, B) <> 2 THEN Flag = 0
NEXT B
NEXT A
IF Flag THEN
LINE (XX, YY - 4)-(XX, YY), 8, BF ' draw the ornament
CIRCLE (XX, YY), 2, 4
PAINT (XX, YY), 4
EXIT DO
END IF
LOOP
NEXT I
END SUB
SUB UpdateScroll
STATIC I, N, A() AS INTEGER, Init, S$
IF Init = 0 THEN
er = 4 + INT(((319 - 1) + 1) * (8) + 7) / 8 * 1 * ((9 - 0) + 1)
DIM A(er) AS INTEGER
Init = 1
I = 1
S$ = "\100Best Wishes for you ! "
S$ =S$+"\33T\34h\35i\36s\42 \43P\44r\45o\75g\76r\77a\78m\79 w\80r\81i\82t\83t\84e\85n \93 by\96 ShangJun . "
S$ = S$ + "\55H\56e\57l\58l\59o\60 !\103 Welcome to see Mr."
S$ = S$ + "Shang in Class 8 Grade 3 in Shanxi Chenggu teachers' School ! \89H\90a\91p\92p\93y \94N\95e\96w \97Y\98e\99a\100r \101!"
S$ = S$ + " "
END IF
IF I = LEN(S$) + 1 THEN I = 1
IF N = 8 THEN
LOCATE 1, 40
Q$ = MID$(S$, I, 1)
IF Q$ = "\" THEN ' \/-- parses marquee string
B$ = MID$(S$, I + 1, 3) ' grab color
FOR Z = 1 TO LEN(B$) ' find length of color number
IF NOT (IsNum(MID$(B$, Z, 1))) THEN EXIT FOR
NEXT Z
COLOR VAL(MID$(B$, 1, Z - 1))
I = I + LEN(MID$(B$, 1, Z - 1)) + 1 ' inc string pointer apporpriately
END IF
PRINT MID$(S$, I, 1)
N = 0
I = I + 1
ELSE
GET (1, 0)-(319, 9), A(0) ' this does the smooth scrolling
PUT (0, 0), A(0), PSET
N = N + 1
END IF
END SUB
SUB UpdateSnow
FOR I = 1 TO MaxFlakes
IF T(I) = 0 THEN
IF Y(I) > 10 THEN
LastX = X(I)
LastY = Y(I)
IF POINT(LastX, LastY + 1) = 0 THEN
Y(I) = Y(I) + 1
PSET (LastX, LastY), 0
PSET (X(I), Y(I)), C(I)
ELSE
IF POINT(LastX - 1, LastY) = 0 AND POINT(LastX - 1, LastY + 1) = 0 THEN
IF POINT(LastX + 1, LastY) = 0 AND POINT(LastX + 1, LastY + 1) = 0 THEN
IF RND > .5 THEN
X(I) = X(I) - 1
Y(I) = Y(I) + 1
PSET (LastX, LastY), 0
PSET (X(I), Y(I)), C(I)
ELSE
X(I) = X(I) + 1
Y(I) = Y(I) + 1
PSET (LastX, LastY), 0
PSET (X(I), Y(I)), C(I)
END IF
ELSE
X(I) = X(I) - 1
Y(I) = Y(I) + 1
PSET (LastX, LastY), 0
PSET (X(I), Y(I)), C(I)
END IF
ELSEIF POINT(LastX + 1, LastY) = 0 AND POINT(LastX + 1, LastY + 1) = 0 THEN
X(I) = X(I) + 1
Y(I) = Y(I) + 1
PSET (LastX, LastY), 0
PSET (X(I), Y(I)), C(I)
ELSE
X(I) = RND * 319
Y(I) = RND * -600
C(I) = Rand(27, 31)
Inc(I) = Rand(0, 1)
T(I) = Inc(I)
END IF
END IF
ELSE
Y(I) = Y(I) + 1
END IF
T(I) = Inc(I)
ELSE
T(I) = T(I) - 1
END IF
NEXT I
END SUB
SUB Wipe (Num)
SELECT CASE Num
CASE 1
FOR I = 10 TO 1 STEP -1
FOR X = 0 TO 319
FOR Y = 0 TO 199
IF X MOD I = 0 AND Y MOD I = 0 THEN
PSET (X, Y), 0
END IF
NEXT Y
NEXT X
WAIT &H3DA, 8
WAIT &H3DA, 8, 8
IF INKEY$ <> "" THEN CLS : EXIT FOR
NEXT I
CASE 2
FOR I = 10 TO 1 STEP -1
FOR X = 0 TO 319 STEP I
LINE (X, 0)-(X, 199), 0
NEXT X
WAIT &H3DA, 8
WAIT &H3DA, 8, 8
IF INKEY$ <> "" THEN CLS : EXIT FOR
NEXT I
CASE 3
FOR I = 0 TO 100
LINE (I, 0)-(I, 199), 0
LINE (319 - I, 0)-(319 - I, 199), 0
LINE (0, I)-(319, I), 0
LINE (0, 199 - I)-(319, 199 - I), 0
WAIT &H3DA, 8
WAIT &H3DA, 8, 8
IF INKEY$ <> "" THEN CLS : EXIT FOR
NEXT I
END SELECT
END SUB
我是一名学生 刚学qb 当然没学好 哪位能 帮 一下 啊 谢谢 了
这 是 原题 老师 让往里面 添 自己的 想法 可我不会 啊 帮帮 忙
DECLARE SUB Tree (X%, Y%, size%)
DECLARE SUB UpdateSnow ()
DECLARE SUB UpdateScroll ()
DECLARE SUB Wipe (Num%)
DECLARE SUB InitMusic ()
DECLARE FUNCTION Rand% (UpperBound%, LowerBound%)
DECLARE FUNCTION IsNum% (A$)
DEFINT A-Z
SCREEN 13
CONST MaxFlakes = 1000
DIM SHARED X(MaxFlakes) AS INTEGER
DIM SHARED Y(MaxFlakes) AS INTEGER
DIM SHARED C(MaxFlakes) AS INTEGER
DIM SHARED T(MaxFlakes) AS INTEGER
DIM SHARED Inc(MaxFlakes) AS INTEGER
DIM SHARED Music$(6) ' stores song
FOR I = 1 TO MaxFlakes
X(I) = RND * 319
Y(I) = RND * -600
C(I) = Rand(27, 31)
Inc(I) = Rand(0, 1)
T(I) = Inc(I)
NEXT I
LOCATE 10, 10
COLOR 90
PRINT " Happy Holidays!"
LOCATE 12, 10
COLOR 103
PRINT " New Year 2001"
LOCATE 14, 6
COLOR 99
PRINT " Best Wishes for Everyone!"
SLEEP 1
CLS
LINE (1, 10)-(319, 10), 100, , &HAAAA
COLOR 15
Tree 40, 140, 3
Tree 279, 140, 3
InitMusic
ON PLAY(1) GOSUB NextNote ' initalize music interrupt
PLAY ON
PLAY "MBP2" ' prime music
DO
UpdateSnow
UpdateScroll
WAIT &H3DA, 8 ' sync with vertical retrace (eliminates flicker)
WAIT &H3DA, 8, 8
LOOP WHILE INKEY$ = ""
PLAY OFF
Wipe Rand(1, 3)
END
NextNote:
I = I MOD 7
IF I = 6 THEN
PLAY "MB" + Music$(I) + "P3"
ELSE
PLAY "MB" + Music$(I)
END IF
I = I + 1
RETURN
SUB InitMusic
Music$(0) = "mbmnt200o3l4cfl8fgfel4dddgl8gagf"
Music$(1) = "l4eccal8ab-agl4fdl8ccl4dgel2f"
Music$(2) = "l4cfffl2el4efedl2cl4cagf"
Music$(3) = "o4l4co3l4cl8ccl4dgel2f"
Music$(4) = "l4cfl8fgfel4dddgl8gagfl4"
Music$(5) = "eccal8ab-ag"
Music$(6) = "l4fdl8ccl4dgel2f"
END SUB
FUNCTION IsNum (A$)
IF ASC(A$) >= 48 AND ASC(A$) <= 57 THEN IsNum = -1
END FUNCTION
FUNCTION Rand (LowerBound, UpperBound)
Rand = INT((UpperBound - LowerBound + 1) * RND + LowerBound)
END FUNCTION
SUB Tree (X, Y, size)
LINE (X - 1 * size, Y + 15 * size)-(X + 1 * size, Y + 21 * size), 6, BF
LINE (X, Y)-(X + 10 * size, Y + 15 * size), 2
LINE (X, Y)-(X - 10 * size, Y + 15 * size), 2
LINE (X - 10 * size, Y + 15 * size)-(X + 10 * size, Y + 15 * size), 2
PAINT (X, Y + 10 * size), 2
FOR Radius = 1 TO 2 * size
CIRCLE (X, Y), Radius, 14
NEXT Radius
RANDOMIZE TIMER
FOR I = 1 TO 11
DO
XX = Rand(X - 10 * size, X + 10 * size) ' pick a random point inside the
YY = Rand(Y + 3 * size, Y + 15 * size) ' tree
Flag = -1
FOR A = XX - 3 TO XX + 3 ' check if ornament can go
FOR B = YY - 4 TO YY + 4
IF POINT(A, B) <> 2 THEN Flag = 0
NEXT B
NEXT A
IF Flag THEN
LINE (XX, YY - 4)-(XX, YY), 8, BF ' draw the ornament
CIRCLE (XX, YY), 2, 4
PAINT (XX, YY), 4
EXIT DO
END IF
LOOP
NEXT I
END SUB
SUB UpdateScroll
STATIC I, N, A() AS INTEGER, Init, S$
IF Init = 0 THEN
er = 4 + INT(((319 - 1) + 1) * (8) + 7) / 8 * 1 * ((9 - 0) + 1)
DIM A(er) AS INTEGER
Init = 1
I = 1
S$ = "\100Best Wishes for you ! "
S$ =S$+"\33T\34h\35i\36s\42 \43P\44r\45o\75g\76r\77a\78m\79 w\80r\81i\82t\83t\84e\85n \93 by\96 ShangJun . "
S$ = S$ + "\55H\56e\57l\58l\59o\60 !\103 Welcome to see Mr."
S$ = S$ + "Shang in Class 8 Grade 3 in Shanxi Chenggu teachers' School ! \89H\90a\91p\92p\93y \94N\95e\96w \97Y\98e\99a\100r \101!"
S$ = S$ + " "
END IF
IF I = LEN(S$) + 1 THEN I = 1
IF N = 8 THEN
LOCATE 1, 40
Q$ = MID$(S$, I, 1)
IF Q$ = "\" THEN ' \/-- parses marquee string
B$ = MID$(S$, I + 1, 3) ' grab color
FOR Z = 1 TO LEN(B$) ' find length of color number
IF NOT (IsNum(MID$(B$, Z, 1))) THEN EXIT FOR
NEXT Z
COLOR VAL(MID$(B$, 1, Z - 1))
I = I + LEN(MID$(B$, 1, Z - 1)) + 1 ' inc string pointer apporpriately
END IF
PRINT MID$(S$, I, 1)
N = 0
I = I + 1
ELSE
GET (1, 0)-(319, 9), A(0) ' this does the smooth scrolling
PUT (0, 0), A(0), PSET
N = N + 1
END IF
END SUB
SUB UpdateSnow
FOR I = 1 TO MaxFlakes
IF T(I) = 0 THEN
IF Y(I) > 10 THEN
LastX = X(I)
LastY = Y(I)
IF POINT(LastX, LastY + 1) = 0 THEN
Y(I) = Y(I) + 1
PSET (LastX, LastY), 0
PSET (X(I), Y(I)), C(I)
ELSE
IF POINT(LastX - 1, LastY) = 0 AND POINT(LastX - 1, LastY + 1) = 0 THEN
IF POINT(LastX + 1, LastY) = 0 AND POINT(LastX + 1, LastY + 1) = 0 THEN
IF RND > .5 THEN
X(I) = X(I) - 1
Y(I) = Y(I) + 1
PSET (LastX, LastY), 0
PSET (X(I), Y(I)), C(I)
ELSE
X(I) = X(I) + 1
Y(I) = Y(I) + 1
PSET (LastX, LastY), 0
PSET (X(I), Y(I)), C(I)
END IF
ELSE
X(I) = X(I) - 1
Y(I) = Y(I) + 1
PSET (LastX, LastY), 0
PSET (X(I), Y(I)), C(I)
END IF
ELSEIF POINT(LastX + 1, LastY) = 0 AND POINT(LastX + 1, LastY + 1) = 0 THEN
X(I) = X(I) + 1
Y(I) = Y(I) + 1
PSET (LastX, LastY), 0
PSET (X(I), Y(I)), C(I)
ELSE
X(I) = RND * 319
Y(I) = RND * -600
C(I) = Rand(27, 31)
Inc(I) = Rand(0, 1)
T(I) = Inc(I)
END IF
END IF
ELSE
Y(I) = Y(I) + 1
END IF
T(I) = Inc(I)
ELSE
T(I) = T(I) - 1
END IF
NEXT I
END SUB
SUB Wipe (Num)
SELECT CASE Num
CASE 1
FOR I = 10 TO 1 STEP -1
FOR X = 0 TO 319
FOR Y = 0 TO 199
IF X MOD I = 0 AND Y MOD I = 0 THEN
PSET (X, Y), 0
END IF
NEXT Y
NEXT X
WAIT &H3DA, 8
WAIT &H3DA, 8, 8
IF INKEY$ <> "" THEN CLS : EXIT FOR
NEXT I
CASE 2
FOR I = 10 TO 1 STEP -1
FOR X = 0 TO 319 STEP I
LINE (X, 0)-(X, 199), 0
NEXT X
WAIT &H3DA, 8
WAIT &H3DA, 8, 8
IF INKEY$ <> "" THEN CLS : EXIT FOR
NEXT I
CASE 3
FOR I = 0 TO 100
LINE (I, 0)-(I, 199), 0
LINE (319 - I, 0)-(319 - I, 199), 0
LINE (0, I)-(319, I), 0
LINE (0, 199 - I)-(319, 199 - I), 0
WAIT &H3DA, 8
WAIT &H3DA, 8, 8
IF INKEY$ <> "" THEN CLS : EXIT FOR
NEXT I
END SELECT
END SUB