EasyX图形库实现的扫雷

       两年前写的扫雷、也算完成了吧!同学说要用这个做毕业设计……刚想起来发上来!代码很丑陋。本来要加入可以选择难度的菜单,但是#define这个东西真是气人、也怪我C没学好。搞得我加入开始画面的心情也没有了!计时器也没有。另外还有一点小Bug、待修复。代码也加了点注释、主要是我发现以前写的东西现在我自己都看不懂了。

EasyX图形库实现的扫雷_第1张图片

      完整的工作间下载地址:http://download.csdn.net/detail/weizi4332/6814219


      代码如下:


============================================================================


//
//      本程序使用了EasyX图形库2010惊蛰版           //
//
//扫雷的玩法是在一个9*9(初级),16*16(中级),        //
//16*30(高级),或自定义大小的方块矩阵中随机布置一   //
//定量的地雷(初级为10个,中级为40个,高级为99个)。  //
//由玩家逐个翻开方块,以找出所有地雷为最终游戏目标。//
//如果玩家翻开的方块有地雷,则游戏结束。            //
//

#include "stdio.h"
#include "graphics.h"
#include "conio.h"
#include "time.h"

#define	PIXEL	20	//设置每格的边长
#define	GRADE_ROW	16	//行数
#define GRADE_COL	16	//列数
#define	MINE_NUM	40	//地雷数量

//每个格子的数据

typedef struct
{
	int		mine_num;	//周围地雷数量
	bool	has_mine;	//true表示有雷
	bool	checked;	//true表示已挖掘
	bool	flag;		//true表示已标记
}CHECK;

//随机产生地图

void CreatMap(CHECK map[GRADE_ROW][GRADE_COL])
{
	srand(time(0));
	
	//初始化地图、并将0视为无雷
	for(int i=0;i=0	&&	(j+J)>=0	&&	(i+I)=0	&&	(y+J)>=0	&&	(x+I)=1	&&	map[x+I][y+J].mine_num<=8	&&	map[x+I][y+J].checked==false	&&	map[x+I][y+J].flag==false)
				{
					putimage((x+I)*PIXEL,(y+J)*PIXEL,&none);
					map[x+I][y+J].checked=true;

					char c=char(map[x+I][y+J].mine_num + 48);	//int转换为char
					setcolor(0x0000ee);
					setbkmode(TRANSPARENT);			//背景设为透明
					RECT r = {(x+I)*PIXEL, (y+J)*PIXEL, (x+I+1)*PIXEL,(y+J+1)*PIXEL};
					drawtext(c, &r, DT_CENTER | DT_VCENTER | DT_SINGLELINE);						
					//outtextxy(((m.x/PIXEL)*PIXEL),((m.y/PIXEL)*PIXEL),c);
					map[x+I][y+J].checked=true;
				}
			}
		}
}

void GameOver(CHECK map[GRADE_ROW][GRADE_COL])
{
	//加载图像
	
	IMAGE img,mine,none,flag,menu;
	//loadimage(&img,"img.bmp");
	//loadimage(&mine,"mine.bmp");
	//loadimage(&none,"none.bmp");
	//loadimage(&flag,"flag.bmp");
	//loadimage(&menu,"menu.bmp");	
	loadimage(&img,"IMAGE","img");
	loadimage(&mine,"IMAGE","mine");
	loadimage(&none,"IMAGE","none");
	loadimage(&flag,"IMAGE","flag");
	loadimage(&menu,"IMAGE","menu");
	
	for(int i=0;i


你可能感兴趣的:(C)