• 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 的倍数。

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

  • 相关阅读:
    HDU 2073 无限的路
    HDU 2080 夹角有多大II
    if
    HDU 2094 产生冠军
    HDU 2076 夹角有多大(题目已修改,注意读题)
    HDU 2086 A1 = ?
    HDU 2069 Coin Change
    HDU 2095 find your present (2)
    android常用开发工具的用法
    android安装前期遇到的问题
  • 原文地址:https://www.cnblogs.com/acgpiano/p/3980053.html
Copyright © 2020-2023  润新知