當前位置:首頁 » 編程語言 » c語言流星雨

c語言流星雨

發布時間: 2023-09-05 23:28:08

c語言開發《浪漫流星雨》表白程序,源碼來了

浪漫表白效果:

開發環境:Visual Studio 2019 + EasyX圖形庫插件即可

源碼展示:

以上就是我們表白程序的源碼了!最後祝大家都能和喜歡的人在一起哦~

我的C/C++編程學習基地,點擊正在跳轉「鏈接」即可加入,歡迎有問題的小夥伴一起進來學習交流嗷~

⑵ 用C語言編寫流星雨程序

數字流星雨代碼:

//流星雨.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='';//接收鍵盤輸入的變數

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

}

}

}

(2)c語言流星雨擴展閱讀:

include用法:

#include命令預處理命令的一種,預處理命令可以將別的源代碼內容插入到所指定的位置;可以標識出只有在特定條件下才會被編譯的某一段程序代碼;可以定義類似標識符功能的宏,在編譯時,預處理器會用別的文本取代該宏。

插入頭文件的內容

#include命令告訴預處理器將指定頭文件的內容插入到預處理器命令的相應位置。有兩種方式可以指定插入頭文件:

1、#include<文件名>

2、#include"文件名"

⑶ C語言翻譯

/*還有不清楚的給我發消息,替你解答*/

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>/*文件包含*/

void Print(int place[25][80])//,int color[10],int star[10])/*這個是自定義的用來顯示屏幕字元的函數;place[25][80]數組暗示劃定了顯示字元的區域:橫坐標從0到25,縱坐標從0到80*/
{
int i,j;
for(i=0;i<25;i++)/*循環控制行的字元顯示輸出,共有25行*/
for(j=0;j<80;j++)/*循環控制列的字元顯示輸出,共有80列*/
if(place[i][j]!=0&&place[i][j]!=-1)/*滿足此條件時,輸出字母字元,即為程序執行時上部「流星」*/
{
printf("%c",'A'+place[i][j]-1);
}
else if(place[i][j]==-1)/*滿足此條件時,輸出#號,即為程序執行時下部「草地」*/
printf("#");
else /*其他情況輸出空格,即為程序執行時上部「流星」周圍的空隙*/
printf(" ");
}

void End(int place[25][80])
{
int i,j;
for(i=19;i<25;i++)
for(j=0;j<80;j++)
if(place[i][j]==-1)
break;/*進入下部#號區域時跳出循環*/
if(i==25&&j==80)
exit(0);/*如果程序執行使數組到了最後一個元素,退出系統*/
}

void main()
{

int speed[10],dir[10],x[10],y[10],star[10];/*定義相關變數*/
int i,j;
int place[25][80]={0};/*為數組賦值,全賦為0*/
srand((int)time(0));/*使用該函數產生隨機種子,初始化隨機數發生器*/
for(i=19;i<25;i++)/*輸出#號那部分的行號*/
for(j=0;j<80;j++)/*輸出#號那部分的列號*/
place[i][j] = -1;/*為輸出#號那部分的數組賦值-1*/
for(i=0;i<10;i++)
{
x[i]=0;/*x[i](橫坐標)賦值使其為0*/y[i]=rand()%80;/*為y[i](縱坐標)賦值,使其為0到80的隨機數*/
speed[i]=rand()%2+1;/*為speed[i]賦值,使其為0到2的隨機數加上1*/
dir[i]=rand()%5-2;/*為dir[i]賦值,使其為0到5的隨機數減去2*/
star[i] = rand()%26+1;/*為star[i]賦值,使其為0到26的隨機數加上1*/
}
while(1) /*循環產生流星雨效果*/
{
for(i=0;i<10;i++)
place[x[i]][y[i]] = star[i];
Print(place);
for(i=0;i<10;i++)
place[x[i]][y[i]] = 0;
Sleep(1);//將畫面停留0.1(100毫秒)秒
system("cls");/*執行dos清屏命令,清除之前屏幕的內容*/
for(i=0;i<10;i++)
{
x[i] += speed[i];/*橫坐標增加speed[i]個單位*/
y[i] += dir[i];/*縱坐標增加dir[i]個單位*/
if( y[i]>=80||y[i]<0||x[i]>=25 || place[x[i]][y[i]]==-1)/*選定非「流星」區域*/
{
if(place[x[i]][y[i]]==-1&&y[i]>0&&y[i]<=80&&x[i]<25)/*選定輸出#號,即程序執行時下部「草地」區域*/
place[x[i]][y[i]] = 0;
x[i]=0;y[i]=rand()%80;
speed[i]=rand()%2+1;
dir[i]=rand()%5-2;
star[i] = rand()%26+1;
}
}
End(place);/*調用自定義函數退出*/
// for(i=0;i<10;i++)
// place[x[i]][y[i]] = 1;
}
}

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:433
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:744
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:147
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:240
java駝峰 發布:2025-02-02 09:13:26 瀏覽:652
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726