C语言新手写扫雷攻略1

工欲善其事,必先利其器,首先要准备好开发环境,既然是C语言,那就不是WinAPI的扫雷,就是纯的C语言开发,但是以前的C都是TC开发的,现在用肯定是过时很久了,但是也是有解决办法的,某些大神开发出EasyX这个库,基本上还原了TC的函数,就可以在各种IDE下使用了,下面是下载地址和帮助,帮助里面有所有函数的调用方法

http://www.easyx.cn/

下载解压好后将include 和 lib 文件夹复制到你的VC对应安装的文件夹里覆盖就可以使用了,从vc++6.0到vs2013都可以使用

我用的是vs2013,是c11标准,可能和vc++6.0和以往版本的函数不太相同

下面就开始开发,最简单的思路就是绘制图形界面,运行游戏,所以可以直接开始

#include<stdio.h>
#include<graphics.h>//图形相关函数
#include <easyx.h>//TC的很多函数包括鼠标操作
int main(void)
{
	initgraph(200, 230, SHOWCONSOLE);//初始化游戏界面和大小
	Game();//运行游戏
	closegraph();//关闭图形界面
}

 

可以先把Game()注释掉,用来测试你的EasyX是否安装好,如果安装好的话会绘制出200*230的窗口

接下来是需要用到的变量声明和用到的函数,自己开发可以边开发边写,为了方便就先列出,以后直接写功能

struct
{
	int num;//格子当前状态,1表示有雷,0表示无雷或已经显示数字
	int roundnum;//统计格子周围的雷数
	int flag;//右键按下显示红旗标志,0表示没有,1表示有
}Mine[10][10];
int PLAY = 0;//是否第一次玩游戏的标志
int FLAG = 1;//游戏失败后是否重新开始的标志
int AGAIN = 0;//游戏中途重新开始的标志
int MouseX, MouseY;//鼠标的x,y坐标
int mineNUM;//统计处理过的格子数
TCHAR randmineNUM[100];//显示数字的字符串
MOUSEMSG m;//鼠标结构变量,接受鼠标消息


void Game(void);//游戏主程序
void GameBegin(void);//游戏开始
void DrawEmpty(int,int,int,int);//初始化空格子界面的函数
void DrawSmile(void);//画笑脸的函数
void DrawRedFlag(int, int);//右键画红旗的函数
void GameOver(void);//游戏结束
void GameWin(void);//游戏胜利
void GamePlay(void);//游戏执行过程

 

接下来说一下鼠标处理事件,以前TC是DOS模式下开发,操作相当于谢鼠标的驱动,需要查各种中断,而EasyX现在鼠标消息处理很方便,并且不需要像Win32的消息循环机制,方便了很多

以下是鼠标函数的官方文档

MOUSEMSG

这个结构体用于保存鼠标消息,定义如下:

struct MOUSEMSG
{
    UINT uMsg;      // 当前鼠标消息
    bool mkCtrl;    // Ctrl 键是否按下
    bool mkShift;   // Shift 键是否按下
    bool mkLButton; // 鼠标左键是否按下
    bool mkMButton; // 鼠标中键是否按下
    bool mkRButton; // 鼠标右键是否按下
    int x;          // 当前鼠标 x 坐标(物理坐标)
    int y;          // 当前鼠标 y 坐标(物理坐标)
    int wheel;      // 鼠标滚轮滚动值
};

uMsg:

指定鼠标消息类型,可为以下值:

WM_MOUSEMOVE
鼠标移动消息。

WM_MOUSEWHEEL
鼠标滚轮拨动消息。

WM_LBUTTONDOWN
左键按下消息。

WM_LBUTTONUP
左键弹起消息。

WM_LBUTTONDBLCLK
左键双击消息。

WM_MBUTTONDOWN
中键按下消息。

WM_MBUTTONUP
中键弹起消息。

WM_MBUTTONDBLCLK
中键双击消息。

WM_RBUTTONDOWN
右键按下消息。

WM_RBUTTONUP
右键弹起消息。

WM_RBUTTONDBLCLK
右键双击消息。

mkCtrl

Ctrl 键是否按下

mkShift

Shift 键是否按下

mkLButton

鼠标左键是否按下

mkMButton

鼠标中键是否按下

mkRButton

鼠标右键是否按下

x

当前鼠标 x 坐标(物理坐标)

y

当前鼠标 y 坐标(物理坐标)

wheel

鼠标滚轮滚动值,为 120 的倍数。

这些是鼠标的操作,功能十分强大!

posted @ 2014-09-18 20:59  Mint tears  阅读(1126)  评论(0编辑  收藏  举报