這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)——《別踩白塊游戲》,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下!
游戲介紹:
《別踩白塊兒 Don't Tap The White Tile》,這就是這個(gè)游戲的一個(gè)規(guī)則,我們只需要不斷踩著黑色方塊前進(jìn)即可,很簡單吧?誰都可以會玩,但并不是誰都能玩得很好噢,你呢?快來挑戰(zhàn)看看吧!經(jīng)典模式,以最快的速度到達(dá)終點(diǎn)。街機(jī)模式,你有能力得多少分就得多少分,沒有任何限制,這也是最具挑戰(zhàn)性的一個(gè)模式。限時(shí)模式,在30秒內(nèi)看你能走幾步。極速模式,沒有最高速限制的街機(jī)模式, 挑戰(zhàn)你的極限接力模式,規(guī)定時(shí)間內(nèi)完成50塊兒,然后會有更多時(shí)間去完成另外的50塊兒!
好了,那么我們今天就用我們所學(xué)的C語言知識來做出這個(gè)游戲吧!本項(xiàng)目僅實(shí)現(xiàn)了街機(jī)模式,其他模式大家可以自行摸索喲!
本項(xiàng)目編譯環(huán)境:VS2019/VS2013;
插件:圖形庫插件easyX,涉及圖片素材可以自行百度找也可以關(guān)注文末領(lǐng)取;
配套講解教程:別踩白塊游戲教程——嗶哩嗶哩
源代碼示例:
//黑塊怎么存儲?
int map[4];
int score; //分?jǐn)?shù)
void gameInit()
{
//播放音樂,向多媒體設(shè)備接口發(fā)送指令字符串
mciSendString(L"open ./野蜂飛舞.mp3 alias BGM", NULL, NULL, NULL); //media device interface send 發(fā)送 string 字符串
mciSendString(L"play BGM", NULL, NULL, NULL);
//設(shè)置隨機(jī)數(shù)種子
srand((unsigned)time(NULL));
//對map進(jìn)行隨機(jī)初始化
for (size_t i = 0; i < 4; i++)
{
map[i] = rand() % 4;
}
}
//游戲界面繪制
void gameDraw()
{
//設(shè)置文字樣式
settextstyle(30, 0, L"楷體");
settextcolor(RED);
outtextxy(150, 30, L"別踩白塊");
//繪制游戲界面
setlinecolor(BLACK);
setlinestyle(PS_SOLID, 2);
for (size_t i = 0; i < 5; i++)
{
line(0, i * 150 + INTERVAL, WIDTH, i * 150 + INTERVAL); //畫橫線
line(i * 100, INTERVAL, i * 100, HEIGHT); //畫豎線
}
//根據(jù)map繪制出黑塊所在的位置
setfillcolor(BLACK);
for (size_t i = 0; i < 4; i++)
{
int x = map[i] * 100;
int y = i * 150 + INTERVAL;
//畫一個(gè)黑色的矩形
fillrectangle(x, y, x + 100, y + 150);
}
//輸出分?jǐn)?shù)
settextstyle(20, 0, L"楷體");
settextcolor(BLACK);
//把int 轉(zhuǎn)成 字符串用什么?
WCHAR str[20] = L"";
wsprintf(str, L"%d", score);
outtextxy(20, 20, str);
}
void move()
{
//清屏
cleardevice();
//移動(dòng)
for (size_t i = 3; i > 0; i--)
{
map[i] = map[i - 1];
}
map[0] = rand() % 4;
}
//用鼠標(biāo)點(diǎn)擊黑塊,實(shí)現(xiàn)所有快,往下移動(dòng)
bool mouseEvent()
{
//獲取鼠標(biāo)消息
MOUSEMSG msg = GetMouseMsg();
if (msg.uMsg == WM_LBUTTONDOWN) //鼠標(biāo)左鍵按下
{
//獲取最下面的黑塊的左上角坐標(biāo)
int x = map[3] * 100;
int y = 3 * 150 + INTERVAL;
if (msg.x >= x && msg.x <= x + 100 && msg.y >= y && msg.y <= y + 150)
{
score += 10;
//move();
}
else
{
return false;
}
}
return true;
}
//街機(jī)模式
void loop()
{
Sleep(500); // 這個(gè)不太行,要自己寫定時(shí)器最好
move();
}
void gameOver()
{
//彈出框
int isok =MessageBox(GetHWnd(), L"you lowser,是否繼續(xù)?", L"hit", MB_OKCANCEL);
if (isok == IDOK)
{
printf("繼續(xù)游戲~ ");
}
else
{
printf("推出游戲~ ");
}
}
int mian()
{
//圖形,正方形,圓形.... 圖片 EW_SHOWCONSOLE同時(shí)顯示控制臺
initgraph(WIDTH, HEIGHT,EW_SHOWCONSOLE);
//設(shè)置窗口背景顏色
setbkcolor(WHITE);
cleardevice();
gameInit();
while (true)
{
gameDraw();
if (!mouseEvent())
{
break;
}
loop();
}
//游戲結(jié)束處理
gameOver();
getchar();
closegraph();
return 0;
}
-
C語言
+關(guān)注
關(guān)注
180文章
7630瀏覽量
140709 -
代碼
+關(guān)注
關(guān)注
30文章
4891瀏覽量
70352
原文標(biāo)題:C語言項(xiàng)目實(shí)戰(zhàn):《別踩白塊游戲》零基礎(chǔ)項(xiàng)目!137 行源代碼示例
文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
單片機(jī)C語言實(shí)例(350+例)
在西門子TIA Portal中使用CFC語言實(shí)現(xiàn)電機(jī)控制的全流程

深入理解C語言:C語言循環(huán)控制

客廳變游戲室?如何用樹莓派實(shí)現(xiàn) Moonlight 游戲流媒體

為什么學(xué)了C語言,卻寫不出像樣的項(xiàng)目?

單片機(jī)C語言編程寶典大全,初學(xué)必備【強(qiáng)推下載!】
限時(shí)免積分下載:增量式與位置式PID算法的C語言實(shí)現(xiàn)分享
解決HarmonyOS應(yīng)用中Image組件白塊問題的有效方案

EE-188:使用C語言在ADSP-219x DSP上實(shí)現(xiàn)中斷驅(qū)動(dòng)系統(tǒng)

基于FPGA實(shí)現(xiàn)圖像直方圖設(shè)計(jì)

評論