帮忙改一下我的C语言流星雨的实现程序怎么只让流星是有颜色的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了帮忙改一下我的C语言流星雨的实现程序怎么只让流星是有颜色的相关的知识,希望对你有一定的参考价值。

参考技术A

我写了一个,你可以看下效果。

#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]);

   

扩展资料:

c语言程序设计 (计算机程序设计语言) 

C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。

资料来源:百度百科-c语言程序设计

今天是七夕节用100行CSS代码下一场流星雨许一个愿来一场美丽的邂逅

今天是七夕节、用100行代码下一场流星雨、许一个愿、来一场美丽的邂逅

        这个程序的核心使用CSS实现,基本原理就是利用CSS控制若干个div,本例是50个,当然,你可以弄更多的div,不过适当的流星是浪漫,如果流行太多了,恐龙就要灭绝了!

        现在说一下基本实现原理,首先用js动态产生若干个div,看下面的代码:

var stars = '';
for(var i = 0; i < 50;i++) {
  var starTailLengthStyle = "--star-tail-length: " + (5 + Math.random() * 4) + "em;"
  var topOffsetStyle = "--top-offset:"  + (4 + Math.random() * 100) + "vh;"
  var fallDurationStyle = "--fall-duration:" + (2 + Math.random() * 10) + "s;"
  var fallDelay = "--fall-delay:" + Math.random() * 5 + "s;"
  stars += "<div class='star' style='" +
          starTailLengthStyle +
          topOffsetStyle +
          fallDurationStyle +
          fallDelay + "'></div>\\r\\n";;
}
document.body.innerHTML="<div class='stars'>" + stars + "</div>";

        这段代码产生了51个div,其中1个div是最外层的div,另外50个div要放在这个div中。最外层div的class是stars,其他50个div的class是star。 另外还在style中加入了一些属性,用于随机控制每一颗流行的属性,如尾巴长短,跌落时间等。

        接下来在添加下面的样式用来描述stars,用来控制星星整体的初始位置。

.stars {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 120%;
  transform: rotate(-45deg);
}

        然后编写下面的star样式,这些样式用来控制每一颗星星的初始状态,var描述相关的变量。 

.star {
  --star-color: var(--primary-color);
  --star-tail-length: 6em;
  --star-tail-height: 2px;
  --star-width: calc(var(--star-tail-length) / 6);
  --fall-duration: 9s;
  --tail-fade-duration: var(--fall-duration);
  position: absolute;
  top: var(--top-offset);
  left: 1700px;
  width: var(--star-tail-length);
  height: var(--star-tail-height);
  color: var(--star-color);
  background: linear-gradient(45deg, currentColor, transparent);
  border-radius: 50%;
  filter: drop-shadow(0 0 6px currentColor);
  transform: translate3d(70em, 0, 0);
  animation: fall var(--fall-duration) var(--fall-delay) linear infinite, tail-fade var(--tail-fade-duration) var(--fall-delay) ease-out infinite;
}

        剩下的就是一些控制流星跌落过程中样式的,如下面的代码用来控制流星尾部在跌落过程中的变化。

@keyframes tail-fade {
  0%, 50% {
    width: var(--star-tail-length);
    opacity: 1;
  }
  70%, 80% {
    width: 0;
    opacity: 0.6;
  }
  100% {
    width: 0;
    opacity: 0;
  }
}

   

以上是关于帮忙改一下我的C语言流星雨的实现程序怎么只让流星是有颜色的的主要内容,如果未能解决你的问题,请参考以下文章

用C语言编写流星雨程序

520表白C语言开发《浪漫流星雨》表白程序,源码来了!

流星蝴蝶剑有没有密码让敌人的血变成1?

流星蝴蝶剑单机任务皇天城

520表白:炫酷动态的流星表白程序,原来是这样做出来的(含源码)

流星如何与android应用程序耦合?