别踩白块C语言版
#include<stdio.h>
#include<stdlib.h>
#include<graphics.h>
#include<easyx.h>
#include<tchar.h>
#include<time.h>
#define N 5
int map[N];
int i,j,n;
void init() //初始化黑色随机方块
{
for (int i = 0; i < N; i++)
{
map[i] = rand() % N;
printf("%d\n", map[i]);
}
}
bool play()
{
MOUSEMSG msg=GetMouseMsg();
switch (msg.uMsg)
{
case WM_LBUTTONDOWN: //按下左键
i = msg.y/120;
j = msg.x/100;
if (map[3] == j && i == 3)
{
for (int a = 3; a > 0; a--)
{
map[a] = map[a - 1];
}
map[0] = rand() % N;
n++;
printf("你点到了黑块!\n");
}
else
{
printf("返回true!\n");
return true;
}
break;
}
return false;
}
void drawBlack()
{
for (int i = 0; i < N; i++)
{
fillrectangle(map[i] * 100, i * 120, (map[i] + 1) * 100, (i + 1) * 120);//绘制有颜色的矩形
}
}
void draw()
{
BeginBatchDraw();
cleardevice(); //清空绘图
setlinecolor(BLACK); //设置线条颜色为红色
setfillcolor(WHITE); //设置填充颜色为白色
for (int i = 0; i < N; i++)
{
for (int j = 0; j < N; j++)
{
fillrectangle(j * 100, i * 120, (j + 1) * 100, (i + 1) * 120);//绘制有颜色的矩形
}
}
setfillcolor(BLACK);//设置填充颜色为黑色
drawBlack();
EndBatchDraw();
}
int main()
{
initgraph(N * 100, 4 * 120);
srand((unsigned)time(NULL)); //随机种子
init();
while (1)
{
draw();
if (play())
{
TCHAR str[100]; //TCHAR==2个字节
wsprintf(str, _T("总共消除了%d个黑块!"), n);
if(MessageBoxW(GetHWnd(), str, _T("游戏结束,是否再来一局"),MB_YESNO==IDYES))
{
init();
draw();
n = 0;
continue;
}
else
{
exit(0);
}
}
}
system("pause");
return 0;
}
##效果图