代码制作数字流星雨_C语言实现流星雨 | 学步园
程序模拟一组流星飞向地面的情景。流星用大写字母不表示。程序产生一组流星(比如10个),从屏幕顶部下降飞向地面。一组流星中,每个流星的字符颜色是随机的,下降的位置是随机的,下降的速度也是随机的。
数字流星雨代码:
// 流星雨.cpp : Defines the entry point for the console application.
//
///
// 程序名称:数字流星雨
// 最后修改:2006-10-15
///
#include
#include
#include
#include "graphics.h"
#include
#include
/***********************宏定义**********************/
#define PI 3.1415926//圆周率
#define WIDTH 200//屏幕宽度,流星出生区域
#define HEIGHT 150//屏幕高度,流星出生区域
#define V 20//流星速度,单次移动的像素数
#define LENGTH20//流星字符数
#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]);
}
}
}
代码制作数字流星雨_C语言实现流星雨 | 学步园相关推荐
- C语言程序模拟流星雨,C语言_流星雨的实现.doc
C语言_流星雨的实现 HUNAN UNIVERSITY 程序设计训练报告 题目 流 星 雨 的 实 现 学生姓名毛 宇 锋学生学号201208060116专业班级信息安全一班学院名称信息科学与工程学院 ...
- 代码制作数字流星雨_用C语言编写流星雨程序
展开全部 数字流星雨代码: //流星雨.cpp:Defines the entry point for the console application. // /// //程序名称:数字流星雨 //最 ...
- 代码制作数字流星雨_如何运用html完成流星雨的效果(代码)
软件安装:装机软件必备包 网页的本质就是超级文本标记语言,通过结合使用其他的Web技术(如:脚本语言.公共网关接口.组件等),可以创造出功能强大的网页.因而,超级文本标记语言是万维网(Web)编程的基 ...
- java 从控制台输入一个正整数_编程输出该正整数各位数字之和_C语言 从键盘上输入一个正整数,计算并输出该数的各位数字之和...
点击查看C语言 从键盘上输入一个正整数,计算并输出该数的各位数字之和具体信息 答:思路:定义变量a接受键盘输入和变量sum保存a的各位数字之和,依次对a进行除10操作,并把a除10的余数加到sum中, ...
- python输入一个正整数、计算其各个位的数字之和_C语言程序设计:编写程序,输入一个正整数,统计该整数的位数并计算其各个数位上的数字之和。...
点击查看C语言程序设计:编写程序,输入一个正整数,统计该整数的位数并计算其各个数位上的数字之和.具体信息 答:#include /*包含头文件*/void main() /*主函数*/{ int n, ...
- c语言一个整数各位数字个数_C语言实现把字符串中的数字转换成整数
===Tips:点击上方 蓝字 关注并查看历史消息=== 本题实现的功能是把字符串中的数字提取转换成整型数字,例如:若输入字符串"ab56cd87",则输出结果:以%d格式输出 ...
- c语言代码大全表解释_C语言常用错误代码释义大全,值得收藏!
对于刚学编程,刚接触C++的新手来说,编译运行报错是最头疼的一件事,爆出一堆英文,英语差一点的又不知道什么意思,所以也不知道如何去改,在此,我给大家传一份常见错误中英文对照表及简单解释,希望可以帮到大 ...
- c语言一个整数各位数字个数_C语言编写程序输出10个整数中最小值或最大值
C语言编写程序输出10个整数中最小值或最大值 这是一个比较基础,同时也包含C语言中诸多特点的程序,仔细体会有很多的格式规则和技巧.其中包括:输入语句,输出语句,数组,分支结构,循环结构.希望广大C语言 ...
- c代码实现 ifft运算_C语言系列之FFT算法实现
0x10 序言 长文预警,详细介绍FFT算法的编程原理和C实现,并在文章的最后附上了本文的所有源代码. 0x11 速览 1)FFT背后的数学原理 2)码位倒序 3)蝶形运算设计 4)利用复数FFT编写 ...
- java阿拉伯转大写_java 中大写数字与阿拉伯数之间的相互转换 | 学步园
public class CNNumberFormat { private static final char []cnNumbers={'零', '壹', '贰', '叁', '肆', '伍','陆 ...
最新文章
- 阿里云容器服务发布 Knative 托管服务 | 云原生生态周报 Vol. 49
- How to become the truely yourself?
- 图书资料管理课程设计(附源码和连接)
- BZOJ 3329 Xorequ (数位DP、矩阵乘法)
- aix下java程序运行问题
- mysql如何和qt连接使用_Qt5学习:连接MySQL数据库
- python-turtle库-01
- Jeecg-Boot 一款基于SpringBoot 快速开发平台
- Android 不能勾选 Project Build Target
- JAVA正则提取字符串中的日期
- 如何修改zblog的css,修改Zblog中的CSS的方法
- IntelliJ IDEA设置TortoiseSVN插件(Cannot run program svn)
- matlab找出向量的中位数,MATLAB如何使用median函数计算样本的中位数
- js中求2个数的最大值的几种方法
- 中南大学计算机学院王瑞,中南大学优秀毕业生.xls
- 自动收取蚂蚁森林能量雨
- 用计算机说出人说的话,用计算机语言说一句情话
- 记一次排查服务器被挖矿记录
- 五大创新型AI软件公司,下一个AI独角兽就是你
- 如何从基层人员变成一名中层领导