c語言煙花百度云,C語言實現放煙花的程序

這是一個利用C語言編寫放煙花的程序(同時也可以播放音樂),供大家參考,具體內容如下

代碼如下

#pragma once

#include

#include //圖形界面庫頭文件

#include //計算圓形的軌跡坐標

#include

#include

#include

#include

#pragma comment(lib,"winmm.lib")

//#include 包含頭文件

//#pragma comment(lib."文件名稱") 包含庫文件

constexpr auto WND_WIDTH = 1000;

constexpr auto WND_HEIGHT = 600;

constexpr auto PI = 3.141592653589793238;

constexpr auto NUM = 14;

/***********結構****************/

struct JET //煙花彈

{

int x, y; //發射點坐標

int hx, hy; //最高點坐標 爆炸坐標

int height; //高度 最高點y 發射點y的差值

bool isshoot; //是否發射狀態

DWORD t1, t2, dt; //保存時間 時間可以用來描述發射速度

IMAGE img[2]; //保存煙花一明一暗的圖片

byte n : 1; //保存煙花彈的明暗狀態 位段

//字節為單位 int 4 char 1 n一個位 0-1

}jet[NUM]; //結構體數組13 img這個數組

struct FIRE

{

int r;

int max_r;

int x, y;

int cen_x, cen_y;

int width, height;

int xy[240][240];

bool show;

bool draw;

DWORD t1, t2, dt;

}fire[NUM];

void welcome();

void init(int i);

void loadimages();

void choice(DWORD& t1);

void shoot();

void Show(DWORD* pMem);

void clss(int a);

void delay(int a);

void detabase(int a);

int main()

{

//res 1.wav

PlaySound(L"sound.dll", NULL, SND_LOOP | SND_FILENAME | SND_ASYNC);

//mp3播放

//mciSendString(L"open 1.mp3 alias bkmusic", NULL, 0, NULL);

//mciSendString(L"play bkmusic repeat", NULL, 0, NULL);

int a;

for (a = 0; a < 5; a++)

{

detabase(a);

delay(100000);

clss(1);

}

delay(500000);

initgraph(WND_WIDTH, WND_HEIGHT); //init初始化 graph圖形界面 窗口

srand((unsigned int)time(NULL));

DWORD t1 = timeGetTime();

DWORD* pMem = GetImageBuffer();

//第一個界面

welcome();

//初始化

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

{

init(i);

}

loadimages();

BeginBatchDraw();

while (!_kbhit())

{

//Sleep(10);

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

{

for (int j = 0; j < 3; j++)

{

int px1 = rand() % 1000;

int py1 = rand() % 600;

if (py1 < 599)

{

pMem[py1 * 1000 + px1] = pMem[py1 * 1000 + px1 + 1] = BLACK;

}

}

}

choice(t1);

shoot();

Show(pMem);

EndBatchDraw();

}

return 0;

}

void welcome()

{

settextcolor(YELLOW);

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

{

//圓心(500,300) 半徑150 60個均勻點的x,y

int x = 500 + int(150 * sin(PI * 2 * i / 60));

int y = 300 + int(150 * cos(PI * 2 * i / 60));

cleardevice();

settextstyle(i, 0, L"微軟雅黑");

outtextxy(x - 100, y - 150, L"測試使用1234567890"); //在指定的位置去輸出字符

outtextxy(x, y - 100, L"測試1234567890");

Sleep(25);

}

//_getch(); //接收字符 不回顯 直接接收

Sleep(2000);

cleardevice();

settextstyle(25, 0, L"宋體");

outtextxy(400, 150, L"1,");

outtextxy(400, 200, L"2");

outtextxy(400, 250, L"3,");

outtextxy(400, 300, L"4,");

outtextxy(400, 350, L"5");

outtextxy(560, 400, L"---6");

Sleep(3000);

//_getch();

}

void init(int i)

{

int r[14] = { 120,120,155,123,130,147,138,138,130,135,140,132,155,160 };

int x[14] = { 120,120,110,117,110,93,102,102,110,105,100,108,110,132 };

int y[14] = { 120,120,85,118,120,105,103,110,110,120,1201,04,85,145 };

fire[i].x = 0;

fire[i].y = 0;

fire[i].width = 240;

fire[i].height = 240;

fire[i].max_r = r[i];

fire[i].cen_x = x[i];

fire[i].cen_y = y[i];

fire[i].show = false;

fire[i].dt = 5;

fire[i].t1 = timeGetTime();

fire[i].r = 0;

//初始化 煙花彈

jet[i].x = 0;

jet[i].y = 0;

jet[i].hx = 0;

jet[i].hy = 0;

jet[i].height = 0;

jet[i].t1 = timeGetTime(); //獲取系統時間

jet[i].dt = rand() % 10; //0-9的隨機時間

jet[i].n = 0;

jet[i].isshoot = false;

}

void loadimages()

{

IMAGE fm, gm;

loadimage(&fm, L"flower.dll", 3120, 240);

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

{

SetWorkingImage(&fm);

getimage(&gm, i * 240, 0, 240, 240);

SetWorkingImage(&gm);

for (int a = 0; a < 240; a++)

{

for (int b = 0; b < 240; b++)

{

fire[i].xy[a][b] = getpixel(a, b);

}

}

}

IMAGE jetimg;

loadimage(&jetimg, L"shoot.dll", 200, 50);

//set設置 working正在工作的 image圖片

SetWorkingImage(&jetimg);

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

{

int n = rand() % 5; //0-4的隨機數

getimage(&jet[i].img[0], n * 20, 0, 20, 50);

getimage(&jet[i].img[1], (n + 5) * 20, 0, 20, 50);

}

SetWorkingImage(NULL);

}

void choice(DWORD& t1)

{

DWORD t2 = timeGetTime();

if (t2 - t1 > 2) //2ms產生一個煙花彈

{

int n = rand() % 200; //0-199

if (n < NUM && jet[n].isshoot == false && fire[n].show == false)

{

//重置煙花彈

jet[n].x = rand() % (WND_WIDTH - 20);

jet[n].y = rand() % 100 + 400; //450-549

jet[n].hx = jet[n].x;

jet[n].hy = rand() % 400; //0-399

jet[n].height = jet[n].y - jet[n].hy;

jet[n].isshoot = true;

//n

putimage(jet[n].x, jet[n].y, &jet[n].img[jet[n].n]);

}

t1 = t2;

}

}

void shoot()

{

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

{

jet[i].t2 = timeGetTime();

if (jet[i].t2 - jet[i].t1 > jet[i].dt && jet[i].isshoot == true)

{

putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);

if (jet[i].hy < jet[i].y)

{

jet[i].n++; //0-1 明暗交替

jet[i].y -= 5;

}

putimage(jet[i].x, jet[i].y, &jet[i].img[jet[i].n]);

if (jet[i].y <= jet[i].hy)

{

fire[i].y = jet[i].hy;

fire[i].x = jet[i].hx;

fire[i].show = true;

jet[i].isshoot = false;

}

jet[i].t1 = jet[i].t2;

}

}

}

void Show(DWORD* pMem)

{

int drt[16] = { 5,5,5,5,5,6,25,25,25,25,25,55,55,55,55,55 }; //dt

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

{

fire[i].t2 = timeGetTime();

if (fire[i].t2 - fire[i].t1 > fire[i].dt && fire[i].show == true)

{

if (fire[i].r < fire[i].max_r)

{

fire[i].r++;

fire[i].dt = drt[fire[i].r / 10];

fire[i].draw = true;

}

if (fire[i].r >= fire[i].max_r - 1)

{

fire[i].draw = false;

init(i);

}

fire[i].t1 = fire[i].t2;

}

if (fire[i].draw)

{

for (double a = 0; a <= 6.28; a += 0.01)

{

int x1 = (int)(fire[i].cen_x + fire[i].r * cos(a));

int y1 = (int)(fire[i].cen_y + fire[i].r * sin(a));

if (x1 > 0 && x1 < fire[i].width && y1>0 && y1 < fire[i].height)

{

int b = fire[i].xy[x1][y1] & 0xff;

int g = (fire[i].xy[x1][y1] >> 8) & 0xff;

int r = (fire[i].xy[x1][y1] >> 16);

int xx = (int)(fire[i].x + fire[i].r * cos(a));

int yy = (int)(fire[i].y + fire[i].r * sin(a));

if (r > 0x20 && g > 0x20 && b > 0x20 && xx > 0 && xx < 1000 && yy < 600 && yy>0)

{

pMem[yy * 1000 + xx] = BGR(fire[i].xy[x1][y1]);

}

}

}

fire[i].draw = true;

}

}

}

void clss(int a)

{

system("cls");

}

void delay(int a)

{

while (a)

{

a--;

}

}

void detabase(int a)

{

switch (a)

{

case 1:

{

//printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");

printf(" ■■ ■■ \n");

printf(" ■■ ■■■■■■■■■■\n");

printf(" ■■■ ■■■■■■■■ \n");

printf(" ■■■■■■■■■■■■ ■■ \n");

printf(" ■■■■■■■■■■■■ ■■ \n");

printf(" ■ ■■ \n");

printf(" ■■ ■■ ■■ \n");

printf(" ■■ ■■ ■■ \n");

printf(" ■■ ■■ ■■ \n");

printf("■■■■■■■■■■■■■ ■■■■■■■■■■\n");

printf("■■■■■■■■■■■■■■ ■■■■■■■■■■\n");

printf(" ■■ ■■ ■■ \n");

printf(" ■■ ■■ ■■ \n");

printf(" ■■■■■■■■■■■■ ■■ ■■ \n");

printf(" ■■■■■■■■■■■■ ■■ ■■ \n");

printf(" ■■ ■■ ■■ \n");

printf(" ■ ■■ ■ ■■ ■■ \n");

printf(" ■■■ ■■ ■■ ■■ ■■ \n");

printf(" ■■ ■■ ■■ ■■ ■■ \n");

printf(" ■■ ■■ ■■■ ■■ ■■ \n");

printf("■■■ ■■ ■ ■■ ■■ \n");

printf("■■ ■■ ■■ ■■ \n");

printf(" ■■■■ ■■■ ■■ \n");

printf(" ■■■■ ■ ■■ \n");

}

break;

case 2:

{

//printf("■■■■■■■■■■■■■■■■■■■■■■■■\n");

printf(" ■■■ \n");

printf(" ■■■ \n");

printf(" ■■ \n");

printf(" ■■■ \n");

printf(" ■■■■■■■■■■■■■■■■■■■ \n");

printf(" ■■■ ■■■ ■ \n");

printf(" ■■■ ■■ \n");

printf(" ■■■ ■■ \n");

printf(" ■■■■ ■■ \n");

printf("■■■■ ■■ \n");

printf(" ■■ ■■■■■■■■■■■■■■■■■ \n");

printf(" ■■■■■■■■■■■■■■■■■ \n");

printf(" ■■ ■■ \n");

printf(" ■■ ■■ \n");

printf(" ■■ ■■ \n");

printf(" ■■ ■■ \n");

printf(" ■■ ■■ \n");

printf("■■■■■■■■■■■■■■■■■■■■■■■■\n");

printf("■■■■■■■■■■■■■■■■■■■■■■■■\n");

printf(" ■■ \n");

printf(" ■■ \n");

printf(" ■■ \n");

printf(" ■■ \n");

printf(" ■■ \n");

printf(" ■■ \n");

printf(" ■■ \n");

}

break;

case 3:

{

//printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");

printf(" ■■ ■■ \n");

printf(" ■■ ■■ \n");

printf(" ■■ ■■ \n");

printf(" ■■ ■■ \n");

printf(" ■■ ■■■■■■■■■■■ \n");

printf(" ■■ ■■■■■■■■■■■■ \n");

printf(" ■■ ■■ ■■ ■■ ■■ \n");

printf(" ■■ ■■ ■■ ■■ ■■ \n");

printf("■■ ■■ ■■ ■■ ■■ \n");

printf("■■ ■■ ■■■ ■■ ■■ \n");

printf("■■ ■■ ■■ ■■ \n");

printf("■■ ■■ ■■ ■■ \n");

printf("■■ ■■ ■■ ■■■ \n");

printf(" ■■ ■■■■■■■■■■■■■■■■\n");

printf(" ■■ ■■■■■■■■■ ■■■\n");

printf(" ■■ ■■■ \n");

printf(" ■■ ■■■■ \n");

printf(" ■■ ■■ ■■ \n");

printf(" ■■ ■■ ■■ \n");

printf(" ■■ ■■ ■■ \n");

printf(" ■■ ■■ ■■■ \n");

printf(" ■■ ■■■ ■■■ \n");

printf(" ■■ ■■■ ■■■■ \n");

printf(" ■■ ■■■■ ■■■■\n");

printf(" ■■ ■■■ ■■ \n");

printf(" ■■ ■ \n");

}

break;

case 4:

{

//不用 不用

//printf("■■■■■■■■■■■■■■■■■■■■■■■■■\n");

printf(" ■■ \n");

printf(" ■■ ■■■■■■■■■■■■■■ \n");

printf(" ■■■■■■■■■■■■■■■■■■■ \n");

printf(" ■■■ \n");

printf(" ■■ \n");

printf(" ■■ ■■ \n");

printf(" ■■ ■■ \n");

printf(" ■■ ■■ \n");

printf(" ■■ ■■ \n");

printf(" ■■■ ■■ \n");

printf(" ■■■ ■■ \n");

printf(" ■■■■■■■■■■■■■■■■■■■■■ \n");

printf(" ■■■■ ■■■ ■ \n");

printf(" ■■ \n");

printf(" ■■ \n");

printf(" ■ ■■ \n");

printf(" ■■■■ ■■ ■■■ \n");

printf(" ■■■ ■■ ■■■■ \n");

printf(" ■■■ ■■ ■■■■ \n");

printf(" ■■■ ■■ ■■■■ \n");

printf(" ■■■ ■■ ■■■■ \n");

printf(" ■■■ ■■ \n");

printf(" ■■■ ■■ \n");

printf(" ■■■■■ \n");

printf(" ■■■■ \n");

printf(" ■■ \n");

}

break;

case 5:

{

printf("happy spring festival!");

}

break;

}

}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/259414.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/259414.shtml
英文地址,請注明出處:http://en.pswp.cn/news/259414.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

決定人生的七條公式

1 .積跬步以致千里&#xff0c;積怠惰以致深淵 1.01^365 37.80.99^365 0.032.拖延癥 U EV/ID U完成任務的程度 E對成功的信心 V 對任務的愉悅度 I 你的分心程度 D你多久會獲得回報3.三天打魚兩天曬網&#xff0c;終將一無所獲 1.01^3 x 0.99^2 < 1.01 4.愛因斯坦的成…

strncpy與strcpy的區別與注意事項

strncpy 是 C語言的庫函數之一&#xff0c;來自 C語言標準庫&#xff0c;定義于 string.h&#xff0c;char *strncpy(char *dest, char *src, int n)&#xff0c;把src所指字符串的前n個字節復制到dest所指的數組中&#xff0c;并返回指向dest的指針。 strcpy只是復制字符串&am…

使用ssh公鑰實現免密碼登錄

ssh 無密碼登錄要使用公鑰與私鑰。linux下可以用用ssh-keygen生成公鑰/私鑰對&#xff0c;下面我以CentOS為例。 有機器A(192.168.1.155)&#xff0c;B(192.168.1.181)。現想A通過ssh免密碼登錄到B。 首先以root賬戶登陸為例。 1.在A機下生成公鑰/私鑰對。 [rootA ~]# ssh-keyg…

15款的視頻處理軟件免費下載

因為需要購買昂貴的視頻處理軟件和高性能圖形計算機&#xff0c;所以視頻處理是一項比較耗費金錢的技術活。正是由于這樣&#xff0c;一部分人選擇使用性能較好的免費在線編輯軟件&#xff0c;無需太多視頻處理知識便可在瀏覽器中剪切和編輯視頻。然而&#xff0c;當我們無法連…

液位系統c語言程序,超聲波自動測量物體液位系統的設計

超聲波自動測量物體液位系統的設計(任務書,畢業論文15000字)摘要本系統以STC89C52單片機為核心&#xff0c;通過硬件電路連接和軟件程序的編寫實現通用型超聲波自動測量物體液位系統的設計。其主要原理是由單片機控制超聲波發射電路發射超聲波&#xff0c;超聲波接收電路接收遇…

android-sdk-windows版本號下載

Android SDK 4.0.3 開發環境配置及執行 近期又裝了一次最新版本號的ADK環境 眼下最新版是Android SDK 4.0.3 本文的插圖和文本盡管是Android2.2的 步驟都是一樣的&#xff0c;假設安裝的過程中遇到什么問題&#xff0c;能夠留言&#xff0c;我會盡快回復&#xff01; 系統環境的…

string中c_str()、data()、copy(p,n)函數的用法

轉載&#xff1a;http://www.cnblogs.com/qlwy/archive/2012/03/25/2416937.html 標準庫的string類提供了3個成員函數來從一個string得到c類型的字符數組&#xff1a;c_str()、data()、copy(p,n)。 1. c_str()&#xff1a;生成一個const char*指針&#xff0c;指向以空字符終止…

POJ2402 Palindrome Numbers 回文數

題目鏈接: http://poj.org/problem?id2402 題目大意就是讓你找到第n個回文數是什么. 第一個思路當然是一個一個地構造回文數直到找到第n個回文數為止(也許大部分人一開始都是這樣的思路). 很明顯找到第n個之前的所有操作都是浪費, 這也是這個方法的最大弱點. 抱著僥幸心理(誰知…

離散卷積的c語言編程實驗,數字信號處理實驗一離散卷積c語言編程.ppt

數字信號處理實驗一離散卷積c語言編程實驗一 離散卷積的C語言編程實驗 DSP實驗室 2005 實驗性質 綜合設計性實驗 實驗目的 1 了解和認識常用的各種信號&#xff1b; 2 掌握卷積的定義和計算方法&#xff1b; 3 掌握在計算機中生成以及繪制信號序列圖的方法。 實驗原理 離散時間…

async-await原理解析

在用async包裹的方法體中&#xff0c;可以使用await關鍵字以同步的方式編寫異步調用的代碼。那么它的內部實現原理是什么樣的呢&#xff1f;我們是否可以自定義await以實現定制性的需求呢&#xff1f;先來看一個簡單的例子&#xff1a; 1 class Test {2 public sta…

emacs-w3m查看html幫助手冊

<?xml version"1.0" encoding"utf-8"?> emacs-w3m查看html幫助手冊emacs-w3m查看html幫助手冊 Table of Contents 1. 使用效果2. 為什么要用emacs-w3m來查看html的幫助手冊&#xff1f;3. 什么是w3m?4. 配置5. 額外資源1 使用效果 使用快捷鍵C-c …

c語言生命游戲代碼大全,c++生命游戲源碼

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓glViewport( 0, 0, width, height );glMatrixMode( GL_PROJECTION );glLoadIdentity( );}//程序入口int main(int argc, char *argv[]){//隨機生成細胞的狀態MapRand();std::cout<//SDL初始化const SDL_VideoInfo* info NULL;i…

初學React,setState后獲取到的thisstate沒變,還是初始state?

問題&#xff1a;(javascript)初學React&#xff0c;setState后獲取到的thisstate沒變&#xff0c;還是初始state&#xff1f;描述: getInitialState(){return {data:[]};},componentDidMount(){var data [ { author: "Pete Hunt", text: "This is one comment…

sizeof(數組名)和sizeof(指針)

轉載&#xff1a;http://blog.csdn.net/kangroger/article/details/20653255 在做這道題時&#xff1a; 32位環境下&#xff0c;int *pnew int[10];請問sizeof(p)的值為&#xff08;&#xff09; A、4 B、10 C、40 D、8 我以為正確答…

工作中的問題

今天寫一專題頁面&#xff0c;寫出的結果在各個瀏覽器下都不同&#xff0c;心情不好。。。 就是紅線的地方老對不齊。。。 在朋友指導下改了下樣式好了 右邊代碼結構 1 <div class"fr Img"> 2 <h3>相關專題</h3> 3 <a href"#"…

數組的sizeof

轉載&#xff1a;http://blog.163.com/chen_xinghuan/blog/static/17220158220112182838196/ 數組的sizeof值等于數組所占用的內存字節數&#xff0c;如&#xff1a;   char a1[] “abc”;   int a2[3];   sizeof( a1 ); // 結果為4&#xff0c;字符 末尾還存在一個…

數據結構行編輯成簇 c語言,索引的數據結構及底層存儲

索引是幫助數據庫高效獲取數據的數據結構索引的數據結構1.hash表a.利用hash存儲的話需要將所有的數據文件添加到內存&#xff0c;比較耗費內存空間b.hash表存儲的是無序數據&#xff0c;范圍查找的時候需要挨個進行遍歷&#xff0c;比較耗費時間。2.二叉樹二叉樹規定左子樹必須…

卓同學的 Swift 面試題

我覺得應該掌握的知識點&#xff0c;沒有實際意義。 class 和 struct 的區別不通過繼承&#xff0c;代碼復用&#xff08;共享&#xff09;的方式有哪些Set 獨有的方法有哪些&#xff1f;實現一個 min 函數&#xff0c;返回兩個元素較小的元素map、filter、reduce 的作用map 與…

使用CImage雙緩沖

一普通顯示&#xff1a;現在的VC顯示圖片非常方便&#xff0c;遠不是VC6.0那個年代的技術可比&#xff0c;而且支持多種格式的如JPG&#xff0c;PNG。 CImage _img; 初始化&#xff1a; _img.Load(L"map.png"); 顯示&#xff1a;OnPaint事件中 CRect rect; this…

匯編語言學習系列 for循環實現

假如匯編語言要實現如下C語言的功能&#xff0c;編譯環境Ubuntu14.04&#xff08;32位&#xff09;。 #include<stdio.h> int fact_for(int n) {int i;int result 1;for(i 2; i < n; i)result * i;return result; }int main(){printf("%d\n", fact_for(3)…