码迷,mamicode.com
首页 > 编程语言 > 详细

C语言写扫雷小游戏2

时间:2014-09-14 20:40:37      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:style   color   io   os   ar   for   文件   art   sp   

这是下午写的,这次的修改增加了鼠标的事件,需要的是windows的消息机制,WinAPI函数,以下是新添加的定义

struct
{
	int num;//格子当前状态,1表示有雷,0表示无雷或已经显示数字
	int roundnum;//统计格子周围的雷数
	int flag;//右键按下显示红旗标志,0表示没有,1表示有
}Mine[10][10];

POINT Mouse;//定义鼠标事件
int MouseX, MouseY;//鼠标的x,y坐标
int mineNUM;//统计处理过的格子数
TCHAR randmineNUM[100];//显示数字的字符串

 

Mine[10][10]是10*10的格子,POINT是鼠标结构的别名,可以看定义是x和y的坐标

typedef struct tagPOINT
{
    LONG  x;
    LONG  y;
} POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;

 

接着在Game()中添加判断鼠标位置的语句,用来判断是否重新开始

if (WM_LBUTTONDOWN)//鼠标左键按下事件
{
	GetCursorPos(&Mouse);//获取鼠标当前的坐标,POINT MOUSE定义
	MouseX = Mouse.x;
	MouseY = Mouse.y;
	if (MouseX > 90 && MouseX<110 && MouseY>5 && MouseY < 25)
	{
		FLAG = 1;
		continue;
	}
}
if (_kbhit())//判断有按键退出
{
	break;
}

 

接着在GameBegin()添加关于鼠标的操作,并且随机产生雷数,以下是完整代码

void GameBegin(void)
{
	int i, j;
	cleardevice();
	if (PLAY != 1)
	{
		SetCursorPos(100, 10);//设置鼠标初始位置
		MouseX = 100;
		MouseY = 10;
	}
	PLAY = 1;
	mineNUM = 0;
	setfillstyle(SOLID_FILL);//此处用法和TC不同
	setfillcolor(WHITE);
	bar(0, 0, 200, 230); //设置背景区域
	for (i = 0; i < 10; i++) //绘制每个雷区(小格)
	{
		for (j = 0; j < 10; j++)
		{
			DrawEmpty(i, j, 0, LIGHTGRAY);
		}
	}
	setcolor(GREEN);
	//DrawSMile();
	rand();//产生随机数
	for (i = 0; i < 10; i++)
	{
		for (j = 0; j < 10; j++)
		{
			srand((unsigned)time(NULL));//根据时间给随机数不同的种子数
			Mine[i][j].num = rand() % 8;//随机数产生范围0-7
			
			if (Mine[i][j].num == 1)
			{
				mineNUM++;
			}
			else
			{
				Mine[i][j].num = 2;
			}
			Mine[i][j].flag = 0;
		}
		_stprintf_s(randmineNUM, _T("%d"), mineNUM);//将minrNUM转换成字符串类型
		setcolor(WHITE);
		settextstyle(16, 0, _T("0"));
		outtextxy(2, 2, randmineNUM);
		mineNUM = 100 - mineNUM;
	}
}

 

由于调用了许多WinAPI和其他函数,所以要包含以下头文件

#include<stdio.h>
#include<graphics.h>
#include<windows.h>
#include <easyx.h>
#include<conio.h>  //_kbhit()
#include<stdlib.h> //rand(),srand()
#include<time.h>   //srand((unsigned)time(NULL))

 

OK,today is enough!

C语言写扫雷小游戏2

标签:style   color   io   os   ar   for   文件   art   sp   

原文地址:http://www.cnblogs.com/acgpiano/p/3971533.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!