c语言实现,图形界面扫雷

博主分享了大一暑假用C语言编写的扫雷游戏代码,尽管现在看不太懂当时的代码,但依然记得当时的编程思路。文章提供了代码供感兴趣的人参考,特别是难点在于点击后出现大片空白区域的实现。代码命名为C++格式,实际使用C语法,并依赖于graphics.h图形库,需要在VC编辑器中额外安装该库。
摘要由CSDN通过智能技术生成

时隔一年多,突然找到了大一暑假用c语言写的扫雷游戏,想起了那个大一的自己,额,15天写了一个扫雷也是蛮拼的,大一留下的东西,然而现在已经看不懂当时的代码代码了。就只剩当时的思路。
写这篇博客,附上代码,有兴趣的朋友可以玩玩,想写扫雷的同学,也可以借鉴下,特别是点击一下,出现大片空白区域,那个地方可以多看看,个人觉得很难,当时把我难得够呛。
代码命名成c++格式,如:1.cpp,主要是为了应用c++的一个图形库,但是其中的语法都是c的语法,
其中用到了一个图形库graphics.h,我用的是vc编辑器,没有这个库,所有需要补一个graphics库,这里下载

这里写图片描述

代码如下:

//////////////////////////
//程序名称:扫雷           //
//作者:      ys           //
//////////////////////////

#include <graphics.h>
#include <conio.h>
#include <time.h>
#include <stdlib.h>
#include <stdio.h>

void draw_circul(int x,int y,int row,int col);
int  init_system();
void draw_mode(int x,int y,int wm_wh,int type);
void draw_framework();
void set_mine(int num);
void draw_min_max_framework(int x1,int y1,int x2,int y2);
void draw_happyface(int type);
void draw_clock_score();
void draw_mine(int row,int col);
void mouse_clear_mine();
void round_mine_num();
int  deal_space(int x, int y);
void deal_situation(int y,int x);
void output_num();
void show_space(int y,int x);
void show_num(int y,int x);

#define FLAG        20
#define win         m_col*m_row
#define mine_num    20                  //雷的数目

int m_maxx,m_maxy;
int m_row,m_col,m_wh;
int x0,y0,num=0;
int **p;

int main(void)
{
    init_system();                      //初始化系统
    if(!init_system())
        exit(0);

    x0=(m_maxx-m_col*(m_wh+1))/2;
    y0=(m_maxy-m_row*(m_wh+1))/2;

    draw_circul(x0,y0,m_row,m_col);     //初始化界面
    draw_framework();                   //框架
    set_mine(mine_num);                     //布雷
    round_mine_num();                   //计算周围雷数
    mouse_clear_mine();                 //鼠标清雷

    getch();
    closegraph();
    return 0;
}
//鼠标清雷
void mouse_clear_mine() 
{
    MOUSEMSG m;
    m=GetMouseMsg();

    int x,y;

    while(1)
    {
        m=GetMouseMsg();
        x=(m.x-x0)/(m_wh+1);
        y=(m.y-y0)/(m_wh+1);

        switch(m.uMsg)
        {
            case WM_LBUTTONDOWN:
            {
                if (x0<m.x && m.x<((m_wh+1)*m_col+x0) && m.y>y0 && m.y<(y0+(m_wh+
  • 42
    点赞
  • 212
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值