问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

用C语言实现 流星雨

发布网友 发布时间:2022-04-29 11:42

我来回答

2个回答

热心网友 时间:2022-05-12 12:06

数字流星雨代码:

//流星雨.cpp:Defines the entry point for the console application.

//

///////////////////////////////////////////////////

//程序名称:数字流星雨

//最后修改:2006-10-15

///////////////////////////////////////////////////

#include<windows.h>

#include<time.h>

#include<stdlib.h>

#include"graphics.h"

#include<conio.h>

#include<math.h>

/***********************宏定义**********************/

#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;i<NUM;i++){//对NUM个流星体初始化

InitMeteor(&me<i>);

}

while(c!=27){

BeginBatchDraw();//开始批量绘图

Meteors(me);//绘制一帧动画

FlushBatchDraw();//执行未完成的绘制任务

Sleep(DELAY);//延时

cleardevice();//清屏

for(int i=0;i<NUM;i++){

me<i>.yh+=V;

Move(me<i>.str);

if(me<i>.yh>HEIGHT+LENGTH*V){

InitMeteor(&me<i>);

}

}

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(pt>p){

*(--pt)=*(pt-1);

}

*p=AsciiRand();

}

void InitMeteor(struct meteor*me){//对一颗流星初始化

me->x0=rand()%WIDTH;

me->yh=me->y0=rand()%HEIGHT;

for(int i=0;i<LENGTH;i++)

{

*(me->str+i)=AsciiRand();

}

}

int color(int y,int y0,int yh){//确定流星的颜色

int color;

//出生点之前的流星体置成黑色

if(y<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;n<NUM;n++){

for(int j=0;j<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、#include<文件名>

2、#include"文件名"

热心网友 时间:2022-05-12 13:24

用C语言?
楼主还是自己写吧!相信会很有提高。

我只给个提示:
在字符界面的程序里,有两种方式可以用来控制字符在屏幕上的位置
1.cprintf之类的函数,可以指定位置、字符属性地在屏幕上显示字符串。
2.直接写屏技术。原理就是直接写字符屏幕缓冲区地址。屏幕上的字符与内存的特定地位一一对应。内存里写什么内容,屏幕上就显示什么内容。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
人大政协辅助岗是什么 政务辅助人员是干什么 政府辅助人员是什么 努比亚的海拔什么意思 北非努比亚现在怎么样了啊 相邻权的相关法律 梦见老公离世了什么预兆 梦见自己老公走掉 你出轨后 怎么操作才没被发现? 评评怎么造句 淋巴结节怎么治疗? 男性49岁 颈部 右侧 淋巴结节 。 回声低。 颈部淋巴结节用什么药外敷 患病二十多年,颈部淋巴结节如何治疗? 华为mate30pro打开手机出现广告怎么关闭手机弹出广告关不掉怎么办? 油烟机蒸汽洗不抽水怎么办换 蒸汽清洗油烟机那个自动清洗有时候有反应有时候没有反应怎么办 华为mate30pro总是弹出广告? 怎么在电脑上查看wifi密码和修改密码 虎牙直播用手机看 锁屏之后直播结束了 我再解锁手机 会怎么样? 苹果手机无服务,怎么解决? 怎么判断化学平衡.....谢谢 如何判断一个可逆反应已经达到化学平衡状态 判断化学反应达到化学平衡的标志 等效平衡口诀是什么? 化学平衡的判断依据 化学平衡的判定方法 判断化学平衡的标志 如何判断化学平衡 如何判断化学反应达到化学平衡状态? 达到化学平衡的标志有哪些?原理是什么 颈部淋巴结节到底是怎么回事啊? 流星雨的源程序 脖子这里有一个淋巴结块一直很反复怎么回事? 我要黑客帝国里的数字流星雨代码,用html或asp写的 颈部淋巴结节,双侧,多发,边界清,形态规则。需治疗吗 网易博客流星雨代码 得了甲状腺结节和颈部淋巴结节怎么治疗 QQ空间流星雨代码 你好!我也是一位淋巴结节患者,就是颈部有个包,怎么才能消除,求助者。 flash cs3制作流星雨步骤、需要编码、 甲状腺及颈部淋巴结节该如何检查治疗 请教:怎么样能把C语言代码运行后的流星雨效果图保存下来,保存为GIF... AS2.0代码如下:请逐行翻译。下面是段流星雨代码:影片剪辑名为star. 谁有空间流星雨德空间代码? 谁知道那里有QQ空间流星雨的代码? Flash 怎么制作流星雨? 如何在bat/cmd中在一个选项内,再嵌套一个选项 求一张澄海3C5.56的无限作弊图 HkeW3mModifier2.05如何开启 梦见自己在梦里呕吐代表什么啊?