C语言别踩白块附源码
复制即可使用
#define _CRT_SECURE_NO_WARNINGS//一定要放在第一行
#include<stdio.h>//引用输入输出头文件,每一次都需要引用这个文件
#include<math.h>
#include<string.h>
#include<ctype.h>
#include<stdlib.h>
#include<iostream>
#include <graphics.h> // 引用图形库头文件
#include <conio.h>
#include<time.h>
#define N 5
int Map[N];//定义一个数组存储黑块的位置.有5列
int MapX, MapY,Score=0;//随机产生黑块的坐标
void InitBlack()
{//只有四行for (int i = 0;i < N - 1;i++){Map[i] = rand() % N;//0-4printf("%d\n", Map[i]);}
}
//根据随机存储在数组中的数据产生黑块
void DrawBlack()
{for (int i = 0;i < N;i++){fillrectangle(Map[i] * 100, i * 120, Map[i] * 100 + 100, i * 120 + 120);}}
void Draw()
{//优化BeginBatchDraw();cleardevice();//清屏//四行五列个格子,格子宽度100,高度120//设置线条颜色setlinecolor(BLACK);//边框颜色setfillcolor(WHITE);//把填充色设置成白色for (int i = 0;i < 4;i++){for (int j = 0;j < 5;j++)//0-4{fillrectangle(j*100, i*120, j*100+100,i*120+120);//默认白色//绘制一个填充的矩形}}setfillcolor(BLACK);DrawBlack();EndBatchDraw();
}
bool Play()
{MOUSEMSG msg;//定义变量,存储鼠标消息msg = GetMouseMsg();//捕捉鼠标的消息switch (msg.uMsg){case WM_LBUTTONDOWN://鼠标左键按下//根据鼠标点击的坐标,计算出对应的下标MapY = msg.y / 120;//120是白块或者黑块的高度MapX = msg.x / 100;//100是白块或者黑块的宽度//Map[3]的值存储的是黑格子的列号 行号3if (Map[3] == MapX && MapY == 3){for (int i = 3;i > 0;i--){Map[i] = Map[i - 1];}Map[0] = rand() % N;//随机产生一个新的黑格子Score += 10;printf("你点击到了黑块!\n");}else {printf("未点击到黑块!\n");return true;}break;}return false;
}
int main()
{srand((unsigned)time(NULL));//通过时间做随机数的种子initgraph(500, 480,SHOWCONSOLE); //宽500px,高480px// 创建绘图窗口,大小为 500x480 像素Draw();InitBlack();//初始化格子的位置//绘制黑色方块setfillcolor(BLACK);DrawBlack();//放在绘制白色方块代码之后while (1){Draw();if (Play()){char str[128];sprintf(str, "总计消除格子:%d个,总计得分:%d", Score / 10, Score);MessageBox(GetHWnd(),str,"Game Over",MB_OK);exit(0);//结束程序}}//卡屏//getchar()也行_getch(); // 按任意键继续closegraph(); // 关闭绘图窗口return 0;
}