easyx的安装与基于easyx的C语言扫雷小游戏

easyx的下载:EasyX Graphics Library for C++

点击连接,然后点击下载easyx

然后根据安装指示一路下载就行:

 

点击下一步,会出现你安装的visual studio code 的信息

 

点击安装即可。

显示安装成功就可以开始用easyx的图形库了呢。 

使用easyx只能在cpp环境哦,还要添加几个头文件

#include<easyx.h>
#include<graphics.h>

还有其他的头文件这里就不一一列举了。

下面是用easyx写的一个扫雷小游戏,大家可以复制试玩一下。

记得在项目,属性页里面,把字符集改成多字节字符集。

 

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<easyx.h>
#include<graphics.h>
#include <mmsystem.h>
#define row 10
#define col 10
#define lei 10
IMAGE pt[12];

void tpjz()
{
	int i;
	
	for (i = 0; i < 12; i++)
	{
		char sz[1000];
		sprintf_s(sz,"./image/%d.jpg",i);
		loadimage(&pt[i],sz,35,35);
		putimage(i*35,0,&pt[i]);
	}
	
}
void show(int sz[][col]);
void csh(int map[][col]);
void draw(int map[][col]);
void sbcz(ExMessage*, int[][col]);
void boom(int [][col], int , int );
int pd(int [][col],int ,int );
int main(void)
{
	//数组扫雷地图 10*10
	initgraph(350,350);
	tpjz();
	srand((unsigned)time(NULL));
	int map[row][col] = { 0 };
	csh(map);
	show(map);
	while (1)
	{
		//消息处理
		ExMessage msg;
		int zhi = 0;
		while (peekmessage(&msg, EM_MOUSE))
		{
			switch (msg.message)
			{
			case WM_LBUTTONDOWN:
			case WM_RBUTTONDOWN:
			sbcz(&msg, map);
			//pd(map,msg.y/35,msg.x/35);
			if (pd(map, msg.y / 35, msg.x / 35) == -1)
			{
				zhi =MessageBox(GetHWnd(),"输了吧,不要灰心","我是大帅比",MB_OKCANCEL);
				if (zhi)
				{
					
				}
			}
			else if(pd(map, msg.y / 35, msg.x / 35)==1)
			{

				int zhi = MessageBox(GetHWnd(), "大佬,太强了", "我是大帅比", MB_OKCANCEL);
				if (zhi)
				{
					
				}
			}
			break;
			}
		}
		draw(map);
		if (zhi)
		{
			return 0;
		}
		//Sleep(16);
	}
	//getchar();
	return 0;
}

void show(int sz[][col])
{
	int i, j;
	for (i=0;i<row;i++)
	{
		for (j=0;j<col;j++)
		{
			printf("%2d ",sz[i][j]);
		}
		putchar('\n');
	}
}

void csh(int map[][col])
{
	tpjz();
	int i,j;
	for (i=0;i<lei;)
	{
		int r = rand() % 10;
		int t = rand() % 10;
		if (map[r][t] == 0)
		{
			map[r][t] = -1;
			i++;
		}
		
	}

	for (i = 0; i < row; i++)
	{
		for (j = 0; j < col; j++)
		{
			if (map[i][j] == -1)
			{
				for (int r = i - 1; r <= i + 1; r++)
				{
					for (int t = j - 1; t <= j + 1; t++)
					{
						if ((r>=0&&r<row&&t>=0&&t<col)&&map[r][t] != -1)
						{
							map[r][t]++;
						}
					}
				}
			}
		}
	}

	//加密
	for (int i = 0 ;i<row;i++)
	{
		for (int j = 0;j<col;j++)
		{
			map[i][j] += 20;
		}
	}
}

void draw(int map[][col])
{
	int i, k;
	for (i=0; i < row; i++)
	{
		for (k=0; k < col; k++)
		{
			if (map[i][k] >= 0 && map[i][k] <= 8)
			{
				putimage(k*35,i*35,&pt[map[i][k]]);
			}
			else if(map[i][k]==-1)
			{
				putimage(k * 35, i * 35, &pt[9]);
			}
			else if(map[i][k] >= 19 && map[i][k] <= 28)
			{
				putimage(k * 35, i * 35, &pt[10]);
			}
			else if (map[i][k]>=39)
			{
				putimage(k * 35, i * 35, &pt[11]);
			}
		}
	}
}

void sbcz(ExMessage *msg,int map[row][col])
{
	int c = msg->x/35;
	int r = msg->y/35;
	if (msg->message == WM_LBUTTONDOWN)
	{
		if (map[r][c]>=19&&map[r][c]<=28)
		{
			map[r][c] -= 20;
			boom(map,r,c);
		}
		
	}
	if (msg->message == WM_RBUTTONDOWN)
	{
		//能否标记
		if (map[r][c] >= 19 && map[r][c] <= 28)
		{
			map[r][c] += 20;
		}
		else
		{
			map[r][c] -= 20;
		}
	}
}

void boom(int map[row][col],int xbx,int xby)
{
	if (map[xbx][xby] == 0)
	{
		for (int i = xbx-1; i <= xbx+1; i++)
		{
			for (int j = xby-1; j <= xby+1; j++)
			{
				if (i>=0&&i<row&&j>=0&&j<col&&map[i][j] >= 19&&map[i][j]<=28)
				{
					map[i][j] -= 20;
					boom(map,i,j);
				}
			}
		}
	}
}

int pd(int map[row][col],int x,int y)
{
	if (map[x][y] == -1||map[x][y] == 19)
	{
		return -1;
	}
	int i, j,cnt = 0;
	for (int i = 0; i < row; i++)
	{
		for (int j = 0; j < col; j++)
		{
			if (map[i][j] >=0&& map[i][j]< 8)
			{
				cnt++;
			}
		}
	}
	if (cnt == 90)
	{
		return 1;
	}

	return 0;
}

接下来是成品展示:

 如果大家感兴趣,记得点个赞哦,我会出easyx有关的教程哦

  • 5
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值