消消乐游戏实现
1 前置知识
1.1 开发环境的准备
本次开发是一个消消乐的小游戏,使用的开发环境是Visual Studio 2022,且环境要安装easyx图形库。一般easyx图形库在编译器中未安装,因此需要下载该库函数然后进行手动放在C语言的库函数中。如果自己的VS 2022不能直接使用,可以按照一下方式进行安装,具体操作如下,首先下载好easyx库(是一个.exe的文件),右键将其解压,解压之后如图1.1所示,然后库函数中的头文件和lib文件导入到VS2022路径下相应include文件夹和lib文件夹中。如图1.2。
2 开发实现
2.1游戏的全局变量以及头文件的导入
#include<stdio.h>
#include<graphics.h> // easyx图形库的头文件
#include<mmsystem.h>
#include<time.h>
#include<math.h>
#pragma comment(lib,"winmm.lib")
#define WIN_WIDHT 485
#define WIN_HEIGHT 917
#define ROWS 8
#define COLS 8
#define BLOCK_TYPE_COUNT 7
IMAGE imgBg;//表示背景图片
IMAGE imgBloccks[BLOCK_TYPE_COUNT];//图片数组
bool isMoving;
bool isSwap;
//定义一个结构体类型,表示方块
struct block {
int type;//表示方块类型,0:表示空白
int x, y;//坐标
int row, col;//行,列
int match;//标志是否满足消除的条件
};
//多两行两列易于判断边界
struct block map[ROWS+2][COLS+2];
//边界值
const int off_x = 17;
const int off_y = 274;
const int block_size = 52;
int click;//单击次数,当单击次数是两次的时候就会根据一定条件交换
int posX1, posY1;
int posX2, posY2;
2.2游戏的窗口初始化
void init() {
// 创建游戏窗口
initgraph(WIN_WIDHT,WIN_HEIGHT);
//背景图片
loadimage(&imgBg, "./res/bg.png");
//随机种子
srand(time(NULL));
// 初始化数组
for (int i = 1; i <= ROWS; i++) {
for (int j = 1; j <= COLS; j++) {
map[i][j].type = 1 + rand()%7;
map[i][j].row = i;
map[i][j].col = j;
map[i][j].x = off_x + (j - 1) * (block_size + 5);
map[<