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

一、項目介紹

這是一個用C語言和easyX實現(xiàn)的刮刮樂小游戲,用鼠標左鍵可以刮開刮卡層。

刮卡操作通過掩碼圖實現(xiàn),一張隱藏的待刮開背景圖,一張掩碼圖。

快試試你能中大獎嗎?

編譯環(huán)境:visual c++ 6.0

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

二、運行截圖

刮刮樂

刮刮樂中獎

三、代碼思路

1.引入easyx中頭文件

#include <graphics.h>

2.宏定義

const int offsetx = 170;// 刮獎區(qū)的偏移 x 坐標
const int offsety = 260;// 刮獎區(qū)的偏移 y 坐標
IMAGE imgContent(300, 100);// 刮開后的內(nèi)容
IMAGE imgMask(300, 100);// 已刮部分的掩碼層

3.繪制刮刮卡

void DrawCard()
{
// 白色背景
setbkcolor(0xf0f0f0);
cleardevice();
// 設(shè)置刮刮卡填充單元
IMAGE unit(32, 32);
SetWorkingImage(&unit);// 設(shè)置繪圖設(shè)備為 unit 對象
setbkcolor(0x1a3bf0);// 設(shè)置背景色
cleardevice();
settextstyle(20, 0, _T("Webdings"), 0, 0, 400, false, false, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH);// 設(shè)置圖標字體
settextcolor(0x152fe5);
outtextxy(0, 16, 0x59);// 輸出兩個心
outtextxy(16, 0, 0x59);
settextcolor(0x284ff5);
outtextxy(0, 0, 0x73);// 輸出兩個問號
outtextxy(16, 16, 0x73);
SetWorkingImage();
// 用 IMAGE 對象填充矩形區(qū)域
setfillstyle(BS_DIBPATTERN, NULL, &unit);// 設(shè)置填充模式
solidrectangle(150, 30, 490, 450);// 畫填充矩形
TCHAR s[] = _T("刮刮樂");
settextstyle(80, 0, _T("黑體"), 0, 0, 400, false, false, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH);
setbkmode(TRANSPARENT);
settextcolor(0x034089);
outtextxy(offsetx + (300 - textwidth(s)) / 2 + 5, 105, s);
settextcolor(0x10c2fe);
outtextxy(offsetx + (300 - textwidth(s)) / 2, 100, s);
// 設(shè)置覆蓋層填充單元
IMAGE unit2(80, 50);
SetWorkingImage(&unit2);// 設(shè)置繪圖設(shè)備為 unit 對象
setbkcolor(LIGHTGRAY);
cleardevice();
settextstyle(15, 0, _T("黑體"), 150, 150, 400, false, false, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH);
settextcolor(0x606060);
outtextxy(10, 20, _T("刮獎區(qū)"));
SetWorkingImage();
// 用 IMAGE 對象填充矩形區(qū)域
setfillstyle(BS_DIBPATTERN, NULL, &unit2);// 設(shè)置填充模式
solidrectangle(offsetx, offsety, offsetx + 300, offsety + 100);// 畫填充矩形
}
// 初始化刮獎區(qū)內(nèi)容
void InitContent()
{
// 繪制刮獎區(qū)內(nèi)容
SetWorkingImage(&imgContent);
setbkcolor(0x05d5ff);
cleardevice();
settextcolor(0x0024b8);
TCHAR s1[] = _T("刷藍橋杯真題");
TCHAR s2[] = _T("用Dotcpp!");
settextstyle(30, 0, _T("楷體"), 0, 0, 900, false, false, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH);
outtextxy((300 - textwidth(s1)) / 2, 10, s1);
outtextxy((300 - textwidth(s2)) / 2, 50, s2);
// 繪制刮卡的掩碼圖
SetWorkingImage(&imgMask);
setbkcolor(BLACK);
cleardevice();
setlinestyle(PS_SOLID, 10);// 設(shè)置刮卡操作的粗細
SetWorkingImage();
}
// 實現(xiàn)刮卡操作
void Scrape(int x1, int y1, int x2, int y2)
{
SetWorkingImage(&imgMask);
line(x1, y1, x2, y2);
}
// 顯示刮卡效果
void Show()
{
IMAGE tmp = imgContent;
SetWorkingImage(&tmp);
putimage(0, 0, &imgMask, SRCAND);// 將背景圖中未刮開的區(qū)域置為黑色
SetWorkingImage();
putimage(offsetx, offsety, &imgMask, 0x00220326);// 將覆蓋層中已刮開的區(qū)域置為黑色
putimage(offsetx, offsety, &tmp, SRCPAINT);// 將背景圖合并到覆蓋層中
}

4.主函數(shù)

int main()
{
initgraph(640, 480);// 初始化圖形窗口
DrawCard();// 繪制刮刮樂卡片
InitContent();// 初始化刮獎區(qū)內(nèi)容
// 獲取鼠標消息,實現(xiàn)刮卡操作
ExMessage msg;
int x, y, oldx, oldy;
bool scrape = false;
while(true)
{
msg = getmessage(EM_MOUSE);
switch(msg.message)
{
case WM_LBUTTONDOWN:
scrape = true;
x = oldx = msg.x - offsetx;
y = oldy = msg.y - offsety;
Scrape(oldx, oldy, x, y);
break;
case WM_LBUTTONUP:
scrape = false;
break;
case WM_MOUSEMOVE:
if (scrape)
{
oldx = x;
oldy = y;
x = msg.x - offsetx;
y = msg.y - offsety;
Scrape(oldx, oldy, x, y);
}
break;
}
// 顯示當前結(jié)果
Show();
}
return 0;
}

完成

四、完整源碼

#include <graphics.h>
const int offsetx = 170;// 刮獎區(qū)的偏移 x 坐標
const int offsety = 260;// 刮獎區(qū)的偏移 y 坐標
IMAGE imgContent(300, 100);// 刮開后的內(nèi)容
IMAGE imgMask(300, 100);// 已刮部分的掩碼層
// 繪制刮刮卡
void DrawCard()
{
// 白色背景
setbkcolor(0xf0f0f0);
cleardevice();
// 設(shè)置刮刮卡填充單元
IMAGE unit(32, 32);
SetWorkingImage(&unit);// 設(shè)置繪圖設(shè)備為 unit 對象
setbkcolor(0x1a3bf0);// 設(shè)置背景色
cleardevice();
settextstyle(20, 0, _T("Webdings"), 0, 0, 400, false, false, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH);// 設(shè)置圖標字體
settextcolor(0x152fe5);
outtextxy(0, 16, 0x59);// 輸出兩個心
outtextxy(16, 0, 0x59);
settextcolor(0x284ff5);
outtextxy(0, 0, 0x73);// 輸出兩個問號
outtextxy(16, 16, 0x73);
SetWorkingImage();
// 用 IMAGE 對象填充矩形區(qū)域
setfillstyle(BS_DIBPATTERN, NULL, &unit);// 設(shè)置填充模式
solidrectangle(150, 30, 490, 450);// 畫填充矩形
TCHAR s[] = _T("刮刮樂");
settextstyle(80, 0, _T("黑體"), 0, 0, 400, false, false, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH);
setbkmode(TRANSPARENT);
settextcolor(0x034089);
outtextxy(offsetx + (300 - textwidth(s)) / 2 + 5, 105, s);
settextcolor(0x10c2fe);
outtextxy(offsetx + (300 - textwidth(s)) / 2, 100, s);
// 設(shè)置覆蓋層填充單元
IMAGE unit2(80, 50);
SetWorkingImage(&unit2);// 設(shè)置繪圖設(shè)備為 unit 對象
setbkcolor(LIGHTGRAY);
cleardevice();
settextstyle(15, 0, _T("黑體"), 150, 150, 400, false, false, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH);
settextcolor(0x606060);
outtextxy(10, 20, _T("刮獎區(qū)"));
SetWorkingImage();
// 用 IMAGE 對象填充矩形區(qū)域
setfillstyle(BS_DIBPATTERN, NULL, &unit2);// 設(shè)置填充模式
solidrectangle(offsetx, offsety, offsetx + 300, offsety + 100);// 畫填充矩形
}
// 初始化刮獎區(qū)內(nèi)容
void InitContent()
{
// 繪制刮獎區(qū)內(nèi)容
SetWorkingImage(&imgContent);
setbkcolor(0x05d5ff);
cleardevice();
settextcolor(0x0024b8);
TCHAR s1[] = _T("刷藍橋杯真題");
TCHAR s2[] = _T("用Dotcpp!");
settextstyle(30, 0, _T("楷體"), 0, 0, 900, false, false, false, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, PROOF_QUALITY, DEFAULT_PITCH);
outtextxy((300 - textwidth(s1)) / 2, 10, s1);
outtextxy((300 - textwidth(s2)) / 2, 50, s2);
// 繪制刮卡的掩碼圖
SetWorkingImage(&imgMask);
setbkcolor(BLACK);
cleardevice();
setlinestyle(PS_SOLID, 10);// 設(shè)置刮卡操作的粗細
SetWorkingImage();
}
// 實現(xiàn)刮卡操作
void Scrape(int x1, int y1, int x2, int y2)
{
SetWorkingImage(&imgMask);
line(x1, y1, x2, y2);
}
// 顯示刮卡效果
void Show()
{
IMAGE tmp = imgContent;
SetWorkingImage(&tmp);
putimage(0, 0, &imgMask, SRCAND);// 將背景圖中未刮開的區(qū)域置為黑色
SetWorkingImage();
putimage(offsetx, offsety, &imgMask, 0x00220326);// 將覆蓋層中已刮開的區(qū)域置為黑色
putimage(offsetx, offsety, &tmp, SRCPAINT);// 將背景圖合并到覆蓋層中
}
// 主函數(shù)
int main()
{
initgraph(640, 480);// 初始化圖形窗口
DrawCard();// 繪制刮刮樂卡片
InitContent();// 初始化刮獎區(qū)內(nèi)容
// 獲取鼠標消息,實現(xiàn)刮卡操作
ExMessage msg;
int x, y, oldx, oldy;
bool scrape = false;
while(true)
{
msg = getmessage(EM_MOUSE);
switch(msg.message)
{
case WM_LBUTTONDOWN:
scrape = true;
x = oldx = msg.x - offsetx;
y = oldy = msg.y - offsety;
Scrape(oldx, oldy, x, y);
break;
case WM_LBUTTONUP:
scrape = false;
break;
case WM_MOUSEMOVE:
if (scrape)
{
oldx = x;
oldy = y;
x = msg.x - offsetx;
y = msg.y - offsety;
Scrape(oldx, oldy, x, y);
}
break;
}
// 顯示當前結(jié)果
Show();
}
return 0;
}


點贊(0)

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

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

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

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

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

信息學奧賽或C++選手的 必學C++課程

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

手把手講解近五年真題的藍橋杯輔導課程

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