两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

一、項目介紹

這是一個用C語言實現(xiàn)的雪花飄落小程序。

背景圖片可自行替換用作表白。

編譯環(huán)境:Visual Studio2019

第三方庫:Easyx2022  注意需要提前安裝easyX,如沒有基礎(chǔ)可以先了解easyX圖形編程

二、運行截圖

雪花

雪花

加菲

三、完整源碼

/*Love Snow
 *需要自己提供一張大小為 800×600 的圖片(img.jpg)在工程文件夾根目錄下
 *大小可以在程序內(nèi)更改,圖片名字也可以。
 */
#include <graphics.h>
#define MAX_STAR 500// 雪花數(shù)量上限
#define SCREEN_WIDTH 800// 屏幕寬度
#define SCREEN_HEIGHT 600// 屏幕高度
#define MAX_STEP 5// 雪花每次移動最高步長
#define MAX_RADIUS 5// 雪花最大半徑
#define IMGNAME _T("img.jpg")// 圖片名字
using namespace std;
// 圖片轉(zhuǎn)數(shù)組(這個有很大優(yōu)化空間的,需要識別彩色照片可以看這)
int imgList[SCREEN_HEIGHT][SCREEN_WIDTH] = { 0 };
// 雪花狀態(tài)
enum STATUS
{
STOP = 0,// 不動
UP,// 向上
DOWN,// 向下
LEFT,// 向左
RIGHT,// 向右
RANDOM,// 隨機
ALL_STATUS// 記錄狀態(tài)總數(shù)
};
struct STAR
{
int x;// 雪花的 x 坐標
int y;// 雪花的 y 坐標
enum STATUS stat;// 雪花狀態(tài)
unsigned radius;// 雪花的半徑
int step;// 雪花每次移動的步長
int color;// 雪花的顏色
};
struct SqList
{
struct STAR* elems; // 順序表的基地址
int length;// 順序表的長度
int size;// 順序表的空間
};
// 順序表的接口
bool initList(SqList& L);
bool listAppend(SqList& L, struct STAR e);
bool listDelete(SqList& L, int i);
void destroyList(SqList& L);
bool initList(SqList& L)
{
L.elems = new struct STAR[MAX_STAR];
if (!L.elems) return false;
L.length = 0;
L.size = MAX_STAR;
return true;
}
bool listAppend(SqList& L, struct STAR e)
{
if (L.length == L.size) return false;// 存儲空間已滿
L.elems[L.length] = e;
L.length++;// 表長加 1
return true;
}
bool listDelete(SqList& L, int i)
{
if (i < 0 || i >= L.length) return false;
if (i == L.length - 1)
{// 刪除最后一個元素
L.length--;
return true;
}
for (int j = i; j < L.length - 1; j++)
{
L.elems[j] = L.elems[j + 1];// 刪除位置的后續(xù)元素一次往前移
}
L.length--;
return true;
}
void destroyList(SqList& L)
{
if (L.elems) delete[]L.elems;// 釋放存儲空間
L.length = 0;
L.size = 0;
}
/************************************
* 功能:移動雪花,并在指定區(qū)域留下雪痕
* 輸入?yún)?shù):
* L - 雪花對象
* i - 雪花在全局數(shù)組中的下標
* 返回值:無
************************************/
void MoveStar(SqList& L, int i)
{
// 留下雪痕
if (L.elems[i].stat == DOWN)
{
if (imgList[L.elems[i].y][L.elems[i].x] == 1)
{
L.elems[i].y += L.elems[i].step;
L.elems[i].x -= 2;
}
}
if (L.elems[i].stat == UP)
{
if (imgList[L.elems[i].y][L.elems[i].x] == 1)
{
L.elems[i].y -= L.elems[i].step;
L.elems[i].x -= 2;
}
}
if (L.elems[i].stat == LEFT)
{
if (imgList[L.elems[i].y][L.elems[i].x] == 1) L.elems[i].x -= L.elems[i].step;
}
if (L.elems[i].stat == RIGHT)
{
if (imgList[L.elems[i].y][L.elems[i].x] == 1) L.elems[i].x += L.elems[i].step;
}
if (L.elems[i].stat == STOP) return;
// 擦除原來的雪花
setfillcolor(BLACK);
solidcircle(L.elems[i].x, L.elems[i].y, L.elems[i].radius);
if (L.elems[i].stat == DOWN)
{
L.elems[i].y += L.elems[i].step;
L.elems[i].x -= 2;
if (L.elems[i].x < 0) L.elems[i].x = SCREEN_WIDTH;
if (L.elems[i].y > SCREEN_HEIGHT) L.elems[i].y = 0;
//if(L.elems[i].y>SCREEN_HEIGHT) listDelete(L, i);// 這段代碼可以讓飄出屏幕外的雪花消亡
}
else if (L.elems[i].stat == UP)
{
L.elems[i].y -= L.elems[i].step;
L.elems[i].x -= 2;
if (L.elems[i].x < 0) L.elems[i].x = SCREEN_WIDTH;
if (L.elems[i].y < 0) L.elems[i].y = SCREEN_HEIGHT;
//if(L.elems[i].y<0) listDelete(L, i);
}
else if (L.elems[i].stat == LEFT)
{
L.elems[i].x -= L.elems[i].step;
if (L.elems[i].x > 0) L.elems[i].x = SCREEN_WIDTH;
//if(L.elems[i].x<0) listDelete(L, i);
}
else if (L.elems[i].stat == RIGHT)
{
L.elems[i].x += L.elems[i].step;
if (L.elems[i].x > SCREEN_HEIGHT) L.elems[i].x = 0;
//if(L.elems[i].x>SCREEN_WIDTH) listDelete(L, i);
}
setfillcolor(L.elems[i].color);
solidcircle(L.elems[i].x, L.elems[i].y, L.elems[i].radius);
}
/************************************
* 功能:初始化雪花
* 輸入?yún)?shù):
* i - 雪花在全局數(shù)組中的下標
* 返回值:無
************************************/
void initStar(struct STAR& _star)
{
int rgb = 0;
//rand() 得到隨機數(shù)范圍 0 - 32767 RAND_MAX
_star.x = rand() % SCREEN_WIDTH;// x 范圍 0 - SCREEN_WIDTH
_star.y = rand() % SCREEN_HEIGHT;// y 范圍 0 - SCREEN_HEIGHT
//_star.stat = STATUS(rand() % 6);// 雪花狀態(tài):隨機
_star.stat = DOWN;// 雪花狀態(tài):向下
_star.radius = 1 + rand() % MAX_RADIUS; // 半徑控制 1 - MAX_RADIUS
_star.step = rand() % MAX_STEP + 1;// 步長 1 - MAX_STEP
rgb = 255 * _star.step / MAX_STEP;// RGB:0 - 255
_star.color = RGB(rgb, rgb, rgb);
}
int main()
{
bool quit = false;
struct STAR star;
SqList starList;
// 初始化屏幕
initgraph(SCREEN_WIDTH, SCREEN_HEIGHT);
// 初始化圖片
IMAGE img;
loadimage(&img, IMGNAME);
SetWorkingImage(&img);// 設(shè)置 img為繪制設(shè)備
COLORREF color;// 記錄像素顏色
BYTE r, b, g;// 記錄像素RGB
for (int y = 0; y < SCREEN_HEIGHT; y++)
{
for (int x = 0; x < SCREEN_WIDTH; x++)
{
color = getpixel(x, y);// 獲取像素顏色
r = GetRValue(color);
b = GetBValue(color);
g = GetGValue(color);
if (r < 200 && b < 200 && g < 200)
{// 判斷需留下“雪痕”的數(shù)組位置
imgList[y][x] = 1;
}
}
}
SetWorkingImage();// 設(shè)置回默認繪制設(shè)備
cleardevice();
// 初始化保存雪花狀態(tài)的順序表
initList(starList);
for (int i = 0; i < MAX_STAR; i++)
{
initStar(star);
listAppend(starList, star);
}
for (int i = 0; i < starList.length; i++)
{
setfillcolor(starList.elems[i].color);
solidcircle(starList.elems[i].x, starList.elems[i].y,
starList.elems[i].radius);
}
while (quit == false)
{
for (int i = 0; i < starList.length; i++)
{
MoveStar(starList, i);
}
if (starList.length == 0)
{// 若設(shè)置雪花離開屏幕后消亡,則會觸發(fā)此退出
quit = true;
}
Sleep(50);
}
system("pause");
closegraph();
return 0;
}
點贊(1)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習題和答疑,點擊了解:

一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程

手把手講解近五年真題的藍橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運行等待時間)