2016-2022 All Rights Reserved.平安財經網.復制必究 聯(lián)系QQ280 715 8082 備案號:閩ICP備19027007號-6
本站除標明“本站原創(chuàng)”外所有信息均轉載自互聯(lián)網 版權歸原作者所有。
大家好,小科來為大家解答以上問題。如何用C語言實現(xiàn)別踩白塊游戲這個很多人還不知道,現(xiàn)在讓我們一起來看看吧!
1、本文主要詳細介紹了C語言—— 《別踩白塊游戲》的實現(xiàn)。本文的示例代碼非常詳細,具有一定的參考價值。感興趣的朋友可以參考一下!
2、游戲介紹:
3、《別踩白塊兒 Don't Tap The White Tile》,這是這個游戲的規(guī)則之一。我們只需要繼續(xù)踩著黑色方塊前進。簡單嗎?誰都能打,但不是每個人都能打得很好。哦,你呢?快來挑戰(zhàn)看看吧!經典模式,以最快速度到達目的地。街機模式,可以獲得盡可能多的積分,沒有任何限制,也是最具挑戰(zhàn)性的模式。限時模式,看你30秒能走多少步。極速模式,沒有最高限速的街機模式,挑戰(zhàn)你的極限接力模式,在規(guī)定時間內完成50個街區(qū),然后有更多的時間再完成50個街區(qū)!
4、好了,那么,今天就用我們所學的C語言來制作這個游戲吧!本項目僅實現(xiàn)街機模式,其他模式可自行探索!
5、本項目編譯環(huán)境:VS 2019/VS 2013;
6、插件:圖片庫插件easyX,涉及圖片素材,可自行百度查找或文末收藏;
源代碼示例:
#include
#include
#include
#include
#include
//多媒體設備接口頭文件 #pragma comment(lib,"winmm.lib") //多媒體設備接口庫文件
#define mian main
#define WIDTH 400
#define HEIGHT 700
#define INTERVAL 100
//黑塊怎么存儲?
int map[4];
int score; //分數
void gameInit()
{
//播放音樂,向多媒體設備接口發(fā)送指令字符串
mciSendString(L"open ./野蜂飛舞.mp3 alias BGM", NULL, NULL, NULL); //media device interface send 發(fā)送 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;
}
//用鼠標點擊黑塊,實現(xiàn)所有快,往下移動
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,是否繼續(xù)?", L"hit", MB_OKCANCEL);
if (isok == IDOK)
{
printf("繼續(xù)游戲~");
}
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;
}
本文到此結束,希望對大家有所幫助。
2016-2022 All Rights Reserved.平安財經網.復制必究 聯(lián)系QQ280 715 8082 備案號:閩ICP備19027007號-6
本站除標明“本站原創(chuàng)”外所有信息均轉載自互聯(lián)網 版權歸原作者所有。