序
突然喜歡驚鴻一瞥這個詞,一見鐘情太膚淺日久生情太蒼白,別人眉來眼去,我只偷偷看你一眼,
嗨!這里是狐貍~
新的一周又開始了,時間過得還真快,不知道給大家分享點啥了,想發偏演算法之類怕大家都聽不懂,想發知識類的又怕大家感覺沒意思,想來想去還是給大家分享些專案吧,但分享些什么專案自己又很糾結,這里就需要大家的智慧了,大家想看什么都可以評論來告訴我,每條評論我都會去看,我會用心去肝你們想看的專案的!!!
好了,進入正題,今天呢給大家分享一個簡單的小游戲——《別踩白塊兒》,不知道大家有沒有玩過,曾經也是風靡一時,其實這個游戲制作起來非常的簡單,接下來就讓我來告訴大家怎么去簡單的實作這個游戲專案,(當然啦,我做的仍是最low版本,大家可以進行再創造,相信你們比我強),

專案原始碼
頭檔案
#include<stdio.h>
#include<graphics.h> //easyx圖形庫 需要安裝
#include<time.h>
#include<mmsystem.h> //頭檔案:多媒體設備介面
#pragma comment(lib,"winmm.lib") //庫檔案
#define INTERVAL 100 //最前面的間隔
黑塊表示函式
int score;
//如何表示黑快?
int flag[4];
void initFlag()
{
for (int i = 0; i < 4; i++)
{
flag[i] = rand() % 4; //[0-4)
//printf("%d ", flag[i]);
}
}
繪制函式
void drawMap()
{
settextstyle(25, 0, "黑體");
settextcolor(RED);
//輸出文字游戲結束
outtextxy(150, 30, "別踩白塊兒");
char str[30] = { 0 };
sprintf_s(str, "score:%d", score);
outtextxy(280, 20, str);
//設定線條樣式
setlinestyle(PS_SOLID, 2);
setlinecolor(RGB(59, 59, 59));
for (int i = 0; i < 5; i++)
{
line(0, i * 150 + INTERVAL, 400, i * 150 + INTERVAL);
line(i * 100, INTERVAL, i * 100, 700);
}
//繪制黑快
setfillcolor(BLACK);
for (int i = 0; i < 4; i++)
{
int x = flag[i] * 100;
int y = i * 150 + INTERVAL;
fillrectangle(x, y, x + 100, y + 150);
}
}
滑鼠控制函式
bool mouseEvent()
{
//獲取滑鼠訊息
MOUSEMSG msg = GetMouseMsg();
if (msg.uMsg == WM_LBUTTONDOWN) //左鍵按下
{
//獲取最下面的一個黑快的坐標(左上角)
int x = flag[3] * 100;
int y = 3 * 150 + INTERVAL;
//判斷滑鼠是否點擊的最下面的黑快
if (msg.x > x && msg.x<x + 100 && msg.y>y && msg.y < y + 150)
{
cleardevice();
//整體移動,陣列元素后移
for (int i = 3; i >0; i--)
{
flag[i] = flag[i - 1];
}
//把第一個黑快重新生成
flag[0] = rand() % 4;
score += 10;
}
else
{
return false;
}
}
return true;
}
//鍵盤按下玩游戲
bool keyMouse()
{
return false;
}
游戲結束函式
void gameOver()
{
settextstyle(25, 0, "黑體");
settextcolor(RED);
//輸出文字游戲結束
outtextxy(150, 30, "Game Over!");
MessageBox(GetHWnd(), "Game Over!", "low B", MB_OK);
}
主函式
int main()
{
//播放BGM
mciSendString("open 野蜂飛舞.mp3 alias BGM", NULL, 0, NULL);
mciSendString("play BGM", NULL, 0, NULL);
//創建圖形視窗 initgraph(int width, int height, int flag = NULL); // 初始化圖形環境
initgraph(400, 700/*,EW_SHOWCONSOLE*/); //flag 標志,是否顯示控制臺視窗,或者關閉按鈕
//設定背景顏色
setbkcolor(WHITE);
cleardevice();
//設定亂數種子
srand((unsigned)time(NULL));
initFlag();
while (1)
{
drawMap();
if (!mouseEvent())
break;
}
gameOver();
getchar();
closegraph();
return 0;
}
總結
這個專案可以說是非常簡單了,不需要任何的素材都可以運行,只需一個easyx圖形庫,大家可以直接復制代碼去運行一下試試,應該是沒問題的,對了,大家之前有問過很多關于easyx圖形庫的事情,因為有很多編譯器是不支持這個圖形庫的,這里還是建議大家去用VS實作這個專案,當然了,關于這個專案的優化就要靠大家的智慧了,加音樂加界面加背景啥的都是可以的,自己可以去網上找素材,或許直接進群里領取我們準備好的素材也是可以的,
好了,大家還想看什么一定要在評論區告訴我,后續我還會發布更多的專案源或者學習資料,希望大家可以持續關注,有什么問題可以回帖留言,想要C/C++學習資料以及其他專案的原始碼的可以加群【1083227756】了解,想要對程式員的未來發展有興趣的可以關注微信公眾號:【狐貍的編碼時光】,希望和大家一起學習進步!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/375049.html
標籤:其他
上一篇:【藍橋】跳躍
下一篇:Unity基礎
