自制Windows的变幻线

Author: 蓝孩子 Date: 2001年 27期

?牐燱indows下的经典荧屏保护程序——变幻线,我想大家必定都不陌生吧。它不仅起到保护爱机屏幕的作用,还给人以美感。这里将它的算法简单地向大家剖析一下,让大家对它的底细有个了解。
  #1?牐犓惴ㄔ恚?
  ?牐犞醒?物理课光学部分的镜面反射大家应该还有印象吧(如图)?(^27020501a^)变幻线的最基本的算法正是光学反射定律。不过它不是用光线反射,而是用光球(更确切说是光点)。打开变幻线屏保预览,仔细观察它的多边形的每一个顶点(盯着一个顶点看),这样会很容易发现它的运动规律就是反射定律。
  ?牐犓惴ㄓ辛耍颐强急嘈闯绦颍巳么蠹腋菀桌斫庖恍┖捅泶锏姆奖悖疚牟捎肣uiCk BASIC 45编写。
  #1?牐犜闯绦颍?
  ?牐燚ECLARE SUB poly(n!, C!)
  ?牐燙ONST num= 40,numofcornet=4,co=12,delay=500
  ?牐牐?num为屏幕上同时存在的Polygon数
  ?牐牐?numofcorner为多边形顶点数
  ?牐牎痗o为所绘多边形的颜色
  ?牐牐?delay为延迟交量,根据机器配置不同可以适当改变
  ?牐燚IM SHARED corner(1 TO num,1 TO numofcorner, 1 TO 2)
  ?牐牐Т娲⒍啾咝味サ惚?
  ?牐燚IM speed(1 TO numoforner,1 TO 2)
  ?牐牐Т娲⒏鞲龆サ阍硕俣缺?
  ?牐燫ANDOMIZE TIMER
  ?牐牐С跏蓟婊淞?
  ?牐燜OR i=1 TO numofcorner
  ?牐牐С跏蓟啾咝味サ惚?
  ?牐燾orner(l,i,1)=INT(RND*640)
  ?牐燾ornerf(l,i,2)=INT(RND* 480)
  ?牐燦EXT i
  ?牐燜OR i= 1 TO numofcorner
  ?牐牐С跏蓟鞲龆サ阍硕俣缺?
  ?牐爏peed(i,l)=INT(RND*5)+3
  ?牐爏peed(i,2)=INT(RND*5)+3
  ?牐燦EXT i
  ?牐燙LS:SCREEN 12'640*480*16色图形模式
  ?牐燜OR i= 2 TO num
  ?牐燜OR j=1 TO numofcorner
  ?牐營F corner(i -1,j,l)+speed(j,l)< 0 OR corner(i -l,j,1)+ speed(j,l)> 639 THEN speed(j,l)=-speed(j,1)
  ?牐燾orner(i,j,1)=corner(i -1,j,1)+ speed(j,l)
  ?牐營F corner(i -1,j,2)+speed(j,2)< 0 OR corner(i -l,j,2)-speed(j.2)> 479 THEN speed(j,2)=-speed(j,2)
  ?牐燾orner(i,j,2)= corner(i -l,j,2)+ speed(j,2)
  ?牐燦EXT j
  ?牐燩oly i,CO
  ?牐燦EXT i
  ?牐爌=numofcorner
  ?牐燚O WHILE INKEY$=””
  ?牐爈astp = p
  ?牐爌=p十1
  ?牐營F P>num THEN p=1
  ?牐爌oly p,0 '擦掉最先一个多边形
  ?牐燜OR i=1 TO numofcorner
  ?牐營F corner(lastp,i,l)+ speed(i,1)<0 OR corner(lastp,i,l)+speed(i,l)>639 THEN speed(i,l)=-speed(i,l)
  ?牐燾orner(p,i,1)=corner(lastp,i,1)+speed(i,l)
  ?牐營F corner(lastp,i,2)+speed(i,2<0 OR corner(lastp,i,2)+ speed(i,2)>479 THEN speed(i,2)=-speed(i,2)
  ?牐燾orner(p,i, 2)=corner(lastp,i,2)+speed(i,2)
  ?牐燦EXT i
  ?牐燩oly P,co'画上最后一个多边形
  ?牐燜OR i=1 TO delay:NEXT i '延迟语句
  ?牐燣OOP
  ?牐燬UB Poly(n,c)
  ?牐燩SET(corner(n,numofcorner,l),corner(n,numofcorner,2))
  ?牐燜OR i=1 TO numofcorner
  ?牐燣INE -(corner(n,i,1),corner(n,i,2)),c
  ?牐燦EXT i
  ?牐燛ND SUB
  ?牐犝庋桓黾虻サ谋浠孟叱绦蚓屯瓿闪恕P巳さ呐笥鸦箍梢宰约杭尤肟刂扑媸奔浔浠丈蛘叨喔霰浠孟咄痹俗鞯幕啤:呛牵┵┳约鹤龅钠聊槐;こ绦蚴遣皇呛芸幔苡谐筛邪。浚?