2016-2022 All Rights Reserved.平安財(cái)經(jīng)網(wǎng).復(fù)制必究 聯(lián)系QQ280 715 8082 備案號(hào):閩ICP備19027007號(hào)-6
本站除標(biāo)明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。
大家好,小科來為大家解答以上問題。如何用C語言實(shí)現(xiàn)別踩白塊游戲這個(gè)很多人還不知道,現(xiàn)在讓我們一起來看看吧!
1、本文主要詳細(xì)介紹了C語言—— 《別踩白塊游戲》的實(shí)現(xiàn)。本文的示例代碼非常詳細(xì),具有一定的參考價(jià)值。感興趣的朋友可以參考一下!
2、游戲介紹:
3、《別踩白塊兒 Don't Tap The White Tile》,這是這個(gè)游戲的規(guī)則之一。我們只需要繼續(xù)踩著黑色方塊前進(jìn)。簡(jiǎn)單嗎?誰都能打,但不是每個(gè)人都能打得很好。哦,你呢?快來挑戰(zhàn)看看吧!經(jīng)典模式,以最快速度到達(dá)目的地。街機(jī)模式,可以獲得盡可能多的積分,沒有任何限制,也是最具挑戰(zhàn)性的模式。限時(shí)模式,看你30秒能走多少步。極速模式,沒有最高限速的街機(jī)模式,挑戰(zhàn)你的極限接力模式,在規(guī)定時(shí)間內(nèi)完成50個(gè)街區(qū),然后有更多的時(shí)間再完成50個(gè)街區(qū)!
4、好了,那么,今天就用我們所學(xué)的C語言來制作這個(gè)游戲吧!本項(xiàng)目?jī)H實(shí)現(xiàn)街機(jī)模式,其他模式可自行探索!
5、本項(xiàng)目編譯環(huán)境:VS 2019/VS 2013;
6、插件:圖片庫插件easyX,涉及圖片素材,可自行百度查找或文末收藏;
源代碼示例:
#include
#include
#include
#include
#include
//多媒體設(shè)備接口頭文件 #pragma comment(lib,"winmm.lib") //多媒體設(shè)備接口庫文件
#define mian main
#define WIDTH 400
#define HEIGHT 700
#define INTERVAL 100
//黑塊怎么存儲(chǔ)?
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));
//對(duì)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í)顯示控制臺(tái)
initgraph(WIDTH, HEIGHT,EW_SHOWCONSOLE);
//設(shè)置窗口背景顏色
setbkcolor(WHITE);
cleardevice();
gameInit();
while (true)
{
gameDraw();
if (!mouseEvent())
{
break;
}
loop();
}
//游戲結(jié)束處理
gameOver();
getchar();
closegraph();
return 0;
}
本文到此結(jié)束,希望對(duì)大家有所幫助。
2016-2022 All Rights Reserved.平安財(cái)經(jīng)網(wǎng).復(fù)制必究 聯(lián)系QQ280 715 8082 備案號(hào):閩ICP備19027007號(hào)-6
本站除標(biāo)明“本站原創(chuàng)”外所有信息均轉(zhuǎn)載自互聯(lián)網(wǎng) 版權(quán)歸原作者所有。