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