简单的流星雨代码(流星雨代码)
手机怎么制作流星代码
背景颜色径向渐变
css3渐变 gradients
linear gradients 线性渐变:向上下左右,对角方向
radial gradients 径向渐变:由它的中心定义
浏览器支持:-webkit-(谷歌、safari) -moz-(火狐) -o-(欧朋) 注:标准语法必须放在最后!!!!!!!!!!
background: linear-gradient(direction, color-stop1, color-stop2, ...);
//direction: top、left、right、bottom、
对角线:left top、bottom right、……
background: linear-gradient(angle, color-stop1, color-stop2);//使用角度
//angle :-180deg——0deg——180deg
多个颜色节点:
background: -webkit-linear-gradient(red, green, blue); /* Safari 5.1 - 6.0 */ //默认平均分布
background: -webkit-linear-gradient(red 10%, green 85%, blue 90%); //不均匀分布
使用透明度:
background: -webkit-linear-gradient(left, rgba(255,0,0,0), rgba(255,0,0,1)); /* Safari 5.1 - 6.0 */
重复的线性渐变:
background: -webkit-repeating-linear-gradient(red, yellow 10%, green 20%);
css3 径向渐变
background: radial-gradient(center, shape size, start-color, ..., last-color);
//shape 参数定义了形状。它可以是值 circle 或 ellipse。其中,circle 表示圆形,ellipse 表示椭圆形。默认值是 ellipse。
//size 参数定义了渐变的大小。它可以是以下四个值:
closest-side
farthest-side
closest-corner
farthest-corner //默认
重复径向渐变
background:-webkit-repeating-radial-gradient(red, yellow10%, green15%);
css3新单位vw、vh、vmin、vmax的使用详解
1vw vh vmin vmax的含义
都是相对于视窗大小来决定的,单位类似%
视窗viewport是你的浏览器实际显示内容的区域,换句话说是你的不包括工具栏和按钮的网页浏览器。
vw:视窗宽度的百分比(1vw代表视窗宽度的1%)
vh:视窗高度的百分比
vmin:当前vw和vh中较小的一个
vmax:当前vw和vh中较大的一个
2vw、vh与%百分比的区别
1、%是相对于父级元素的大小设定的比率,vw,vh是视窗大小决定的。
2、vw、vh优势在于能够直接获取高度,而使用%在没有设置body的高度的情况下,是无法正确获得可视区域的高度的,所以这是超级棒的。
3,vmin、vmax 用处
做移动页面开发时,如果使用 vw、wh 设置字体大小(比如 5vw),在竖屏和横屏状态下显示的字体大小是不一样的。
由于 vmin 和 vmax 是当前较小的 vw 和 vh 和当前较大的 vw 和 vh。这里就可以用到 vmin 和 vmax。使得文字大小在横竖屏下保持一致。
4,浏览器兼容性
(1)桌面 PC
Chrome:自 26 版起就完美支持(2013年2月)
Firefox:自 19 版起就完美支持(2013年1月)
Safari:自 6.1 版起就完美支持(2013年10月)
Opera:自 15 版起就完美支持(2013年7月)
IE:自 IE10 起(包括 Edge)到现在还只是部分支持(不支持 vmax,同时 vm 代替 vmin)
(2)移动设备
Android:自 4.4 版起就完美支持(2013年12月)
iOS:自 iOS8 版起就完美支持(2014年9月)
justify-content
justify-content用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式。
提示:使用align-content属性对齐交叉轴上的各项(垂直)。
justify-content:flex-start | flex-end | center |space-between | space-around | inital | inherit;
属性值:
flex-start:默认值。项目位于容器的开头。
flex-end:项目位于容器的结尾。
center:项目位于容器的中心。
space-between:项目位于各行之间留有空白的容器内。
space-around:项目位于各行之前、之间、之后都留有空白的容器内。
initial:设置该属性为它的默认值。
inherit:从父元素继承该属性。
align-items:
align-items:属性定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。
align-items:stretch | center | flex-start | flex-end | baseline | initial | inherit;
stretch : 默认值。元素被拉伸以适应容器。子元素会被拉伸到父元素的高度。
center:元素位于容器的中心。
flex-start:元素位于容器的开头。
flex-end:元素位于容器的结尾。
baseline:元素位于容器的基线上。
如弹性盒子元素的行内轴与侧轴为同一条,则该值与"flex-start"等效。其它情况下,该值将与基线对齐。
css基线和行高:
CSS align-content 属性
align-content属性在弹性容器内的各项没有占用交叉轴上所有可用的空间时对齐容器内的各项。
align-content:stretch | center | flex-start | flex-end | space-between | space-around | initial | inherit;
stretch: 默认值。元素被拉伸以适应容器。
各行将会伸展以占用剩余的空间。如果剩余的空间是负数,该值等效于“flex-start”。在其它情况下,剩余空间被所有行平分,以扩大它们的侧轴尺寸。
center:元素位于容器的中心。
flex-start: 元素位于容器的开头。
flex-end:元素位于容器的结尾。
space-between:元素位于各行之间留有空白的容器内。
space-around:元素位于各行之前、之间、之后都留有空白的容器内。
initial:设置该属性为它的默认值。
inherit:从父元素继承该属性。
css align-self属性
align-self属性定义flex子项单独在侧轴(纵轴)方向上的对齐方式。
注意:align-self属性可重写灵活容器的align-items属性。
align-self:auto | stretch | center | flex-start | flex-end | baseline | initial | inherit;
auto: 默认值。元素继承了它的父容器的align-items属性。如果没有父容器则为“stretch”
stretch:元素被拉伸以适应容器。
center:元素位于容器的中心。
flex-start:元素位于容器的开头。
flex-end:元素位于容器的结尾。
baseline:元素位于容器的基线上。
initial:设置该属性为它的默认值。
inherit:从父元素继承该属性。
css animation 动画属性
使用简写属性把animation绑定到一个
元素。
div{
animation:mymove 5s infinite;
-webkit-animation:mymove 5s infinite;
}
animation: name duration timing-function delay iteration-count direction fill-mode play-state;
animation-name:指定要绑定到选择器的关键帧的名称。
animation-duration:动画指定需要多少秒或毫秒完成。
animation-timing-function:设置动画将如何完成一个周期。
linear:动画从头到尾的速度是相同的。
ease:默认。动画以低速开始,然后加快,在结束前变慢。
ease-in:动画以低速开始。
ease-out:动画以低速结束。
ease-in-out:动画以低速开始和结束。
cubic-bezier(n,n,n,n):在cublic-bezier函数中自己的值。可能的值是从0到1的数值。贝兹曲线
animation-delay:设置动画在启动前的延迟间隔。 负值:-2s请注意动画将跳过2秒进入动画周期。
animation-iteration-count :定义动画的播放次数。
n: 一个数字,定义应该播放多少次动画。
infinite:指定动画应该播放无限次(永远);
animation-direction:指定是否应该轮流反向播放动画。
normal:默认值。动画按正常播放。
reverse:动画反向播放。
alternate:动画在奇数次(1、3、5……)正向播放,在偶数次(2、4、6、……)反向播放。
alternate-reverse:动画在奇数次(1、3、5……)反向播放,在偶数次(2、4、6……)正向播放。
initial:设置该属性为它的默认值。
inherit:从父元素继承该属性。
animation-fill-mode:规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。
none:默认值。动画在动画执行之前和之后不会应用任何样式到目标元素。
forwards:在动画结束后(由animation-iteration-count决定),动画将应用该属性值。//动画结束后,将保持最终结束的样式。
backwards:动画将应用在animation-delay定义期间启动动画的第一次迭代的关键帧中定义的属性值。这些都是from关键帧中的值(当animation-direction为“normal”或“alternate”时)或to关键帧中的值
(当 animation-direction为“reverse”或“alternate-reverse”时)。
both:动画遵循forwards和background的规则。也就是说,动画会在两个地方上扩展动画属性。
initial:设置该属性为它的默认值。
inherit:从父元素继承该属性。
animation-play-state:指定动画是否正在运行或已暂停。
animation-play-state: paused | running;
paused:指定暂停动画。
running:指定正在运行的动画。
initial:设置属性为其默认值。
inherit:从父元素继承属性。
css3 transform属性
transform属性应用于元素的2D或3D转换。这个属性允许你将元素旋转、缩放、移动、倾斜等。
transform:none | transform-functions;
none:定义不进行转换。
matrix(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定义3D转换,使用16个值的4*4矩阵。
translate(x,y) 定义2D转换。
translate3d(x,y,z) 定义3D转换。
translateX(x):定义转换,只是用X轴的值。
translateY(y):定义转换,只是用Y轴的值。
translateZ(z):定义3D转换,只是用Z轴的值。
scale(x【,y】?)定义2D缩放转换。
scale3d(x,y,z)定义3d缩放转换。
scaleX(x)通过设置X轴的值来定义缩放转换
………………………………还有很多
css calc()函数
calc()函数用于动态计算长度值。
需要注意的是,运算符前后都需要保留一个空格,例如:width:calc(100% - 10px);
任何长度值都可以使用calc()函数进行计算。
calc()背景颜色径向渐变
css3渐变 gradients
linear gradients 线性渐变:向上下左右,对角方向
radial gradients 径向渐变:由它的中心定义
浏览器支持:-webkit-(谷歌、safari) -moz-(火狐) -o-(欧朋) 注:标准语法必须放在最后!!!!!!!!!!
background: linear-gradient(direction, color-stop1, color-stop2, ...);
//direction: top、left、right、bottom、
对角线:left top、bottom right、……
background: linear-gradient(angle, color-stop1, color-stop2);//使用角度
//angle :-180deg——0deg——180deg
多个颜色节点:
background: -webkit-linear-gradient(red, green, blue); /* Safari 5.1 - 6.0 */ //默认平均分布
background: -webkit-linear-gradient(red 10%, green 85%, blue 90%); //不均匀分布
使用透明度:
background: -webkit-linear-gradient(left, rgba(255,0,0,0), rgba(255,0,0,1)); /* Safari 5.1 - 6.0 */
重复的线性渐变:
background: -webkit-repeating-linear-gradient(red, yellow 10%, green 20%);
css3 径向渐变
background: radial-gradient(center, shape size, start-color, ..., last-color);
//shape 参数定义了形状。它可以是值 circle 或 ellipse。其中,circle 表示圆形,ellipse 表示椭圆形。默认值是 ellipse。
//size 参数定义了渐变的大小。它可以是以下四个值:
closest-side
farthest-side
closest-corner
farthest-corner //默认
重复径向渐变
background:-webkit-repeating-radial-gradient(red, yellow10%, green15%);
css3新单位vw、vh、vmin、vmax的使用详解
1vw vh vmin vmax的含义
都是相对于视窗大小来决定的,单位类似%
视窗viewport是你的浏览器实际显示内容的区域,换句话说是你的不包括工具栏和按钮的网页浏览器。
vw:视窗宽度的百分比(1vw代表视窗宽度的1%)
vh:视窗高度的百分比
vmin:当前vw和vh中较小的一个
vmax:当前vw和vh中较大的一个
2vw、vh与%百分比的区别
1、%是相对于父级元素的大小设定的比率,vw,vh是视窗大小决定的。
2、vw、vh优势在于能够直接获取高度,而使用%在没有设置body的高度的情况下,是无法正确获得可视区域的高度的,所以这是超级棒的。
3,vmin、vmax 用处
做移动页面开发时,如果使用 vw、wh 设置字体大小(比如 5vw),在竖屏和横屏状态下显示的字体大小是不一样的。
由于 vmin 和 vmax 是当前较小的 vw 和 vh 和当前较大的 vw 和 vh。这里就可以用到 vmin 和 vmax。使得文字大小在横竖屏下保持一致。
4,浏览器兼容性
(1)桌面 PC
Chrome:自 26 版起就完美支持(2013年2月)
Firefox:自 19 版起就完美支持(2013年1月)
Safari:自 6.1 版起就完美支持(2013年10月)
Opera:自 15 版起就完美支持(2013年7月)
IE:自 IE10 起(包括 Edge)到现在还只是部分支持(不支持 vmax,同时 vm 代替 vmin)
(2)移动设备
Android:自 4.4 版起就完美支持(2013年12月)
iOS:自 iOS8 版起就完美支持(2014年9月)
justify-content
justify-content用于设置或检索弹性盒子元素在主轴(横轴)方向上的对齐方式。
提示:使用align-content属性对齐交叉轴上的各项(垂直)。
justify-content:flex-start | flex-end | center |space-between | space-around | inital | inherit;
属性值:
flex-start:默认值。项目位于容器的开头。
flex-end:项目位于容器的结尾。
center:项目位于容器的中心。
space-between:项目位于各行之间留有空白的容器内。
space-around:项目位于各行之前、之间、之后都留有空白的容器内。
initial:设置该属性为它的默认值。
inherit:从父元素继承该属性。
align-items:
align-items:属性定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式。
align-items:stretch | center | flex-start | flex-end | baseline | initial | inherit;
stretch : 默认值。元素被拉伸以适应容器。子元素会被拉伸到父元素的高度。
center:元素位于容器的中心。
flex-start:元素位于容器的开头。
flex-end:元素位于容器的结尾。
baseline:元素位于容器的基线上。
如弹性盒子元素的行内轴与侧轴为同一条,则该值与"flex-start"等效。其它情况下,该值将与基线对齐。
css基线和行高:
CSS align-content 属性
align-content属性在弹性容器内的各项没有占用交叉轴上所有可用的空间时对齐容器内的各项。
align-content:stretch | center | flex-start | flex-end | space-between | space-around | initial | inherit;
stretch: 默认值。元素被拉伸以适应容器。
各行将会伸展以占用剩余的空间。如果剩余的空间是负数,该值等效于“flex-start”。在其它情况下,剩余空间被所有行平分,以扩大它们的侧轴尺寸。
center:元素位于容器的中心。
flex-start: 元素位于容器的开头。
flex-end:元素位于容器的结尾。
space-between:元素位于各行之间留有空白的容器内。
space-around:元素位于各行之前、之间、之后都留有空白的容器内。
initial:设置该属性为它的默认值。
inherit:从父元素继承该属性。
css align-self属性
align-self属性定义flex子项单独在侧轴(纵轴)方向上的对齐方式。
注意:align-self属性可重写灵活容器的align-items属性。
align-self:auto | stretch | center | flex-start | flex-end | baseline | initial | inherit;
auto: 默认值。元素继承了它的父容器的align-items属性。如果没有父容器则为“stretch”
stretch:元素被拉伸以适应容器。
center:元素位于容器的中心。
flex-start:元素位于容器的开头。
flex-end:元素位于容器的结尾。
baseline:元素位于容器的基线上。
initial:设置该属性为它的默认值。
inherit:从父元素继承该属性。
css animation 动画属性
使用简写属性把animation绑定到一个
元素。
div{
animation:mymove 5s infinite;
-webkit-animation:mymove 5s infinite;
}
animation: name duration timing-function delay iteration-count direction fill-mode play-state;
animation-name:指定要绑定到选择器的关键帧的名称。
animation-duration:动画指定需要多少秒或毫秒完成。
animation-timing-function:设置动画将如何完成一个周期。
linear:动画从头到尾的速度是相同的。
ease:默认。动画以低速开始,然后加快,在结束前变慢。
ease-in:动画以低速开始。
ease-out:动画以低速结束。
ease-in-out:动画以低速开始和结束。
cubic-bezier(n,n,n,n):在cublic-bezier函数中自己的值。可能的值是从0到1的数值。贝兹曲线
animation-delay:设置动画在启动前的延迟间隔。 负值:-2s请注意动画将跳过2秒进入动画周期。
animation-iteration-count :定义动画的播放次数。
n: 一个数字,定义应该播放多少次动画。
infinite:指定动画应该播放无限次(永远);
animation-direction:指定是否应该轮流反向播放动画。
normal:默认值。动画按正常播放。
reverse:动画反向播放。
alternate:动画在奇数次(1、3、5……)正向播放,在偶数次(2、4、6、……)反向播放。
alternate-reverse:动画在奇数次(1、3、5……)反向播放,在偶数次(2、4、6……)正向播放。
initial:设置该属性为它的默认值。
inherit:从父元素继承该属性。
animation-fill-mode:规定当动画不播放时(当动画完成时,或当动画有一个延迟未开始播放时),要应用到元素的样式。
none:默认值。动画在动画执行之前和之后不会应用任何样式到目标元素。
forwards:在动画结束后(由animation-iteration-count决定),动画将应用该属性值。//动画结束后,将保持最终结束的样式。
backwards:动画将应用在animation-delay定义期间启动动画的第一次迭代的关键帧中定义的属性值。这些都是from关键帧中的值(当animation-direction为“normal”或“alternate”时)或to关键帧中的值
(当 animation-direction为“reverse”或“alternate-reverse”时)。
both:动画遵循forwards和background的规则。也就是说,动画会在两个地方上扩展动画属性。
initial:设置该属性为它的默认值。
inherit:从父元素继承该属性。
animation-play-state:指定动画是否正在运行或已暂停。
animation-play-state: paused | running;
paused:指定暂停动画。
running:指定正在运行的动画。
initial:设置属性为其默认值。
inherit:从父元素继承属性。
css3 transform属性
transform属性应用于元素的2D或3D转换。这个属性允许你将元素旋转、缩放、移动、倾斜等。
transform:none | transform-functions;
none:定义不进行转换。
matrix(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定义3D转换,使用16个值的4*4矩阵。
translate(x,y) 定义2D转换。
translate3d(x,y,z) 定义3D转换。
translateX(x):定义转换,只是用X轴的值。
translateY(y):定义转换,只是用Y轴的值。
translateZ(z):定义3D转换,只是用Z轴的值。
scale(x【,y】?)定义2D缩放转换。
scale3d(x,y,z)定义3d缩放转换。
scaleX(x)通过设置X轴的值来定义缩放转换
………………………………还有很多
css calc()函数
calc()函数用于动态计算长度值。
需要注意的是,运算符前后都需要保留一个空格,例如:width:calc(100% - 10px);
任何长度值都可以使用calc()函数进行计算。
calc()函数支持+、-、*、/运算。
calc()函数使用标准的数字运算优先级规则。
calc(expression)expression必须,一个数字表达式,结果将采用运算后的返回值。函数支持+、-、*、/运算。
calc()函数使用标准的数字运算优先级规则。
calc(expression)expression必须,一个数字表达式,结果将采用运算后的返回值。
急!急!急!请哪位高手帮忙注释一个flash动画流星雨特效代码~代码段如下
不容易啊..这年头还能找到AS2的特效代码.我想说我能看懂的就只有AS2了- -
xrandom = new Array();
//x坐标的数组
yrandom = new Array();
//y坐标的数组
salerandom = new Array();
//缩放值的数组
speed = Math.floor(Math.random()*10)+5;
//速度设定为随机值,从5到14
for (_global.i=0; i=19; i++) {
//遍历id,从0到19
xrandom[i] = Math.floor(Math.random()*700);
yrandom[i] = Math.floor(Math.random()*400);
//定义每个mc的坐标为一个随机数,从(0,0)到(699,399)
salerandom[i] = Math.floor(Math.random()*20)+2;
//定义每个mc的缩放值为一个随机数,从2到21
duplicateMovieClip(ball, "ball"+i, i);
//复制实例名为"ball"的mc(该mc在舞台上),新名字为"ball"加上id号,深度为id号的大小.
_root["ball"+i]._x = xrandom[i];
_root["ball"+i]._y = yrandom[i];
//设定新复制出来的mc的坐标为坐标数组内对应id的坐标.
_root["ball"+i]._yscale = salerandom[i];
//设定新复制出来的mc的纵缩放程度为缩放值数组中对应id的值.
_root["ball"+i]._rotation = 20;
//设定新复制出来的mc的旋转角度为20度(顺时针旋转)
_root["ball"+i].onEnterFrame = function() {
//设定新复制出来的mc的载入帧事件处理函数
if (isShow == false) {
//当"isShow"变量为假的时候
this._visible = false;
//隐藏该mc
this.onEnterFrame = null;
//删除该mc的事件处理函数
}
var a = this._rotation;
//变量a为该mc的旋转角度
var rad = a*Math.PI/180;
//变量rad为角度a所对应的弧度(三角函数使用弧度变量而不是角度)
var dx = Math.cos(rad)*speed;
var dy = Math.sin(rad)*speed;
//根据弧度计算该mc的x,y方向上的分速度
this._x += dx;
this._y += dy;
//根据分速度计算下一帧的mc位置
if (this._x=710) {
//如果mc的横坐标达到710
this._x = -Math.floor(Math.random()*300);
this._y = -Math.floor(Math.random()*300);
//重新定义一个新的随机坐标给mc
}
};
}
用C语言编写流星雨程序
数字流星雨代码:
//流星雨.cpp:Defines the entry point for the console application.
//
///////////////////////////////////////////////////
//程序名称:数字流星雨
//最后修改:2006-10-15
///////////////////////////////////////////////////
#includelt;windows.hgt;
#includelt;time.hgt;
#includelt;stdlib.hgt;
#include"graphics.h"
#includelt;conio.hgt;
#includelt;math.hgt;
/***********************宏定义**********************/
#define PI 3.1415926//圆周率
#define WIDTH 200//屏幕宽度,流星出生区域
#define HEIGHT 150//屏幕高度,流星出生区域
#define V 20//流星速度,单次移动的像素数
#define LENGTH 20//流星字符数
#define DELAY 30//延时
#define NUM 45//流星个数
/******************定义流星结构体*******************/
struct meteor
{
int x0;
int y0;
int yh;
char str[LENGTH];
}me[NUM]={0};
/*********************函数声明**********************/
char AsciiRand();
void Move(char*p);
void InitMeteor(struct meteor*me);
int color(int y,int y0,int yh);
void Meteors(struct meteor me[]);
/***********************主函数**********************/
///int main(void)
int _tmain(int argc,_TCHAR*argv[]){
char c='\0';//接收键盘输入的变量
initgraph(WIDTH,HEIGHT);//初始化WIDTH*HEIGHT的绘图窗口
HWND hwnd=GetHWnd();//获得窗口句柄
SetWindowText(hwnd,"Gavin Liu数字流星雨");//修改窗口名称
ShowWindow(hwnd,SW_SHOWMAXIMIZED);//最大化显示窗口
MessageBox(hwnd,TEXT("点击【确定】开始演示流星雨效果,Esc键退出"),TEXT("提示"),MB_OK|MB_ICONWARNING);//弹出提示
srand((unsigned)time(NULL));//设置随机种子
for(int i=0;ilt;NUM;i++){//对NUM个流星体初始化
InitMeteor(melt;igt;);
}
while(c!=27){
BeginBatchDraw();//开始批量绘图
Meteors(me);//绘制一帧动画
FlushBatchDraw();//执行未完成的绘制任务
Sleep(DELAY);//延时
cleardevice();//清屏
for(int i=0;ilt;NUM;i++){
melt;igt;.yh+=V;
Move(melt;igt;.str);
if(melt;igt;.yhgt;HEIGHT+LENGTH*V){
InitMeteor(melt;igt;);
}
}
if(kbhit()){
c=getch();
}
}
EndBatchDraw();//结束批量绘图
closegraph();//结束绘图环境
return 0;
}
/***********************函数体**********************/
char AsciiRand(){//产生随机可见ASCII码
return((char)(rand()%(126-33)+33));
}
void Move(char*p){//字符后移,可以使显示时字符相对屏幕位置不变
char*pt=p+LENGTH;
while(ptgt;p){
*(--pt)=*(pt-1);
}
*p=AsciiRand();
}
void InitMeteor(struct meteor*me){//对一颗流星初始化
me-gt;x0=rand()%WIDTH;
me-gt;yh=me-gt;y0=rand()%HEIGHT;
for(int i=0;ilt;LENGTH;i++)
{
*(me-gt;str+i)=AsciiRand();
}
}
int color(int y,int y0,int yh){//确定流星的颜色
int color;
//出生点之前的流星体置成黑色
if(ylt;y0){
color=0;
}
//流星颜色自头至尾按照余弦函数递减
else{
//尾迹消失
color=(int)(255*cos((yh-y)*PI/(2*LENGTH*V)));
}
return color;
}
//打印一帧流星的画面
void Meteors(struct meteor me[]){
//设置格式:背景透明,字符高度,字体粗细,字体
setbkmode(TRANSPARENT);
setfont(12,12,"宋体");
//开始打印一帧图像
int y;
for(int n=0;nlt;NUM;n++){
for(int j=0;jlt;LENGTH;j++){
//流星中第j个字符的纵坐标
y=me[n].yh-j*V;
//设置颜色,流星的头部是白色的
setcolor(RGB(255*(0==j),color(y,me[n].y0,me[n].yh),255*(0==j)));
//打印字符
outtextxy(me[n].x0,y,me[n].str[j]);
}
}
}
扩展资料:
include用法:
#include命令预处理命令的一种,预处理命令可以将别的源代码内容插入到所指定的位置;可以标识出只有在特定条件下才会被编译的某一段程序代码;可以定义类似标识符功能的宏,在编译时,预处理器会用别的文本取代该宏。
插入头文件的内容
#include命令告诉预处理器将指定头文件的内容插入到预处理器命令的相应位置。有两种方式可以指定插入头文件:
1、#includelt;文件名gt;
2、#include"文件名"
QQ空间流星雨代码
QQ空间留言代码
[B][fts=6][ftc=#37B400]*[/ft]
[B][fts=6][ftc=#37B400]*[/ft]QQ空间留言代码
[B][fts=6][ftc=#37B400]*[/ft]
[M][B][ftc=#EE1000].*★.[/ft]
[B][ftc=#F79700]·*.`★[/ft]
[B][ffg,#FFF100,#FFFFFF]★*[/ft]
[B][ffg,#37B400,#FFFFFF]★.’[/ft]
[B][ftc=#00A99E]‘*..[/ft]QQ空间留言代码
[B][ffg,#438CCB,#FFFFFF]`..[/ft]
QQ空间留言代码[ffg,#EE1000,#FFFFFF]≈;霸占祢啲.嘴°〔.止侑莪蓜).![/ft][M][B][fts=6][ftc=#ED008C]*[/ft][/ft][ftc=#F49BC1]MuMa、[/ft][fts=6][ffg,#FF3399,#FF3399]旭、ノ[/ft][/ft][/B][/M]
QQ空间留言代码
C程序流星雨的源代码?
#include windows.h #define ID_TIMER 1
#define STRMAXLEN 25 //一个显示列的最大长度
#define STRMINLEN 8 //一个显示列的最小长度 LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ;
//////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////
typedef struct tagCharChain //整个当作屏幕的一个显示列,这是个双向列表
{
struct tagCharChain *prev; //链表的前个元素
TCHAR ch; //一个显示列中的一个字符
struct tagCharChain *next; //链表的后个元素
}CharChain, *pCharChain; typedef struct tagCharColumn
{
CharChain *head, *current, *point;
int x, y, iStrLen; //显示列的开始显示的x,y坐标,iStrLen是这个列的长度
int iStopTimes, iMustStopTimes; //已经停滞的次数和必须停滞的次数,必须停滞的次数是随机的
}CharColumn, *pCharColumn; int main(HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
static TCHAR szAppName[] = TEXT ("matrix") ;
HWND hwnd ;
MSG msg ;
WNDCLASS wndclass ; wndclass.style = CS_HREDRAW | CS_VREDRAW ;
wndclass.lpfnWndProc = WndProc ;
wndclass.cbClsExtra = 0 ;
wndclass.cbWndExtra = 0 ;
wndclass.hInstance = hInstance ;
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
wndclass.hCursor = LoadCursor (NULL, IDC_ARROW) ;
wndclass.hbrBackground = (HBRUSH) GetStockObject (BLACK_BRUSH) ;
wndclass.lpszMenuName = NULL ;
wndclass.lpszClassName = szAppName ; if(!RegisterClass (wndclass))
{
MessageBox (NULL, TEXT ("此程序必须运行在NT下!"), szAppName, MB_ICONERROR) ;
return 0;
} hwnd = CreateWindow (szAppName, NULL,
WS_DLGFRAME | WS_THICKFRAME | WS_POPUP,
0, 0,
GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN),
NULL, NULL, hInstance,
NULL) ; ShowWindow (hwnd, SW_SHOWMAXIMIZED) ; //最大化显示
UpdateWindow (hwnd) ;
ShowCursor(FALSE); //隐藏鼠标光标
srand ((int) GetCurrentTime ()) ; //初始化随机数发生器
while (GetMessage (msg, NULL, 0, 0))
{
TranslateMessage (msg) ;
DispatchMessage (msg) ;
}
ShowCursor(TRUE); //显示鼠标光标
return msg.wParam ;
} TCHAR randomChar() //随机字符产生函数
{
return (TCHAR)(rand()%(126-33)+33); //33到126之间
} int init(CharColumn *cc, int cyScreen, int x) //初始化
{
int j;
cc-iStrLen = rand()%(STRMAXLEN-STRMINLEN) + STRMINLEN; //显示列的长度
cc-x = x+3 ; //显示列的开始显示的x坐标
cc-y =rand()%3?rand()%cyScreen:0; //显示列的开始显示的y坐标
cc-iMustStopTimes = rand()%6 ;
cc-iStopTimes = 0 ;
cc-head = cc-current =
(pCharChain)calloc(cc-iStrLen, sizeof(CharChain)); //生成显示列
for(j=0; jcc-iStrLen-1; j++)
{
cc-current-prev = cc-point; //cc-point一个显示列的前个元素
cc-current-ch = '\0';
cc-current-next = cc-current+1; //cc-current+1一个显示列的后个元素
cc-point = cc-current++; //cc-point = cc-current; cc-current++;
}
cc-current-prev = cc-point; //最后一个节点
cc-current-ch = '\0';
cc-current-next = cc-head; cc-head-prev = cc-current; //头节点的前一个为此链的最后一个元素 cc-current = cc-point = cc-head; //free掉申请的内存要用current当参数
cc-head-ch = randomChar(); // 对链表头的 元素填充
return 0;
} LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc ;
//ctn 用来确定一个显示链是否 向下前进,如果等待次数超过必须等待的次数,ctn就代表要向下前进
int i, j, temp, ctn; //j为一个显示链中除链表头外的在屏幕上显示的y坐标,temp绿色过度到黑色之用
static HDC hdcMem;
HFONT hFont;
static HBITMAP hBitmap;
static int cxScreen, cyScreen; //屏幕的宽度 高度.
static int iFontWidth=10, iFontHeight=15, iColumnCount; //字体的宽度 高度, 列数
static CharColumn *ccChain; switch (message)
{
case WM_CREATE:
cxScreen = GetSystemMetrics(SM_CXSCREEN) ; //屏幕宽度
cyScreen = GetSystemMetrics(SM_CYSCREEN) ;
SetTimer (hwnd, ID_TIMER, 10, NULL) ; hdc = GetDC(hwnd);
hdcMem = CreateCompatibleDC(hdc);
hBitmap = CreateCompatibleBitmap(hdc, cxScreen, cyScreen);
SelectObject(hdcMem, hBitmap);
ReleaseDC(hwnd, hdc);
//创建字体
hFont = CreateFont(iFontHeight, iFontWidth-5, 0, 0, FW_BOLD, 0, 0, 0,
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS,
DRAFT_QUALITY, FIXED_PITCH | FF_SWISS, TEXT("Fixedsys"));
SelectObject(hdcMem, hFont);
DeleteObject (hFont) ;
SetBkMode(hdcMem, TRANSPARENT); //设置背景模式为 透明
iColumnCount = cxScreen/(iFontWidth*3/2); //屏幕所显示字母雨的列数 ccChain = (pCharColumn)calloc(iColumnCount, sizeof(CharColumn));
for(i=0; iiColumnCount; i++)
{
init(ccChain+i, cyScreen, (iFontWidth*3/2)*i);
}
return 0 ; case WM_TIMER:
hdc = GetDC(hwnd);
PatBlt (hdcMem, 0, 0, cxScreen, cyScreen, BLACKNESS) ; //将内存设备映像刷成黑色
for(i=0; iiColumnCount; i++)
{
ctn = (ccChain+i)-iStopTimes++ (ccChain+i)-iMustStopTimes;
//
(ccChain+i)-point = (ccChain+i)-head; //point用于遍历整个显示列
//第一个字符显示为 白色
SetTextColor(hdcMem, RGB(255, 255, 255));
TextOut(hdcMem, (ccChain+i)-x, (ccChain+i)-y, ((ccChain+i)-point-ch), 1);
j = (ccChain+i)-y;
(ccChain+i)-point = (ccChain+i)-point-next;
//遍历整个显示列,将这个显示列里的字符从下往上显示
temp = 0 ; //temp绿色过度到黑色之用
while((ccChain+i)-point != (ccChain+i)-head (ccChain+i)-point-ch)
{
SetTextColor(hdcMem, RGB(0, 255-(255*(temp++)/(ccChain+i)-iStrLen), 0));
TextOut(hdcMem, (ccChain+i)-x, j-=iFontHeight, ((ccChain+i)-point-ch), 1);
(ccChain+i)-point = (ccChain+i)-point-next;
}
if(ctn)
(ccChain+i)-iStopTimes = 0 ;
else continue;
(ccChain+i)-y += iFontHeight; //下次开始显示的y坐标 为当前的y坐标加上 一个字符的高度
//如果开始显示的y坐标减去 整个显示列的长度超过了屏幕的高度
if( (ccChain+i)-y-(ccChain+i)-iStrLen*iFontHeight cyScreen)
{
free( (ccChain+i)-current );
init(ccChain+i, cyScreen, (iFontWidth*3/2)*i);
}
//链表的头 为此链表的前个元素,因为下次开始显示的时候 就相当与在整个显示列的开头添加个元素,然后在开始往上显示
(ccChain+i)-head = (ccChain+i)-head-prev;
(ccChain+i)-head-ch = randomChar();
}
BitBlt(hdc, 0, 0, cxScreen, cyScreen, hdcMem, 0, 0, SRCCOPY);
ReleaseDC(hwnd, hdc);
return 0; case WM_RBUTTONDOWN:
KillTimer (hwnd, ID_TIMER) ;
return 0; case WM_RBUTTONUP:
SetTimer (hwnd, ID_TIMER, 10, NULL) ;
return 0; //处理善后工作
case WM_KEYDOWN:
case WM_LBUTTONDOWN:
case WM_DESTROY:
KillTimer (hwnd, ID_TIMER) ;
DeleteObject(hBitmap);
DeleteDC(hdcMem);
for(i=0; iiColumnCount; i++)
{
free( (ccChain+i)-current );
}
free(ccChain);
PostQuitMessage (0) ;
return 0 ;
}
return DefWindowProc (hwnd, message, wParam, lParam) ;
}
这有个数字雨的代码,看能帮助你不!