回 帖 发 新 帖 刷新版面

主题:[讨论]大家看一下怎么往这个程序里添特效啊!!!!!!!!!!!!!

[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

回复列表 (共3个回复)

沙发

还有 一个程序
Softwares
Villar
CONST Particles = 2000
DECLARE SUB PAL (Col%, R%, G%, B%)
DEFINT A-Z
RANDOMIZE TIMER
TYPE particle
x AS SINGLE
y AS SINGLE
   dx AS SINGLE
   dy AS SINGLE
END TYPE
DIM Water(1 TO Particles) AS particle
FOR I = 1 TO Particles
   Water(I).x = RND * 70
   Water(I).y = RND * 149
   Water(I).dx = RND + .5
   Water(I).dy = RND
NEXT

REM $STATIC
DIM Buffer(5474)
Buffer(0) = 576 'Width
Buffer(1) = 152 'Height
DEF SEG = VARSEG(Buffer(0))
FOR P = 4 TO 10947
   POKE P, 4
NEXT

SCREEN 13
FOR I = 0 TO 63
   PAL I, I \ 2, I * 2 \ 3, I
   PAL I + 64, I \ 3 + 31, (I \ 3 + 41), 63
NEXT
FOR I = 1 TO 48
   LINE (0, I + 100)-(319, I + 100), I
NEXT

FOR I = -1 TO 7
   PSET (I * 54 - 10, 141), 40: DRAW "c15bd5u3rd4r2u4rd4r2u4rnd3be2bd3ddfu4r3d4nl3ru4be2brd2nld3fnru4nru2br3bd3ddfnr3u4r3ddnl2rube2bubd2d4ru4r2flbe3bd2rnr2d4ru6gerbr2bd3ddfu4r3d4nl3ru4be2d6ru6br2d6ru6br2"
   PSET (I * 54 - 11, 140), 40: DRAW "c127bd5u3rd4r2u4rd4r2u4rnd3be2bd3ddfu4r3d4nl3ru4be2brd2nld3fnru4nru2br3bd3ddfnr3u4r3ddnl2rube2bubd2d4ru4r2flbe3bd2rnr2d4ru6gerbr2bd3ddfu4r3d4nl3ru4be2d6ru6br2d6ru6br2"
NEXT
LINE (70, 24)-STEP(73, 153), 32, B
LINE (71, 25)-STEP(71, 151), 4, B

DIM Quot(635), Quot2(151), Prod(151)
DIM Rand(1000)
FOR I = 0 TO 635
   Quot(I) = I / 5.4
NEXT
FOR I = 0 TO 151
   Quot2(I) = (150 - I) / 150 * 118 + 3
   Prod(I) = I * 72 + 77
NEXT
FOR I = 0 TO 1000
   Rand(I) = RND * 5
NEXT

StartTime! = TIMER
DO
   FOR I = 1 TO Particles
      Col = Quot2(Water(I).y) + Rand(Frames MOD 1001)       
      POKE Water(I).x + INT(Water(I).y) * 72 + 77, Col      
      Water(I).x = Water(I).x + Water(I).dx
      Water(I).y = Water(I).y + Water(I).dy
      Water(I).dy = Water(I).dy + RND * .35
      IF Water(I).y > 149 OR Water(I).x > 69 THEN
         Water(I).x = RND * 5 + 5
         Water(I).y = RND * 5 + 5
         Water(I).dx = RND + .5
         Water(I).dy = RND / 10
      END IF
   NEXT
   FOR P = 76 TO 10875
      Pixel = Quot(PEEK(P) + PEEK(P + 1) + PEEK(P - 1) + PEEK(P + 72) + PEEK(P - 72))
      POKE P, Pixel
   NEXT
PUT (71, 25), Buffer, PSET
Frames = Frames + 1
LOOP UNTIL LEN(INKEY$)
EndTime! = TIMER

SCREEN 0
WIDTH 80
Time! = EndTime! - StartTime!
PRINT Time!; " sec"
PRINT Frames / Time!; " fps"

SUB PAL (Col, R, G, B)
   OUT &H3C8, Col
   OUT &H3C9, R
   OUT &H3C9, G
   OUT &H3C9, B
END SUB

板凳

大家 帮帮 忙  啊 !!!!!!!!!!!!!

3 楼

第一个 下雪 略现呆板,雪花只会笔直的(匀速)往下掉,两种速度的雪花相间而落。
第二个 流水 活灵活现,不愧是粒子系统的杰作。

我来回复

您尚未登录,请登录后再回复。点此登录或注册