programSnow;
uses
Windows, Messages;
const
SnowNumber = 500; // 雪点数量-1
type
SnowNode = record
Point: TPoint;// 雪点位置
Color: Integer; // 先前颜色
Speed: Integer; // 下落速率
nMove: Integer; // 下落距离
Stick: Integer; // '粘连'度
end;
var
SnowNodes: array[0..SnowNumber] of SnowNode; // 雪点数组
hTimer: Integer; // '随机风向'时钟句柄
CrWind: Integer; // 当前'风向' ( -1 ~ 1 )
CrStep: Integer; // 当前循环步数(用于限速)
ScreenWidth, ScreenHeight: Integer; // 屏幕尺寸
// 取屏幕尺寸 -> ScreenWidth, ScreenHeight
procedure GetScreenSize;
begin
ScreenWidth := GetSystemMetrics(SM_CXSCREEN);
ScreenHeight := GetSystemMetrics(SM_CYSCREEN);
end;
// '随机风向'时钟
procedure TimerProc(hWnd: HWND; uMsg: UINT; idEvent: UINT; dwTime: DWORD);
stdcall;
begin
SetTimer(0, hTimer, (Random(27)+4) * 500, @TimerProc); // 重设下次风向改变时间
if (CrWind <> 0) then CrWind := 0 else CrWind := Random(3) - 1; // 修改风向
end;
// 初始化雪点数组
procedure InitSnowNodes;
var
hScreenDc, J: Integer;